mirror of
https://github.com/nasa/openmct.git
synced 2024-12-26 00:01:05 +00:00
d1e1ba1c66
Squashes #1103, fixes #1047. Squashed commit of the following: commit0e060f174d
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Fri Jul 29 14:55:34 2016 -0700 [Frontend] Added button to .s-button Fixes #1047 commit9f74395a79
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Fri Jul 29 14:43:36 2016 -0700 [Frontend] Fixing problems from circleci Fixes #1047 commit7278c9534c
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Fri Jul 29 14:37:21 2016 -0700 [Frontend] CSS fixes for s-status classes Fixes #1047 Fixed .s-status-editing and s-status-pending; commit4606d617d1
Merge:d5bff55
59436f7
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Fri Jul 29 13:58:51 2016 -0700 Merge remote-tracking branch 'origin/master' into frontend-1047 commitd5bff555e0
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 19:09:33 2016 -0700 [Frontend] Updated glyphs used by plot view switcher Fixes #1047 commitb72d82baef
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 19:09:00 2016 -0700 [Frontend] Tree styles in left pane and selector-list Fixes #1047 commitaf36b9996d
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 18:32:34 2016 -0700 [Frontend] Form validation styling Fixes #1047 <mct-form> must now include class 'validates' to display validation glyph icons; removed 'no-validate' from markup; cleaned up validation scss; commit69dc893b4b
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 17:11:52 2016 -0700 [Frontend] Glyphs to classes, mobile Fixes #1047 Fixes and enhancements for mobile, particularly in tree; Removed `display: inline-block` from containerSubtle mixin; commit7bca18b186
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 11:36:19 2016 -0700 [Frontend] Rename .s-menu-btn, remove unused Fixes #1047 .s-menu-btn > .s-menu-button; .create-btn > .create-button; removed unused l-btn, t-btn, t-btns-zoom from markup commit5d229198b7
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 11:25:36 2016 -0700 [Frontend] Rename .s-clickable-icon to .s-icon-button Fixes #1047 commit36479e2e8b
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 11:20:30 2016 -0700 [Frontend] Rename .s-btn to .s-button Fixes #1047 commit89e4f06de9
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 11:12:07 2016 -0700 [Frontend] Apply clickable-icon class Fixes #1047 commite65ca1cb8b
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Thu Jul 28 10:52:35 2016 -0700 [Frontend] Updated icons Fixes #1047 - Clock, timer, plots updated commit3e7eb98ac2
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Wed Jul 27 18:05:06 2016 -0700 [Frontend] Standardizing styles Fixes #1047 - Finessing mini-tab and making able to control per theme; s-clickable and s-toggle-icon classes cleaned up commit18e08074a8
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Wed Jul 27 16:33:25 2016 -0700 [Frontend] Tweaks to sass code Fixes #1047 - Splitter and mini-tab-icon elements commit44fda8d68f
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Wed Jul 27 09:24:53 2016 -0700 [Frontend] Multiple UI fixes and tweaks Fixes #1047 mini-tabs, splitters and bg-splash updated; moved position of Inspector collapse mini-tab to allow position transition; splitter-sm class added for Timelines; commit2aee8bc0d8
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jul 26 15:53:32 2016 -0700 [Frontend] Updated splash image Fixes #1047 commit624f09777f
Merge:ce7591f
4d2f159
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jul 26 15:02:55 2016 -0700 Merge remote-tracking branch 'origin/master' into frontend-1047 commitce7591f642
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jul 26 11:22:23 2016 -0700 [Frontend] Fixed clock indicator Fixes #1047 Restored no-collapse and float-right properties; commit5324c8edba
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 25 18:14:38 2016 -0700 [Frontend] New font and project file Fixes #1047 New font files that were missed in last commit; updated icomoon proj file; fixed missing char codes in glyphs.scss; commita3b2628883
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 25 17:54:00 2016 -0700 [Frontend] Revised and new icon art Fixes #1047 New icons for overlay and stacked plots; revised art and new description for Fixed Position object; commit8a41c6dbc7
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 25 17:52:41 2016 -0700 [Frontend] Removing glyph definitions Fixes #1047 Updated comment commiteb293b21eb
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 25 11:56:18 2016 -0700 [Frontend] Removing glyph definitions Fixes #1047 Removed commented code commitd8b1fb7781
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 25 11:17:45 2016 -0700 [Frontend] Removing glyph definitions; updating tests Fixes #1047 Search and removal of "glyph" definitions in bundle and other JS files; updating tests accordingly; commit650fbcc921
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 25 10:20:33 2016 -0700 [Frontend] Removing glyph definitions; updating tests Fixes #1047 Search and removal of "glyph" definitions in bundle and other JS files; updating tests accordingly; commit574b8bd5c1
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Fri Jul 22 19:11:56 2016 -0700 [Frontend] Updated tests for glyph refactoring Fixes #1047 Fixing test cases commitdd84177441
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Fri Jul 22 18:47:45 2016 -0700 [Frontend] Updated tests and examples for glyph refactoring Fixes #1047 WIP: Fixing test cases: fixed test in Timers that was expecting glyph return; commit2231f8e124
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 17:45:20 2016 -0700 [Frontend] Updated tests for glyph refactoring Fixes #1047 Fixing test cases: fixed test in Timers that was expecting glyph return; commitae59ecfa97
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 17:38:45 2016 -0700 [Frontend] Fixed style Fixes #1047 WIP: fixed line-height issue for t-item-icon class commitd43bff1445
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 17:07:49 2016 -0700 [Frontend] Fixed colors Fixes #1047 WIP: fixed colors and style defs related to clickable icons commitc2db6f8805
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 16:32:17 2016 -0700 [Frontend] Fixed colors Fixes #1047 WIP: fixed colors related to changes to btnSubtle mixin; new constants for clickable icons commita4753c44d1
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 15:23:58 2016 -0700 [Frontend] Added new icon-brackets to symbols font Fixes #1047 WIP commit2704640b94
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 15:11:28 2016 -0700 [Frontend] Normalize color constants Fixes #1047 Normalize color constant values for themes; consolidated and cleaned up btn-related mixins; fixed hover color issues commit421286c7e4
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 14:10:13 2016 -0700 [Frontend] Convert new Fixed Position Display from glyphs Fixes #1047 WIP commita4111f3855
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 14:07:38 2016 -0700 [Frontend] Refactoring Timeline glyphs, s-btn fixes Fixes #1047 WIP: Timeline-related glyph refactoring; s-btn styles and hover color fixes commit883f999215
Merge:9d9cabb
14f1a1f
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jul 21 08:53:23 2016 -0700 Merge remote-tracking branch 'origin/master' into frontend-1047 commit9d9cabb760
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jul 19 16:20:20 2016 -0700 [Frontend] Glyph refactoring Fixes #1047 WIP: search, toolbar buttons; mods to flex archetypes commit28b663ce41
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 18 14:58:40 2016 -0700 [Frontend] Glyph-related style changes to toolbars and buttons Fixes #1047 Glyph refactoring WIP for toolbar buttons; Timeline glyph refactoring continued commita9326f572f
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 18 13:36:45 2016 -0700 [Frontend] Glyph-related style changes to Timelines Fixes #1047 Timeline glyph refactoring; Resource Graph icons in swimlanes now display grayed-out version when not added to the Resource Graph; minor color tweaks commitd6e1737803
Merge:88054e5
6176ca2
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Mon Jul 18 10:29:32 2016 -0700 [Frontend] Merge master into frontend-1047 Fixes #1047 Resolved conflict in icomoon.json file commit88054e5e8e
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jun 30 16:55:40 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In progress: significant mods to pane collapse/expand buttons and symbols, minor tweaks to splitter look, limits glyph definitions commit7c47343f5c
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jun 30 16:52:21 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In progress: updated font files glyphs, mostly for pane collapse icons commitfd00bdce54
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jun 30 12:20:55 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In progress: search menu commit272b4b649e
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jun 30 12:11:25 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In progress: moved limits classes out of _contants and into _glyphs; timers, entanglement context menu items, form validation, date picker. commit95d26e6fe7
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Wed Jun 29 14:18:12 2016 -0700 [Frontend] Refactoring glyphs to classes Fixes #1047 In-progress; limits commit26b30d96db
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jun 28 17:16:18 2016 -0700 [Frontend] Refactoring glyphs to classes Fixes #1047 In-progress; overlay close, search inputs, messages and message banners, ui-symbol removal in-progress. commit4e2a01ad85
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jun 28 16:21:05 2016 -0700 [Frontend] Refactoring glyphs to classes Fixes #1047 In-progress; .labeled added to .s-btn, removed .s-icon-btn commit521db3c3fe
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jun 28 16:10:54 2016 -0700 [Frontend] Refactoring glyphs to classes Fixes #1047 In-progress; plot options, imagery buttons, cleanups in buttons.scss, edit-action buttons, .s-btn .no-label class added. commit8bb8db69e6
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jun 28 14:47:52 2016 -0700 [Frontend] Refactoring glyphs to classes Fixes #1047 In-progress; indicators, notifications, actions, tests commit53ed0bfb22
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Jun 27 17:01:45 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In progress, really: view icons, timer/clock commit47dc7f2f6b
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Jun 27 16:13:31 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In progress: grid items commit2bd34f71be
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Jun 27 15:00:46 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 Context menus and associated actions, custom checkboxes, tree item being edited commitb561d4f60e
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Jun 27 14:27:56 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In-progess: glyphs.scss now uses $vars to allow other scss to use a var instead of string literals; commit0cf4089620
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Jun 27 14:13:59 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In-progess: tree-labels, unknown objects, object header commit46cae10905
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Jun 27 11:41:06 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In-progess, menus and Create menu fixes commitfe3097707f
Merge:7d69ae4
652a50c
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Jun 27 11:20:55 2016 -0700 Merge remote-tracking branch 'origin/master' into frontend-1047 commit7d69ae401b
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jun 23 15:59:56 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In-progress, converting types, mods to Create Menu template commit18d9f3d6b2
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jun 23 15:14:22 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 Very much In-progess: convert some controls; commite93a90a782
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jun 23 11:28:07 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 Very much In-progess, classes for all symbols added to glyphs.scss; .menu cleaned up; commitdc670b22a6
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Thu Jun 23 08:55:27 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 Very much In-progess, "icon-" selector, browse bar buttons commit8b29ccf3af
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Wed Jun 22 23:15:24 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 Very much In-progess, s-btn and s-btn-menu refactoring commitf574ffed16
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Wed Jun 22 14:37:34 2016 -0700 [Frontend] Refactoring glyphs to classes fixes #1047 In-progess, e900 > e904 commitbc62ee4565
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Wed Jun 22 13:28:15 2016 -0700 [Frontend] Complete revamp of unicodes fixes #1047 New font files; no re-mapping yet in the app. commit614f0c6e9f
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Wed Jun 22 13:23:18 2016 -0700 [Frontend] Complete revamp of unicodes fixes #1047 Moved all glyphs into PUA area of font, and re-organized by category. commit47bd4031d5
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jun 21 18:39:48 2016 -0700 [Frontend] Renaming symbols font files Fixes #1047 - Modified sass to point to renamed font files; - Added new 12px symbols font files to sass; commit22a51d6bbb
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jun 21 18:22:33 2016 -0700 [Frontend] Updating Icomoon project files Fixes #1047 - Renamed main project file; - Added new 12px symbols project file; commit13ded2fd84
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jun 21 18:19:27 2016 -0700 [Frontend] Added new 12px symbols font files Fixes #1047 commitaef5660dfd
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Jun 21 18:16:56 2016 -0700 [Frontend] Renaming symbols font files Fixes #1047
305 lines
11 KiB
JavaScript
305 lines
11 KiB
JavaScript
/*****************************************************************************
|
|
* Open MCT, Copyright (c) 2014-2016, United States Government
|
|
* as represented by the Administrator of the National Aeronautics and Space
|
|
* Administration. All rights reserved.
|
|
*
|
|
* Open MCT 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 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 describe,beforeEach,jasmine,it,expect*/
|
|
|
|
define([
|
|
'../../src/ui/TreeView',
|
|
'zepto'
|
|
], function (TreeView, $) {
|
|
|
|
describe("TreeView", function () {
|
|
var mockGestureService,
|
|
mockGestureHandle,
|
|
mockDomainObject,
|
|
mockMutation,
|
|
mockUnlisten,
|
|
testCapabilities,
|
|
treeView;
|
|
|
|
function makeMockDomainObject(id, model, capabilities) {
|
|
var mockDomainObj = jasmine.createSpyObj(
|
|
'domainObject-' + id,
|
|
[
|
|
'getId',
|
|
'getModel',
|
|
'getCapability',
|
|
'hasCapability',
|
|
'useCapability'
|
|
]
|
|
);
|
|
mockDomainObj.getId.andReturn(id);
|
|
mockDomainObj.getModel.andReturn(model);
|
|
mockDomainObj.hasCapability.andCallFake(function (c) {
|
|
return !!(capabilities[c]);
|
|
});
|
|
mockDomainObj.getCapability.andCallFake(function (c) {
|
|
return capabilities[c];
|
|
});
|
|
mockDomainObj.useCapability.andCallFake(function (c) {
|
|
return capabilities[c] && capabilities[c].invoke();
|
|
});
|
|
return mockDomainObj;
|
|
}
|
|
|
|
beforeEach(function () {
|
|
mockGestureService = jasmine.createSpyObj(
|
|
'gestureService',
|
|
['attachGestures']
|
|
);
|
|
|
|
mockGestureHandle = jasmine.createSpyObj('gestures', ['destroy']);
|
|
|
|
mockGestureService.attachGestures.andReturn(mockGestureHandle);
|
|
|
|
mockMutation = jasmine.createSpyObj('mutation', ['listen']);
|
|
mockUnlisten = jasmine.createSpy('unlisten');
|
|
mockMutation.listen.andReturn(mockUnlisten);
|
|
|
|
testCapabilities = { mutation: mockMutation };
|
|
|
|
mockDomainObject =
|
|
makeMockDomainObject('parent', {}, testCapabilities);
|
|
|
|
treeView = new TreeView(mockGestureService);
|
|
});
|
|
|
|
describe("elements", function () {
|
|
var elements;
|
|
|
|
beforeEach(function () {
|
|
elements = treeView.elements();
|
|
});
|
|
|
|
it("is an unordered list", function () {
|
|
expect(elements[0].tagName.toLowerCase())
|
|
.toEqual('ul');
|
|
});
|
|
});
|
|
|
|
describe("model", function () {
|
|
var mockComposition;
|
|
|
|
function makeGenericCapabilities() {
|
|
var mockStatus =
|
|
jasmine.createSpyObj('status', ['listen', 'list']);
|
|
|
|
mockStatus.list.andReturn([]);
|
|
|
|
return {
|
|
context: jasmine.createSpyObj('context', ['getPath']),
|
|
type: jasmine.createSpyObj('type', ['getCssClass']),
|
|
location: jasmine.createSpyObj('location', ['isLink']),
|
|
mutation: jasmine.createSpyObj('mutation', ['listen']),
|
|
status: mockStatus
|
|
};
|
|
}
|
|
|
|
function waitForCompositionCallback() {
|
|
var calledBack = false;
|
|
testCapabilities.composition.invoke().then(function () {
|
|
calledBack = true;
|
|
});
|
|
waitsFor(function () {
|
|
return calledBack;
|
|
});
|
|
}
|
|
|
|
beforeEach(function () {
|
|
mockComposition = ['a', 'b', 'c'].map(function (id) {
|
|
var testCaps = makeGenericCapabilities(),
|
|
mockChild =
|
|
makeMockDomainObject(id, {}, testCaps);
|
|
|
|
testCaps.context.getPath
|
|
.andReturn([mockDomainObject, mockChild]);
|
|
|
|
return mockChild;
|
|
});
|
|
|
|
testCapabilities.composition =
|
|
jasmine.createSpyObj('composition', ['invoke']);
|
|
testCapabilities.composition.invoke
|
|
.andReturn(Promise.resolve(mockComposition));
|
|
|
|
treeView.model(mockDomainObject);
|
|
waitForCompositionCallback();
|
|
});
|
|
|
|
it("adds one node per composition element", function () {
|
|
expect(treeView.elements()[0].childElementCount)
|
|
.toEqual(mockComposition.length);
|
|
});
|
|
|
|
it("listens for mutation", function () {
|
|
expect(testCapabilities.mutation.listen)
|
|
.toHaveBeenCalledWith(jasmine.any(Function));
|
|
});
|
|
|
|
describe("when mutation occurs", function () {
|
|
beforeEach(function () {
|
|
mockComposition.pop();
|
|
testCapabilities.mutation.listen
|
|
.mostRecentCall.args[0](mockDomainObject.getModel());
|
|
waitForCompositionCallback();
|
|
});
|
|
|
|
it("continues to show one node per composition element", function () {
|
|
expect(treeView.elements()[0].childElementCount)
|
|
.toEqual(mockComposition.length);
|
|
});
|
|
});
|
|
|
|
describe("when replaced with a non-compositional domain object", function () {
|
|
beforeEach(function () {
|
|
delete testCapabilities.composition;
|
|
treeView.model(mockDomainObject);
|
|
});
|
|
|
|
it("stops listening for mutation", function () {
|
|
expect(mockUnlisten).toHaveBeenCalled();
|
|
});
|
|
|
|
it("removes all tree nodes", function () {
|
|
expect(treeView.elements()[0].childElementCount)
|
|
.toEqual(0);
|
|
});
|
|
});
|
|
|
|
describe("when selection state changes", function () {
|
|
var selectionIndex = 1;
|
|
|
|
beforeEach(function () {
|
|
treeView.value(mockComposition[selectionIndex]);
|
|
});
|
|
|
|
it("communicates selection state to an appropriate node", function () {
|
|
var selected = $(treeView.elements()[0]).find('.selected');
|
|
expect(selected.length).toEqual(1);
|
|
});
|
|
});
|
|
|
|
describe("when a context-less object is selected", function () {
|
|
beforeEach(function () {
|
|
var testCaps = makeGenericCapabilities(),
|
|
mockDomainObj =
|
|
makeMockDomainObject('xyz', {}, testCaps);
|
|
delete testCaps.context;
|
|
treeView.value(mockDomainObj);
|
|
});
|
|
|
|
it("clears all selection state", function () {
|
|
var selected = $(treeView.elements()[0]).find('.selected');
|
|
expect(selected.length).toEqual(0);
|
|
});
|
|
});
|
|
|
|
describe("when children contain children", function () {
|
|
beforeEach(function () {
|
|
var newCapabilities = makeGenericCapabilities(),
|
|
gcCapabilities = makeGenericCapabilities(),
|
|
mockNewChild =
|
|
makeMockDomainObject('d', {}, newCapabilities),
|
|
mockGrandchild =
|
|
makeMockDomainObject('gc', {}, gcCapabilities),
|
|
calledBackInner = false;
|
|
|
|
newCapabilities.composition =
|
|
jasmine.createSpyObj('composition', ['invoke']);
|
|
newCapabilities.composition.invoke
|
|
.andReturn(Promise.resolve([mockGrandchild]));
|
|
mockComposition.push(mockNewChild);
|
|
|
|
newCapabilities.context.getPath.andReturn([
|
|
mockDomainObject,
|
|
mockNewChild
|
|
]);
|
|
gcCapabilities.context.getPath.andReturn([
|
|
mockDomainObject,
|
|
mockNewChild,
|
|
mockGrandchild
|
|
]);
|
|
|
|
testCapabilities.mutation.listen
|
|
.mostRecentCall.args[0](mockDomainObject);
|
|
waitForCompositionCallback();
|
|
runs(function () {
|
|
// Select the innermost object to force expansion,
|
|
// such that we can verify the subtree is present.
|
|
treeView.value(mockGrandchild);
|
|
newCapabilities.composition.invoke().then(function () {
|
|
calledBackInner = true;
|
|
});
|
|
});
|
|
waitsFor(function () {
|
|
return calledBackInner;
|
|
});
|
|
});
|
|
|
|
it("creates inner trees", function () {
|
|
expect($(treeView.elements()[0]).find('ul').length)
|
|
.toEqual(1);
|
|
});
|
|
});
|
|
|
|
describe("when status changes", function () {
|
|
var testStatuses;
|
|
|
|
beforeEach(function () {
|
|
var mockStatus = mockComposition[1].getCapability('status');
|
|
|
|
testStatuses = ['foo'];
|
|
|
|
mockStatus.list.andReturn(testStatuses);
|
|
mockStatus.listen.mostRecentCall.args[0](testStatuses);
|
|
});
|
|
|
|
it("reflects the status change in the tree", function () {
|
|
expect($(treeView.elements()).find('.s-status-foo').length)
|
|
.toEqual(1);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("observe", function () {
|
|
var mockCallback,
|
|
unobserve;
|
|
|
|
beforeEach(function () {
|
|
mockCallback = jasmine.createSpy('callback');
|
|
unobserve = treeView.observe(mockCallback);
|
|
});
|
|
|
|
it("notifies listeners when value is changed", function () {
|
|
treeView.value(mockDomainObject);
|
|
expect(mockCallback).toHaveBeenCalledWith(mockDomainObject);
|
|
});
|
|
|
|
it("does not notify listeners when deactivated", function () {
|
|
unobserve();
|
|
treeView.value(mockDomainObject);
|
|
expect(mockCallback).not.toHaveBeenCalled();
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|