Files
shields/services/node/testUtils/test-utils.js
chris48s 13d75e0607 upgrade to prettier 2 (#5051)
* arrowParens: avoid
* remove trailingComma setting
2020-05-05 21:07:43 +01:00

152 lines
3.7 KiB
JavaScript

'use strict'
const fs = require('fs')
const path = require('path')
const moment = require('moment')
const dateFormat = 'YYYY-MM-DD'
const templates = {
packageJsonVersionsTemplate: fs.readFileSync(
path.join(__dirname, `packageJsonVersionsTemplate.json`),
'utf-8'
),
packageJsonTemplate: fs.readFileSync(
path.join(__dirname, `packageJsonTemplate.json`),
'utf-8'
),
}
const getTemplate = template => JSON.parse(templates[template])
const mockPackageData = ({ packageName, engines, scope, tag }) => nock => {
let packageJson
let urlPath
if (scope || tag) {
if (scope) {
urlPath = `/${scope}%2F${packageName}`
} else {
urlPath = `/${packageName}`
}
packageJson = getTemplate('packageJsonVersionsTemplate')
packageJson['dist-tags'][tag || 'latest'] = '0.0.91'
packageJson.versions['0.0.91'].engines.node = engines
} else {
urlPath = `/${packageName}/latest`
packageJson = getTemplate('packageJsonTemplate')
packageJson.engines.node = engines
}
return nock('https://registry.npmjs.org/')
.get(urlPath)
.reply(200, packageJson)
}
const mockCurrentSha = latestVersion => nock => {
const latestSha = `node-v${latestVersion}.12.0-aix-ppc64.tar.gz`
return nock('https://nodejs.org/dist/')
.get(`/latest/SHASUMS256.txt`)
.reply(200, latestSha)
}
const mockVersionsSha = () => nock => {
let scope = nock('https://nodejs.org/dist/')
for (const version of [10, 12]) {
const latestSha = `node-v${version}.12.0-aix-ppc64.tar.gz`
scope = scope
.get(`/latest-v${version}.x/SHASUMS256.txt`)
.reply(200, latestSha)
}
return scope
}
const mockReleaseSchedule = () => nock => {
const currentDate = moment()
const schedule = {
'v0.10': {
start: '2013-03-11',
end: '2016-10-31',
},
'v0.12': {
start: '2015-02-06',
end: '2016-12-31',
},
v4: {
start: '2015-09-08',
lts: '2015-10-12',
maintenance: '2017-04-01',
end: '2018-04-30',
codename: 'Argon',
},
v5: {
start: '2015-10-29',
maintenance: '2016-04-30',
end: '2016-06-30',
},
v6: {
start: '2016-04-26',
lts: '2016-10-18',
maintenance: '2018-04-30',
end: '2019-04-30',
codename: 'Boron',
},
v7: {
start: '2016-10-25',
maintenance: '2017-04-30',
end: '2017-06-30',
},
v8: {
start: '2017-05-30',
lts: '2017-10-31',
maintenance: '2019-01-01',
end: '2019-12-31',
codename: 'Carbon',
},
v9: {
start: '2017-10-01',
maintenance: '2018-04-01',
end: '2018-06-30',
},
v10: {
start: '2018-04-24',
lts: currentDate.clone().subtract(6, 'month').format(dateFormat),
maintenance: '2020-04-30',
end: currentDate.clone().add(1, 'month').format(dateFormat),
codename: 'Dubnium',
},
v11: {
start: '2018-10-23',
maintenance: '2019-04-22',
end: '2019-06-01',
},
v12: {
start: '2019-04-23',
lts: currentDate.clone().subtract(1, 'month').format(dateFormat),
maintenance: '2020-10-20',
end: currentDate.clone().add(6, 'month').format(dateFormat),
codename: 'Erbium',
},
v13: {
start: '2019-10-22',
maintenance: '2020-04-01',
end: '2020-06-01',
},
v14: {
start: '2020-04-21',
lts: currentDate.clone().add(4, 'month').format(dateFormat),
maintenance: '2021-10-19',
end: currentDate.clone().add(12, 'month').format(dateFormat),
codename: '',
},
}
return nock('https://raw.githubusercontent.com/')
.get(`/nodejs/Release/master/schedule.json`)
.reply(200, schedule)
}
module.exports = {
mockPackageData,
mockCurrentSha,
mockVersionsSha,
mockReleaseSchedule,
}