github.com/justinjmoses/evergreen@v0.0.0-20170530173719-1d50e381ff0d/public/static/js/tests/build_view_controller.test.js (about) 1 /** 2 * build_view_controller.test.js 3 * 4 * Created on: September 11, 2013 5 * Author: Valeri Karpov 6 * 7 * Karma-based unit tests for build.js/BuildViewController (see public/static/js/tests/conf/karma.conf.js) 8 * 9 */ 10 11 describe("BuildViewController", function() { 12 beforeEach(module('MCI')); 13 14 var controller = null; 15 var scope = null; 16 var $httpBackend = null; 17 var date = null; 18 var $timeout = null; 19 20 beforeEach(inject(function($rootScope, $controller, $injector) { 21 scope = $rootScope; 22 $httpBackend = $injector.get('$httpBackend'); 23 $timeout = $injector.get('$timeout'); 24 25 date = new Date(2013, 8, 26); 26 27 controller = $controller("BuildViewController", 28 { 29 $scope : scope, 30 mciTime : { 31 now : function() { return date; }, 32 fromMilliseconds : function(ms) { return new Date(ms); }, 33 fromNanoseconds : function(ns) { return new Date(ns / (1000 * 1000)) }, 34 finishConditional : function() { return 0; } 35 } 36 }); 37 })); 38 39 afterEach(function() { 40 $httpBackend.verifyNoOutstandingExpectation(); 41 $httpBackend.verifyNoOutstandingRequest(); 42 }); 43 44 it("should make build visible to UI", function() { 45 var mockBuild = { 46 Build : { 47 activated_time : '2013-08-26' 48 }, 49 Tasks : [] 50 }; 51 52 scope.setBuild(mockBuild); 53 54 expect(scope.build).toBe(mockBuild); 55 expect(scope.build.Build.activated_time.getTime()).toBeGreaterThan(0); 56 expect(scope.lastUpdate.getTime()).toBe(new Date(2013, 8, 26).getTime()); 57 expect(scope.computed.maxTaskTime).toBeGreaterThan(0); 58 }); 59 60 it("should compute the maximum task time properly", function() { 61 var mockBuild = { 62 Build : { 63 activated_time : '2013-08-26' 64 }, 65 Tasks : [ 66 { Task : { TimeTaken : 25 } }, 67 { Task : { TimeTaken : 2 } }, 68 { Task : { TimeTaken : 35 } }, 69 { Task : { TimeTaken : 0 } }, 70 ] 71 }; 72 scope.setBuild(mockBuild); 73 74 expect(scope.computed.maxTaskTime).toBe(35); 75 }); 76 77 it("should ping the correct route to refresh its data", function() { 78 var mockBuild = { 79 Build : { 80 activated_time : '2013-08-26', 81 _id : "FAKEBUILDID" 82 }, 83 Tasks : [ 84 { Task : { TimeTaken : 25 } }, 85 { Task : { TimeTaken : 2 } }, 86 { Task : { TimeTaken : 35 } }, 87 { Task : { TimeTaken : 0 } }, 88 ] 89 }; 90 scope.setBuild(mockBuild); 91 expect(scope.lastUpdate.getTime()).toBe(new Date(2013, 8, 26).getTime()); 92 93 var reloadedBuild = angular.copy(mockBuild); 94 reloadedBuild.Tasks.push({ Task : { TimeTaken : 50 } }); 95 96 date = new Date(2013, 8, 27); 97 98 $httpBackend.expectGET('/json/build/FAKEBUILDID').respond(200, reloadedBuild); 99 scope.reloadBuild(); 100 $httpBackend.flush(); 101 102 expect(scope.build).toBe(reloadedBuild); 103 expect(scope.lastUpdate.getTime()).toBe(new Date(2013, 8, 27).getTime()); 104 expect(scope.computed.maxTaskTime).toBe(50); 105 }); 106 107 it("should reload after 10 minutes", function() { 108 var mockBuild = { 109 Build : { 110 activated_time : '2013-08-26', 111 _id : "FAKEBUILDID" 112 }, 113 Tasks : [ 114 { Task : { TimeTaken : 25 } }, 115 { Task : { TimeTaken : 2 } }, 116 { Task : { TimeTaken : 35 } }, 117 { Task : { TimeTaken : 0 } }, 118 ] 119 }; 120 scope.setBuild(mockBuild); 121 expect(scope.lastUpdate.getTime()).toBe(new Date(2013, 8, 26).getTime()); 122 123 var reloadedBuild = angular.copy(mockBuild); 124 reloadedBuild.Tasks.push({ Task : { TimeTaken : 50 } }); 125 126 date = new Date(2013, 8, 28); 127 128 $httpBackend.expectGET('/json/build/FAKEBUILDID').respond(200, reloadedBuild); 129 $timeout.flush(10 * 60 * 1000 + 1); 130 131 $httpBackend.flush(); 132 expect(scope.build).toBe(reloadedBuild); 133 expect(scope.lastUpdate.getTime()).toBe(new Date(2013, 8, 28).getTime()); 134 expect(scope.computed.maxTaskTime).toBe(50); 135 }); 136 });