From 9bc05f27a58586fe053cfb3b3241d800b5c457c0 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Tue, 25 Nov 2014 18:30:30 -0800 Subject: [PATCH] [Common UI] Skeleton specs for Browse Add skeleton specs for browse mode. WTD-574. --- .../browse/test/BrowseControllerSpec.js | 125 ++++++++++++++++++ .../browse/test/ViewSwitcherControllerSpec.js | 16 +++ .../test/creation/CreateActionProviderSpec.js | 15 +++ .../browse/test/creation/CreateActionSpec.js | 15 +++ .../test/creation/CreateMenuControllerSpec.js | 15 +++ .../browse/test/creation/CreateWizardSpec.js | 15 +++ .../test/creation/CreationServiceSpec.js | 15 +++ .../test/navigation/NavigateActionSpec.js | 15 +++ .../test/navigation/NavigationServiceSpec.js | 15 +++ platform/commonUI/browse/test/suite.json | 12 ++ .../test/windowing/FullscreenActionSpec.js | 15 +++ 11 files changed, 273 insertions(+) create mode 100644 platform/commonUI/browse/test/BrowseControllerSpec.js create mode 100644 platform/commonUI/browse/test/ViewSwitcherControllerSpec.js create mode 100644 platform/commonUI/browse/test/creation/CreateActionProviderSpec.js create mode 100644 platform/commonUI/browse/test/creation/CreateActionSpec.js create mode 100644 platform/commonUI/browse/test/creation/CreateMenuControllerSpec.js create mode 100644 platform/commonUI/browse/test/creation/CreateWizardSpec.js create mode 100644 platform/commonUI/browse/test/creation/CreationServiceSpec.js create mode 100644 platform/commonUI/browse/test/navigation/NavigateActionSpec.js create mode 100644 platform/commonUI/browse/test/navigation/NavigationServiceSpec.js create mode 100644 platform/commonUI/browse/test/suite.json create mode 100644 platform/commonUI/browse/test/windowing/FullscreenActionSpec.js diff --git a/platform/commonUI/browse/test/BrowseControllerSpec.js b/platform/commonUI/browse/test/BrowseControllerSpec.js new file mode 100644 index 0000000000..945b2fcf0a --- /dev/null +++ b/platform/commonUI/browse/test/BrowseControllerSpec.js @@ -0,0 +1,125 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../src/BrowseController"], + function (BrowseController) { + "use strict"; + + describe("The browse controller", function () { + var mockScope, + mockObjectService, + mockNavigationService, + mockRootObject, + mockDomainObject, + controller; + + function mockPromise(value) { + return { + then: function (callback) { + return mockPromise(callback(value)); + } + }; + } + + beforeEach(function () { + mockScope = jasmine.createSpyObj("$scope", [ "$on" ]); + mockObjectService = jasmine.createSpyObj( + "objectService", + [ "getObjects" ] + ); + mockNavigationService = jasmine.createSpyObj( + "navigationService", + [ + "getNavigation", + "setNavigation", + "addListener", + "removeListener" + ] + ); + mockRootObject = jasmine.createSpyObj( + "domainObject", + [ "getId", "getCapability", "getModel", "useCapability" ] + ); + mockDomainObject = jasmine.createSpyObj( + "domainObject", + [ "getId", "getCapability", "getModel", "useCapability" ] + ); + + mockObjectService.getObjects.andReturn(mockPromise({ + ROOT: mockRootObject + })); + + + controller = new BrowseController( + mockScope, + mockObjectService, + mockNavigationService + ); + }); + + it("provides a means of changing navigation", function () { + // Browse template needs a setNavigation function + + // Verify precondition + expect(mockNavigationService.setNavigation) + .not.toHaveBeenCalled(); + + // Set navigation via controller + controller.setNavigation(mockDomainObject); + + expect(mockNavigationService.setNavigation) + .toHaveBeenCalledWith(mockDomainObject); + }); + + it("uses composition to set the navigated object, if there is none", function () { + mockRootObject.useCapability.andReturn(mockPromise([ + mockDomainObject + ])); + controller = new BrowseController( + mockScope, + mockObjectService, + mockNavigationService + ); + expect(mockNavigationService.setNavigation) + .toHaveBeenCalledWith(mockDomainObject); + }); + + it("does not try to override navigation", function () { + // This behavior is needed if object navigation has been + // determined by query string parameters + mockRootObject.useCapability.andReturn(mockPromise([null])); + mockNavigationService.getNavigation.andReturn(mockDomainObject); + controller = new BrowseController( + mockScope, + mockObjectService, + mockNavigationService + ); + expect(mockScope.navigatedObject).toBe(mockDomainObject); + }); + + it("updates scope when navigated object changes", function () { + // Should have registered a listener - call it + mockNavigationService.addListener.mostRecentCall.args[0]( + mockDomainObject + ); + expect(mockScope.navigatedObject).toEqual(mockDomainObject); + }); + + it("releases its navigation listener when its scope is destroyed", function () { + expect(mockScope.$on).toHaveBeenCalledWith( + "$destroy", + jasmine.any(Function) + ); + mockScope.$on.mostRecentCall.args[1](); + // Should remove the listener it added earlier + expect(mockNavigationService.removeListener).toHaveBeenCalledWith( + mockNavigationService.addListener.mostRecentCall.args[0] + ); + }); + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/ViewSwitcherControllerSpec.js b/platform/commonUI/browse/test/ViewSwitcherControllerSpec.js new file mode 100644 index 0000000000..831d7383e3 --- /dev/null +++ b/platform/commonUI/browse/test/ViewSwitcherControllerSpec.js @@ -0,0 +1,16 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../src/ViewSwitcherController"], + function (BrowseController) { + "use strict"; + + describe("The view switcher controller", function () { + + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js b/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js new file mode 100644 index 0000000000..b079c0a549 --- /dev/null +++ b/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js @@ -0,0 +1,15 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/creation/CreateActionProvider"], + function (CreateActionProvider) { + "use strict"; + + describe("The create action provider", function () { + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/creation/CreateActionSpec.js b/platform/commonUI/browse/test/creation/CreateActionSpec.js new file mode 100644 index 0000000000..8075463f55 --- /dev/null +++ b/platform/commonUI/browse/test/creation/CreateActionSpec.js @@ -0,0 +1,15 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/creation/CreateAction"], + function (CreateAction) { + "use strict"; + + describe("The create action", function () { + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/creation/CreateMenuControllerSpec.js b/platform/commonUI/browse/test/creation/CreateMenuControllerSpec.js new file mode 100644 index 0000000000..62a57477fd --- /dev/null +++ b/platform/commonUI/browse/test/creation/CreateMenuControllerSpec.js @@ -0,0 +1,15 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/creation/CreateMenuController"], + function (CreateActionProvider) { + "use strict"; + + describe("The create menu controller", function () { + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/creation/CreateWizardSpec.js b/platform/commonUI/browse/test/creation/CreateWizardSpec.js new file mode 100644 index 0000000000..9d76b3a55f --- /dev/null +++ b/platform/commonUI/browse/test/creation/CreateWizardSpec.js @@ -0,0 +1,15 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/creation/CreateWizard"], + function (CreateWizard) { + "use strict"; + + describe("The create action provider", function () { + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/creation/CreationServiceSpec.js b/platform/commonUI/browse/test/creation/CreationServiceSpec.js new file mode 100644 index 0000000000..d1dc4f4048 --- /dev/null +++ b/platform/commonUI/browse/test/creation/CreationServiceSpec.js @@ -0,0 +1,15 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/creation/CreationService"], + function (CreationService) { + "use strict"; + + describe("The creation service", function () { + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/navigation/NavigateActionSpec.js b/platform/commonUI/browse/test/navigation/NavigateActionSpec.js new file mode 100644 index 0000000000..2995b7834a --- /dev/null +++ b/platform/commonUI/browse/test/navigation/NavigateActionSpec.js @@ -0,0 +1,15 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/navigation/NavigateAction"], + function (NavigateAction) { + "use strict"; + + describe("The navigate action", function () { + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/navigation/NavigationServiceSpec.js b/platform/commonUI/browse/test/navigation/NavigationServiceSpec.js new file mode 100644 index 0000000000..e0da3f5d1b --- /dev/null +++ b/platform/commonUI/browse/test/navigation/NavigationServiceSpec.js @@ -0,0 +1,15 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/navigation/NavigationService"], + function (NavigateAction) { + "use strict"; + + describe("The navigation service", function () { + + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/suite.json b/platform/commonUI/browse/test/suite.json new file mode 100644 index 0000000000..d99b79dedf --- /dev/null +++ b/platform/commonUI/browse/test/suite.json @@ -0,0 +1,12 @@ +[ + "BrowseController", + "ViewSwitcherController", + "creation/CreateAction", + "creation/CreateActionProvider", + "creation/CreateMenuController", + "creation/CreateWizard", + "creation/CreationService", + "navigation/NavigateAction", + "navigation/NavigationService", + "windowing/FullscreenAction" +] \ No newline at end of file diff --git a/platform/commonUI/browse/test/windowing/FullscreenActionSpec.js b/platform/commonUI/browse/test/windowing/FullscreenActionSpec.js new file mode 100644 index 0000000000..8e7421e541 --- /dev/null +++ b/platform/commonUI/browse/test/windowing/FullscreenActionSpec.js @@ -0,0 +1,15 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/windowing/FullscreenAction"], + function (FullscreenAction) { + "use strict"; + + describe("The fullscreen action", function () { + + }); + } +); \ No newline at end of file