From 8f24e014e04d96641137786af70052196b3df0ea Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Wed, 16 Sep 2015 16:51:28 -0700 Subject: [PATCH] [Time Conductor] Add skeleton specs Add skeleton specs to new classes added for date-time picker in time conductor. WTD-1515 --- .../DateTimePickerControllerSpec.js | 63 +++++++++++ .../test/directives/MCTClickElsewhereSpec.js | 84 ++++++++++++++ .../general/test/directives/MCTPopupSpec.js | 105 ++++++++++++++++++ platform/commonUI/general/test/suite.json | 3 + 4 files changed, 255 insertions(+) create mode 100644 platform/commonUI/general/test/controllers/DateTimePickerControllerSpec.js create mode 100644 platform/commonUI/general/test/directives/MCTClickElsewhereSpec.js create mode 100644 platform/commonUI/general/test/directives/MCTPopupSpec.js diff --git a/platform/commonUI/general/test/controllers/DateTimePickerControllerSpec.js b/platform/commonUI/general/test/controllers/DateTimePickerControllerSpec.js new file mode 100644 index 0000000000..957df1b36d --- /dev/null +++ b/platform/commonUI/general/test/controllers/DateTimePickerControllerSpec.js @@ -0,0 +1,63 @@ +/***************************************************************************** + * 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*/ + +define( + ["../../src/controllers/DateTimePickerController"], + function (DateTimePickerController) { + "use strict"; + + describe("The DateTimePickerController", function () { + var mockScope, + mockNow, + controller; + + function fireWatch(expr, value) { + mockScope.$watch.calls.forEach(function (call) { + if (call.args[0] === expr) { + call.args[1](value); + } + }); + } + + beforeEach(function () { + mockScope = jasmine.createSpyObj( + "$scope", + [ "$apply", "$watch", "$watchCollection" ] + ); + mockScope.ngModel = {}; + mockScope.field = "testField"; + mockNow = jasmine.createSpy('now'); + controller = new DateTimePickerController(mockScope, mockNow); + }); + + it("watches the model that was passed in", function () { + expect(mockScope.$watch).toHaveBeenCalledWith( + "ngModel[field]", + jasmine.any(Function) + ); + }); + + + }); + } +); diff --git a/platform/commonUI/general/test/directives/MCTClickElsewhereSpec.js b/platform/commonUI/general/test/directives/MCTClickElsewhereSpec.js new file mode 100644 index 0000000000..9fa17763fe --- /dev/null +++ b/platform/commonUI/general/test/directives/MCTClickElsewhereSpec.js @@ -0,0 +1,84 @@ +/***************************************************************************** + * 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,describe,it,expect,beforeEach,jasmine*/ + +define( + ["../../src/directives/MCTClickElsewhere"], + function (MCTClickElsewhere) { + "use strict"; + + var JQLITE_METHODS = [ "on", "off", "find", "parent" ]; + + describe("The mct-click-elsewhere directive", function () { + var mockDocument, + mockScope, + mockElement, + testAttrs, + mockBody, + mockParentEl, + testRect, + mctClickElsewhere; + + function testEvent(x, y) { + return { + pageX: x, + pageY: y, + preventDefault: jasmine.createSpy("preventDefault") + }; + } + + beforeEach(function () { + mockDocument = + jasmine.createSpyObj("$document", JQLITE_METHODS); + mockScope = + jasmine.createSpyObj("$scope", [ "$eval", "$apply", "$on" ]); + mockElement = + jasmine.createSpyObj("element", JQLITE_METHODS); + mockBody = + jasmine.createSpyObj("body", JQLITE_METHODS); + mockParentEl = + jasmine.createSpyObj("parent", ["getBoundingClientRect"]); + + testAttrs = { + mctClickElsewhere: "some Angular expression" + }; + testRect = { + left: 20, + top: 42, + width: 60, + height: 75 + }; + + mockDocument.find.andReturn(mockBody); + + mctClickElsewhere = new MCTClickElsewhere(mockDocument); + mctClickElsewhere.link(mockScope, mockElement, testAttrs); + }); + + it("is valid as an attribute", function () { + expect(mctClickElsewhere.restrict).toEqual("A"); + }); + + + }); + } +); diff --git a/platform/commonUI/general/test/directives/MCTPopupSpec.js b/platform/commonUI/general/test/directives/MCTPopupSpec.js new file mode 100644 index 0000000000..94fd3f0d0e --- /dev/null +++ b/platform/commonUI/general/test/directives/MCTPopupSpec.js @@ -0,0 +1,105 @@ +/***************************************************************************** + * 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,describe,it,expect,beforeEach,jasmine*/ + +define( + ["../../src/directives/MCTPopup"], + function (MCTPopup) { + "use strict"; + + var JQLITE_METHODS = [ "on", "off", "find", "parent", "css", "append" ]; + + describe("The mct-popup directive", function () { + var testWindow, + mockDocument, + mockCompile, + mockScope, + mockElement, + testAttrs, + mockBody, + mockTransclude, + mockParentEl, + testRect, + mctPopup; + + function testEvent(x, y) { + return { + pageX: x, + pageY: y, + preventDefault: jasmine.createSpy("preventDefault") + }; + } + + beforeEach(function () { + testWindow = + { innerWidth: 600, innerHeight: 300 }; + mockDocument = + jasmine.createSpyObj("$document", JQLITE_METHODS); + mockCompile = + jasmine.createSpy("$compile"); + mockScope = + jasmine.createSpyObj("$scope", [ "$eval", "$apply", "$on" ]); + mockElement = + jasmine.createSpyObj("element", JQLITE_METHODS); + mockBody = + jasmine.createSpyObj("body", JQLITE_METHODS); + mockTransclude = + jasmine.createSpy("transclude"); + mockParentEl = + jasmine.createSpyObj("parent", ["getBoundingClientRect"]); + + testAttrs = { + mctClickElsewhere: "some Angular expression" + }; + testRect = { + left: 20, + top: 42, + width: 60, + height: 75 + }; + + mockDocument.find.andReturn(mockBody); + mockCompile.andReturn(jasmine.createSpy()); + mockCompile().andCallFake(function () { + return jasmine.createSpyObj("newElement", JQLITE_METHODS); + }); + mockElement.parent.andReturn([mockParentEl]); + mockParentEl.getBoundingClientRect.andReturn(testRect); + + mctPopup = new MCTPopup(testWindow, mockDocument, mockCompile); + mctPopup.link( + mockScope, + mockElement, + testAttrs, + null, + mockTransclude + ); + }); + + it("is valid as an element", function () { + expect(mctPopup.restrict).toEqual("E"); + }); + + + }); + } +); diff --git a/platform/commonUI/general/test/suite.json b/platform/commonUI/general/test/suite.json index 38f8a447ee..1427d70f3a 100644 --- a/platform/commonUI/general/test/suite.json +++ b/platform/commonUI/general/test/suite.json @@ -3,6 +3,7 @@ "controllers/BottomBarController", "controllers/ClickAwayController", "controllers/ContextMenuController", + "controllers/DateTimePickerController", "controllers/GetterSetterController", "controllers/SelectorController", "controllers/SplitPaneController", @@ -10,8 +11,10 @@ "controllers/ToggleController", "controllers/TreeNodeController", "controllers/ViewSwitcherController", + "directives/MCTClickElsewhere", "directives/MCTContainer", "directives/MCTDrag", + "directives/MCTPopup", "directives/MCTResize", "directives/MCTScroll", "services/UrlService",