70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
 | |
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| 
 | |
| import * as console from '../../utils/console';
 | |
| import {buildVirtualGitClient, mockNgDevConfig, VirtualGitClient} from '../../utils/testing';
 | |
| 
 | |
| import {services, ServicesModule} from './services';
 | |
| 
 | |
| describe('ServicesModule', () => {
 | |
|   let getStatusFromStandardApiSpy: jasmine.Spy;
 | |
|   let infoSpy: jasmine.Spy;
 | |
|   let infoGroupSpy: jasmine.Spy;
 | |
|   let virtualGitClient: VirtualGitClient;
 | |
| 
 | |
|   services.splice(0, Infinity, {url: 'fakeStatus.com/api.json', name: 'Service Name'});
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     getStatusFromStandardApiSpy = spyOn(ServicesModule.prototype, 'getStatusFromStandardApi');
 | |
|     virtualGitClient = buildVirtualGitClient();
 | |
|     infoGroupSpy = spyOn(console.info, 'group');
 | |
|     infoSpy = spyOn(console, 'info');
 | |
|   });
 | |
| 
 | |
|   describe('gathering status', () => {
 | |
|     it('for each of the services', async () => {
 | |
|       new ServicesModule(virtualGitClient, {caretaker: {}, ...mockNgDevConfig});
 | |
| 
 | |
|       expect(getStatusFromStandardApiSpy)
 | |
|           .toHaveBeenCalledWith({url: 'fakeStatus.com/api.json', name: 'Service Name'});
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('printing the data retrieved', () => {
 | |
|     it('for each service ', async () => {
 | |
|       const fakeData = Promise.resolve([
 | |
|         {
 | |
|           name: 'Service 1',
 | |
|           status: 'passing',
 | |
|           description: 'Everything is working great',
 | |
|           lastUpdated: new Date(0),
 | |
|         },
 | |
|         {
 | |
|           name: 'Service 2',
 | |
|           status: 'failing',
 | |
|           description: 'Literally everything is broken',
 | |
|           lastUpdated: new Date(0),
 | |
|         },
 | |
|       ]);
 | |
| 
 | |
| 
 | |
|       const module = new ServicesModule(virtualGitClient, {caretaker: {}, ...mockNgDevConfig});
 | |
|       Object.defineProperty(module, 'data', {value: fakeData});
 | |
|       await module.printToTerminal();
 | |
| 
 | |
| 
 | |
|       expect(infoGroupSpy).toHaveBeenCalledWith('Service Statuses');
 | |
|       expect(infoSpy).toHaveBeenCalledWith('Service 1 ✅');
 | |
|       expect(infoGroupSpy)
 | |
|           .toHaveBeenCalledWith(`Service 2 ❌ (Updated: ${new Date(0).toLocaleString()})`);
 | |
|       expect(infoSpy).toHaveBeenCalledWith('  Details: Literally everything is broken');
 | |
|     });
 | |
|   });
 | |
| });
 |