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