[Windowing] Unit Test

Unit Tests for UrlService and NewTabAction
created and partially written. UrlService
returns 100% and NewTabAction returns 88%.
WTD 16.
This commit is contained in:
Shivam Dave 2015-06-24 11:32:59 -07:00
parent 83cc0b65d5
commit 43cfab1031
6 changed files with 97 additions and 14 deletions

View File

@ -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"
},

View File

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

View File

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

View File

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

View File

@ -9,6 +9,7 @@
"creation/LocatorController",
"navigation/NavigateAction",
"navigation/NavigationService",
"services/UrlService",
"windowing/FullscreenAction",
"windowing/NewTabAction",
"windowing/WindowTitler"

View File

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