mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2025-03-22 19:05:56 -04:00
revised fastly tests, added more
This commit is contained in:
parent
de5e712305
commit
88abed34e9
2 changed files with 134 additions and 21 deletions
|
@ -37,18 +37,15 @@ module.exports = function (apiKey, serviceId) {
|
|||
if (err) {
|
||||
return cb('Failed to fetch versions: ' + err);
|
||||
}
|
||||
var latestVersion = versions.reduce(function (lateVersion, version) {
|
||||
if (!lateVersion) return version;
|
||||
// if versions we're comparing are both active, or both inactive, prefer
|
||||
// whichever has a higher version number
|
||||
if (lateVersion.active === version.active) {
|
||||
if (version.number > lateVersion.number) return version;
|
||||
return lateVersion;
|
||||
}
|
||||
// if only one of the versions is active, prefer that one
|
||||
if (version.active === true) return version;
|
||||
return lateVersion;
|
||||
});
|
||||
var latestVersion = versions.reduce((latestActiveSoFar, cur) => {
|
||||
// if one of [latestActiveSoFar, cur] is active and the other isn't,
|
||||
// return whichever is active. If both are not active, return
|
||||
// latestActiveSoFar.
|
||||
if (!cur || !cur.active) return latestActiveSoFar;
|
||||
if (!latestActiveSoFar || !latestActiveSoFar.active) return cur;
|
||||
// when both are active, prefer whichever has a higher version number.
|
||||
return (cur.number > latestActiveSoFar.number) ? cur : latestActiveSoFar;
|
||||
}, null);
|
||||
return cb(null, latestVersion);
|
||||
});
|
||||
};
|
||||
|
|
|
@ -1,7 +1,50 @@
|
|||
describe('fastly library', () => {
|
||||
test('getLatestActiveVersion returns largest active VCL number', done => {
|
||||
let mockedFastlyRequest = {};
|
||||
|
||||
const mockedFastlyRequest = jest.fn((method, url, cb) => {
|
||||
jest.mock('fastly', () => (() => ({
|
||||
request: mockedFastlyRequest
|
||||
})));
|
||||
const fastlyExtended = require('../../../bin/lib/fastly-extended'); // eslint-disable-line global-require
|
||||
|
||||
test('getLatestActiveVersion returns largest active VCL number, ' +
|
||||
'when called with VCLs in sequential order', done => {
|
||||
mockedFastlyRequest = jest.fn((method, url, cb) => {
|
||||
cb(null, [
|
||||
{
|
||||
number: 1,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
number: 2,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
number: 3,
|
||||
active: true
|
||||
},
|
||||
{
|
||||
number: 4,
|
||||
active: false
|
||||
}
|
||||
]);
|
||||
});
|
||||
const fastlyInstance = fastlyExtended('api_key', 'service_id');
|
||||
|
||||
fastlyInstance.getLatestActiveVersion((err, response) => {
|
||||
expect(err).toBe(null);
|
||||
expect(response).toEqual({
|
||||
number: 3,
|
||||
active: true
|
||||
});
|
||||
expect(mockedFastlyRequest).toHaveBeenCalledWith(
|
||||
'GET', '/service/service_id/version', expect.any(Function)
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('getLatestActiveVersion returns largest active VCL number, when called with VCLs in mixed up order', done => {
|
||||
mockedFastlyRequest = jest.fn((method, url, cb) => {
|
||||
cb(null, [
|
||||
{
|
||||
number: 4,
|
||||
|
@ -9,7 +52,7 @@ describe('fastly library', () => {
|
|||
},
|
||||
{
|
||||
number: 1,
|
||||
active: true
|
||||
active: false
|
||||
},
|
||||
{
|
||||
number: 2,
|
||||
|
@ -21,12 +64,6 @@ describe('fastly library', () => {
|
|||
}
|
||||
]);
|
||||
});
|
||||
|
||||
jest.mock('fastly', () => (() => ({
|
||||
request: mockedFastlyRequest
|
||||
})));
|
||||
|
||||
const fastlyExtended = require('../../../bin/lib/fastly-extended'); // eslint-disable-line global-require
|
||||
const fastlyInstance = fastlyExtended('api_key', 'service_id');
|
||||
|
||||
fastlyInstance.getLatestActiveVersion((err, response) => {
|
||||
|
@ -41,4 +78,83 @@ describe('fastly library', () => {
|
|||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('getLatestActiveVersion returns null, when none of the VCL versions are active', done => {
|
||||
mockedFastlyRequest = jest.fn((method, url, cb) => {
|
||||
cb(null, [
|
||||
{
|
||||
number: 4,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
number: 1,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
number: 2,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
number: 3,
|
||||
active: false
|
||||
}
|
||||
]);
|
||||
});
|
||||
const fastlyInstance = fastlyExtended('api_key', 'service_id');
|
||||
|
||||
fastlyInstance.getLatestActiveVersion((err, response) => {
|
||||
expect(err).toBe(null);
|
||||
expect(response).toEqual(null);
|
||||
expect(mockedFastlyRequest).toHaveBeenCalledWith(
|
||||
'GET', '/service/service_id/version', expect.any(Function)
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('getLatestActiveVersion returns largest active VCL number, ' +
|
||||
'when called with a single active VCL', done => {
|
||||
mockedFastlyRequest = jest.fn((method, url, cb) => {
|
||||
cb(null, [
|
||||
{
|
||||
number: 1,
|
||||
active: true
|
||||
}
|
||||
]);
|
||||
});
|
||||
const fastlyInstance = fastlyExtended('api_key', 'service_id');
|
||||
|
||||
fastlyInstance.getLatestActiveVersion((err, response) => {
|
||||
expect(err).toBe(null);
|
||||
expect(response).toEqual({
|
||||
number: 1,
|
||||
active: true
|
||||
});
|
||||
expect(mockedFastlyRequest).toHaveBeenCalledWith(
|
||||
'GET', '/service/service_id/version', expect.any(Function)
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('getLatestActiveVersion returns null, when called with a single inactive VCL', done => {
|
||||
mockedFastlyRequest = jest.fn((method, url, cb) => {
|
||||
cb(null, [
|
||||
{
|
||||
number: 1,
|
||||
active: false
|
||||
}
|
||||
]);
|
||||
});
|
||||
const fastlyInstance = fastlyExtended('api_key', 'service_id');
|
||||
|
||||
fastlyInstance.getLatestActiveVersion((err, response) => {
|
||||
expect(err).toBe(null);
|
||||
expect(response).toEqual(null);
|
||||
expect(mockedFastlyRequest).toHaveBeenCalledWith(
|
||||
'GET', '/service/service_id/version', expect.any(Function)
|
||||
);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue