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'}}; | ||
|  | } |