Previously we hand coded the list of previous major versions that are displayed in the left navigation. Now these are generated from the tags in GitHub. Closes #39688 PR Close #39689
		
			
				
	
	
		
			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'}};
 | |
| }
 |