/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ /** * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. */ define( ["../../src/navigation/NavigationService"], function (NavigationService) { "use strict"; describe("The navigation service", function () { var navigationService; beforeEach(function () { navigationService = new NavigationService(); }); it("stores navigation state", function () { var testObject = { someKey: 42 }, otherObject = { someKey: "some value" }; expect(navigationService.getNavigation()) .toBeUndefined(); navigationService.setNavigation(testObject); expect(navigationService.getNavigation()) .toBe(testObject); expect(navigationService.getNavigation()) .toBe(testObject); navigationService.setNavigation(otherObject); expect(navigationService.getNavigation()) .toBe(otherObject); }); it("notifies listeners on change", function () { var testObject = { someKey: 42 }, callback = jasmine.createSpy("callback"); navigationService.addListener(callback); expect(callback).not.toHaveBeenCalled(); navigationService.setNavigation(testObject); expect(callback).toHaveBeenCalledWith(testObject); }); it("stops notifying listeners after removal", function () { var testObject = { someKey: 42 }, callback = jasmine.createSpy("callback"); navigationService.addListener(callback); navigationService.removeListener(callback); navigationService.setNavigation(testObject); expect(callback).not.toHaveBeenCalled(); }); }); } );