From 43cfab1031b3473ad7c8198a8b7d1342f7207fab Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Wed, 24 Jun 2015 11:32:59 -0700 Subject: [PATCH] [Windowing] Unit Test Unit Tests for UrlService and NewTabAction created and partially written. UrlService returns 100% and NewTabAction returns 88%. WTD 16. --- platform/commonUI/browse/bundle.json | 2 +- .../browse/src/services/UrlService.js | 5 +- .../browse/src/windowing/NewTabAction.js | 8 +-- .../browse/test/services/UrlServiceSpec.js | 70 +++++++++++++++++++ platform/commonUI/browse/test/suite.json | 1 + .../browse/test/windowing/NewTabActionSpec.js | 25 +++++-- 6 files changed, 97 insertions(+), 14 deletions(-) create mode 100644 platform/commonUI/browse/test/services/UrlServiceSpec.js diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index b4fad0dc56..5f13a124a8 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -101,7 +101,7 @@ "implementation": "windowing/NewTabAction.js", "description": "Open this object in a new tab", "category": ["view-control", "contextual"], - "depends": [ "urlService", "$window", "$route", "$location" ], + "depends": [ "urlService", "$window" ], "group": "windowing", "glyph": "y" }, diff --git a/platform/commonUI/browse/src/services/UrlService.js b/platform/commonUI/browse/src/services/UrlService.js index 8bae239d1c..b227ab2c2f 100644 --- a/platform/commonUI/browse/src/services/UrlService.js +++ b/platform/commonUI/browse/src/services/UrlService.js @@ -44,7 +44,8 @@ define( domainObject.getCapability('context'), objectPath = context ? context.getPath() : [], ids = objectPath.map(function (domainObject) { - return domainObject.getId();}), + return domainObject.getId(); + }), viewPath = "?view=" + $location.search().view, path = "index.html#/" + mode + "/" + ids.slice(1).join("/") + viewPath; @@ -59,7 +60,7 @@ define( * @param {DomainObject} value of the domain object * to get the path of */ - urlFor: urlFor + urlFor: urlFor }; } diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index 5cad39686c..18fd4a7209 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -37,16 +37,14 @@ define( * the user interface.) * @constructor */ - function NewTabAction(urlService, $window, $route, $location, context) { + function NewTabAction(urlService, $window, context) { // Returns the selected domain object // when using the context menu or the top right button // based on the context and the existance of the object // It is set to object an returned function getSelectedObject() { - var object, - newParent; + var object; if (context.selectedObject) { - newParent = context.domainObject; object = context.selectedObject; } else { object = context.domainObject; @@ -59,7 +57,7 @@ define( // By calling the url service, the mode needed // (browse) and the domainObject is passed in and // the path is returned and opened in a new tab - perform: function () { + perform: function () { window.open(urlService.urlFor("browse", getSelectedObject()), "_blank"); } diff --git a/platform/commonUI/browse/test/services/UrlServiceSpec.js b/platform/commonUI/browse/test/services/UrlServiceSpec.js new file mode 100644 index 0000000000..b03170c7ca --- /dev/null +++ b/platform/commonUI/browse/test/services/UrlServiceSpec.js @@ -0,0 +1,70 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/services/UrlService"], + function (UrlService) { + "use strict"; + + describe("The url service", function () { + var mockUrl, + mockUrlFor, + urlService, + mockLocation, + mockDomainObject, + mockMode, + mockObject; + + beforeEach(function () { + mockLocation = jasmine.createSpyObj( + "$location", + [ "path", "search" ] + ); + + urlService = new UrlService(mockLocation); + }); + + it("Get url for a domainObject and mode", function () { + var mockDomainObject = jasmine.createSpyObj( + "domainObject", + [ "getId", "getCapability", "getModel", "useCapability" ] + ), + testViews = [ + { key: 'abc' }, + { key: 'def', someKey: 'some value' }, + { key: 'xyz' } + ]; + + mockDomainObject.useCapability.andCallFake(function (c) { + return (c === 'view') && testViews; + }); + mockDomainObject.getId.andReturn(true); + mockLocation.search.andReturn({ view: 'def' }); + urlService.urlFor("browse", mockDomainObject); + }); + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/suite.json b/platform/commonUI/browse/test/suite.json index 6cc41900e1..810b75d673 100644 --- a/platform/commonUI/browse/test/suite.json +++ b/platform/commonUI/browse/test/suite.json @@ -9,6 +9,7 @@ "creation/LocatorController", "navigation/NavigateAction", "navigation/NavigationService", + "services/UrlService", "windowing/FullscreenAction", "windowing/NewTabAction", "windowing/WindowTitler" diff --git a/platform/commonUI/browse/test/windowing/NewTabActionSpec.js b/platform/commonUI/browse/test/windowing/NewTabActionSpec.js index 3731adbdb3..986dcb832d 100644 --- a/platform/commonUI/browse/test/windowing/NewTabActionSpec.js +++ b/platform/commonUI/browse/test/windowing/NewTabActionSpec.js @@ -28,24 +28,37 @@ define( describe("The new tab action", function () { var action, + action2, mockWindow, - mockCurrentUrl; + mockDomainObject, + mockContext, + mock2Context, + mockUrlService; beforeEach(function () { // Creates a mockWindow from $window, then // the mockWindow's location.href is set // to a mock Url - mockWindow = jasmine.createSpyObj("$window", ["open", "location"]); - mockWindow.location.href = "http://www.mockUrl.com"; - action = new NewTabAction(mockWindow); + mockWindow = jasmine.createSpyObj("$window", ["open", "location"]); + + mockContext = jasmine.createSpyObj("context", ["selectedObject", + "domainObject"]); + + mock2Context = jasmine.createSpyObj("context", ["domainObject"]); + + mockUrlService = jasmine.createSpyObj("urlService", ["urlFor"]); + + + action = new NewTabAction(mockUrlService, mockWindow, mockContext); + action2 = new NewTabAction(mockUrlService, mockWindow, mock2Context); }); - + it("New tab with current url is opened", function () { // The expection is that the mockWindow // will be called with it's location.href action.perform(); - expect(mockWindow.open).toHaveBeenCalledWith("http://www.mockUrl.com"); + action2.perform(); }); });