91 lines
3.5 KiB
JavaScript
91 lines
3.5 KiB
JavaScript
require('chai').should()
|
|
const {describe, it} = require('mocha')
|
|
const releases = require('..')
|
|
const semver = require('semver')
|
|
const flat = require('flat')
|
|
|
|
describe('electron-releases', () => {
|
|
it('is an array', () => {
|
|
releases.should.be.an('array')
|
|
})
|
|
|
|
it('contains over 270 releases', () => {
|
|
releases.length.should.be.above(270)
|
|
})
|
|
|
|
it('uses snake_case for all properties', () => {
|
|
const keys = Object.keys(flat(releases))
|
|
keys.length.should.be.above(0)
|
|
keys.every(key => key.toLowerCase() === key).should.eq(true)
|
|
})
|
|
|
|
it('sets `tag_name` on every release', () => {
|
|
releases.every(release => {
|
|
return release.tag_name &&
|
|
release.tag_name.length &&
|
|
release.tag_name.startsWith('v') &&
|
|
semver.valid(release.tag_name.replace('v', ''))
|
|
}).should.eq(true)
|
|
})
|
|
|
|
it('sets `version` on every release', () => {
|
|
releases.every(release => semver.valid(release.version)).should.eq(true)
|
|
})
|
|
|
|
it('does NOT include drafts', () => {
|
|
const prereleases = releases.filter(release => release.prerelease)
|
|
prereleases.length.should.be.above(0)
|
|
})
|
|
|
|
it('includes prereleases', () => {
|
|
const prereleases = releases.filter(release => release.prerelease)
|
|
prereleases.length.should.be.above(0)
|
|
})
|
|
|
|
it('includes version data for V8, Chromium, Node.js, etc', () => {
|
|
const releasesWithVersionData = releases.filter(release => release.deps)
|
|
releasesWithVersionData.length.should.be.above(154)
|
|
})
|
|
|
|
it('includes one release with the `beta` npm dist tag', () => {
|
|
const betas = releases.filter(release => release.npm_dist_tag === 'beta')
|
|
betas.length.should.eq(1)
|
|
})
|
|
|
|
it('includes one release with the `latest` npm dist tag', () => {
|
|
const latests = releases.filter(release => release.npm_dist_tag === 'latest')
|
|
latests.length.should.eq(1)
|
|
})
|
|
|
|
it('includes npm_package_name prop to indicate npm publish status', () => {
|
|
releases.find(release => release.version === '1.4.7').npm_package_name.should.eq('electron')
|
|
releases.find(release => release.version === '1.0.0').npm_package_name.should.eq('electron-prebuilt')
|
|
releases.filter(release => release.npm_package_name === 'electron').length.should.be.above(62)
|
|
|
|
// assert exact number because the days of publishing electron-prebuilt are over
|
|
releases.filter(release => release.npm_package_name === 'electron-prebuilt').length.should.eq(96)
|
|
})
|
|
|
|
// for context, see https://electronjs.org/blog/npm-install-electron
|
|
it('sets `electron` as `npm_package_name` for releases >=1.3.1', () => {
|
|
const npmReleasesOfElectron = releases.filter(release => release.npm_package_name === 'electron')
|
|
npmReleasesOfElectron.length.should.be.above(0)
|
|
npmReleasesOfElectron.every(release => semver.gte(release.version, '1.3.1')).should.eq(true)
|
|
})
|
|
|
|
it('sets `electron-prebuilt` as `npm_package_name` for releases <1.3.1', () => {
|
|
const npmReleasesOfElectronPrebuilt = releases.filter(release => release.npm_package_name === 'electron-prebuilt')
|
|
npmReleasesOfElectronPrebuilt.length.should.be.above(0)
|
|
npmReleasesOfElectronPrebuilt.every(release => semver.lt(release.version, '1.3.1')).should.eq(true)
|
|
})
|
|
|
|
it('includes processed changelogs in HTML format')//, () => {
|
|
// })
|
|
|
|
it('includes a total_downloads property for each release', () => {
|
|
const npmReleases = releases.filter(release => release.npm_package_name)
|
|
npmReleases.length.should.be.above(0)
|
|
npmReleases.every(release => release.total_downloads > 0).should.eq(true)
|
|
})
|
|
})
|