64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
|
const child = require('child_process');
|
||
|
const Dgeni = require('dgeni');
|
||
|
const semver = require('semver');
|
||
|
|
||
|
const basePackage = require('../index');
|
||
|
|
||
|
describe('getPreviousMajorVersions', () => {
|
||
|
let getPreviousMajorVersions;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
const mockPackage = new Dgeni.Package('mock-package', [basePackage])
|
||
|
.factory('versionInfo', mockVersionInfo)
|
||
|
.factory('packageInfo', mockPackageInfo);
|
||
|
const dgeni = new Dgeni([mockPackage]);
|
||
|
const injector = dgeni.configureInjector();
|
||
|
getPreviousMajorVersions = injector.get('getPreviousMajorVersions');
|
||
|
});
|
||
|
|
||
|
it('should spawn a child process to git', () => {
|
||
|
spyOn(child, 'spawnSync').and.returnValue({status: 0, stdout: ''});
|
||
|
getPreviousMajorVersions();
|
||
|
expect(child.spawnSync).toHaveBeenCalledWith('git', ['ls-remote', '--tags', 'SOME_GIT_URL'], {
|
||
|
encoding: 'utf8'
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should return an empty list for a failed git command', () => {
|
||
|
spyOn(child, 'spawnSync').and.returnValue({status: 1});
|
||
|
expect(getPreviousMajorVersions()).toEqual([]);
|
||
|
});
|
||
|
|
||
|
it('should return an empty list for no tags', () => {
|
||
|
spyOn(child, 'spawnSync').and.returnValue({status: 0, stdout: ''});
|
||
|
expect(getPreviousMajorVersions()).toEqual([]);
|
||
|
});
|
||
|
|
||
|
it('should return an array of latest major versions with major greater than current', () => {
|
||
|
spyOn(child, 'spawnSync').and.returnValue({
|
||
|
status: 0,
|
||
|
stdout: `
|
||
|
refs/pull/655
|
||
|
refs/tags/some-tag
|
||
|
refs/tags/3.8.1
|
||
|
refs/tags/4.2.9
|
||
|
refs/tags/4.2.10
|
||
|
refs/tags/5.6.1
|
||
|
refs/tags/6.1.1
|
||
|
`
|
||
|
});
|
||
|
expect(getPreviousMajorVersions()).toEqual([
|
||
|
semver('4.2.10'),
|
||
|
semver('3.8.1'),
|
||
|
]);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
function mockVersionInfo() {
|
||
|
return {currentVersion: new semver('5.1.0')};
|
||
|
}
|
||
|
|
||
|
function mockPackageInfo() {
|
||
|
return {repository: {url: 'SOME_GIT_URL'}};
|
||
|
}
|