jasmine + angular ex 6

by ronapelbaum

HTML

<script src="https://jasmine.github.io/2.4/lib/jasmine.js"></script>
<script src="https://jasmine.github.io/2.4/lib/jasmine-html.js"></script>
<script src="https://jasmine.github.io/2.4/lib/boot.js"></script>
<link rel="stylesheet" href="https://jasmine.github.io/2.4/lib/jasmine.css">
<script src="https://code.angularjs.org/1.4.9/angular.js"></script>
<script src="https://code.angularjs.org/1.4.9/angular-mocks.js"></script>

JavaScript

//--------------BL------------
(function() {
  function MyDataService() {
    this.getNames = function() {
      return ['Alice', 'Bob'];
    }
  }

  function MyController($scope, MyDataService) {
    $scope.greetings = [];
    $scope.init = function() {
      var names = MyDataService.getNames();
      for (var i = 0; i < names.length; i++) {
        var greet = 'Hello ' + names[i];
        $scope.greetings.push(greet);
      }
    }
  }

  //OtherModule
  angular.module('OtherModule', [])
    .service('MyDataService', MyDataService);

  //MyModule
  angular.module('MyModule', ['OtherModule'])
    .controller('MyController', ['$scope', 'MyDataService', MyController]);

})();


//--------------specs------------
describe("MyController test suite", function() {
  var myScope;
  beforeEach(module('MyModule'));

  it("should have greetings array", function() {
    expect(myScope.greetings).toBeDefined();
  });

  it("init() should update greetings array", function() {
    myScope.init();
    expect(myScope.greetings.length).toBeGreaterThan(0);
  });

});