UNPKG

7.52 kBJavaScriptView Raw
1"use strict";
2// *****************************************************************************
3// Copyright (C) 2018 TypeFox and others.
4//
5// This program and the accompanying materials are made available under the
6// terms of the Eclipse Public License v. 2.0 which is available at
7// http://www.eclipse.org/legal/epl-2.0.
8//
9// This Source Code may also be made available under the following Secondary
10// Licenses when the conditions for such availability set forth in the Eclipse
11// Public License v. 2.0 are satisfied: GNU General Public License, version 2
12// with the GNU Classpath Exception which is available at
13// https://www.gnu.org/software/classpath/license.html.
14//
15// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16// *****************************************************************************
17Object.defineProperty(exports, "__esModule", { value: true });
18const tree_model_1 = require("./tree-model");
19const objects_1 = require("../../common/objects");
20const chai_1 = require("chai");
21const tree_test_container_1 = require("./test/tree-test-container");
22const mock_selectable_tree_model_1 = require("./test/mock-selectable-tree-model");
23const tree_expansion_1 = require("./tree-expansion");
24describe('Selectable Tree', () => {
25 let model;
26 function assertNodeRetrieval(method, sequence) {
27 for (const expectedNodeId of sequence) {
28 const actualNode = method();
29 const expectedNode = retrieveNode(expectedNodeId);
30 (0, chai_1.expect)(actualNode === null || actualNode === void 0 ? void 0 : actualNode.id).to.be.equal(expectedNode.id);
31 model.addSelection(expectedNode);
32 }
33 }
34 function assertNodeSelection(method, sequence) {
35 for (const expectedNodeId of sequence) {
36 method();
37 const node = retrieveNode(expectedNodeId);
38 (0, chai_1.expect)(node.selected).to.be.true;
39 }
40 }
41 describe('Get and Set Next Nodes Methods', () => {
42 const uncollapsedSelectionOrder = ['1.1', '1.1.1', '1.1.2', '1.2', '1.2.1', '1.2.1.1', '1.2.1.2', '1.2.2', '1.2.3', '1.3'];
43 const collapsedSelectionOrder = ['1.1', '1.2', '1.2.1', '1.2.2', '1.2.3', '1.3'];
44 beforeEach(() => {
45 model = createTreeModel();
46 model.root = mock_selectable_tree_model_1.MockSelectableTreeModel.HIERARCHICAL_MOCK_ROOT();
47 model.addSelection(retrieveNode('1'));
48 });
49 it('`getNextNode()` should select each node in sequence (uncollapsed)', done => {
50 assertNodeRetrieval(model.getNextNode.bind(model), uncollapsedSelectionOrder);
51 done();
52 });
53 it('`getNextNode()` should select each node in sequence (collapsed)', done => {
54 collapseNode('1.1', '1.2.1');
55 assertNodeRetrieval(model.getNextNode.bind(model), uncollapsedSelectionOrder);
56 done();
57 });
58 it('`getNextSelectableNode()` should select each node in sequence (uncollapsed)', done => {
59 assertNodeRetrieval(model.getNextSelectableNode.bind(model), uncollapsedSelectionOrder);
60 done();
61 });
62 it('`getNextSelectableNode()` should select each node in sequence (collapsed)', done => {
63 collapseNode('1.1', '1.2.1');
64 assertNodeRetrieval(model.getNextSelectableNode.bind(model), collapsedSelectionOrder);
65 done();
66 });
67 it('`selectNext()` should select each node in sequence (uncollapsed)', done => {
68 assertNodeSelection(model.selectNext.bind(model), uncollapsedSelectionOrder);
69 done();
70 });
71 it('`selectNext()` should select each node in sequence (collapsed)', done => {
72 collapseNode('1.1', '1.2.1');
73 assertNodeSelection(model.selectNext.bind(model), uncollapsedSelectionOrder);
74 done();
75 });
76 it('`selectNextNode()` should select each node in sequence (uncollapsed)', done => {
77 assertNodeSelection(model.selectNextNode.bind(model), uncollapsedSelectionOrder);
78 done();
79 });
80 it('`selectNextNode()` should select each node in sequence (collapsed)', done => {
81 collapseNode('1.1', '1.2.1');
82 assertNodeSelection(model.selectNextNode.bind(model), collapsedSelectionOrder);
83 done();
84 });
85 });
86 describe('Get and Set Previous Nodes Methods', () => {
87 const uncollapsedSelectionOrder = ['1.2.3', '1.2.2', '1.2.1.2', '1.2.1.1', '1.2.1', '1.2', '1.1.2', '1.1.1', '1.1'];
88 const collapsedSelectionOrder = ['1.2.3', '1.2.2', '1.2.1', '1.2', '1.1'];
89 beforeEach(() => {
90 model = createTreeModel();
91 model.root = mock_selectable_tree_model_1.MockSelectableTreeModel.HIERARCHICAL_MOCK_ROOT();
92 model.addSelection(retrieveNode('1.3'));
93 });
94 it('`getPrevNode()` should select each node in reverse sequence (uncollapsed)', done => {
95 assertNodeRetrieval(model.getPrevNode.bind(model), uncollapsedSelectionOrder);
96 done();
97 });
98 it('`getPrevNode()` should select each node in reverse sequence (collapsed)', done => {
99 collapseNode('1.1', '1.2.1');
100 assertNodeRetrieval(model.getPrevNode.bind(model), uncollapsedSelectionOrder);
101 done();
102 });
103 it('`getPrevSelectableNode()` should select each node in reverse sequence (uncollapsed)', done => {
104 assertNodeRetrieval(model.getPrevSelectableNode.bind(model), uncollapsedSelectionOrder);
105 done();
106 });
107 it('`getPrevSelectableNode()` should select each node in reverse sequence (collapsed)', done => {
108 collapseNode('1.1', '1.2.1');
109 assertNodeRetrieval(model.getPrevSelectableNode.bind(model), collapsedSelectionOrder);
110 done();
111 });
112 it('`selectPrev()` should select each node in reverse sequence (uncollapsed)', done => {
113 assertNodeSelection(model.selectPrev.bind(model), uncollapsedSelectionOrder);
114 done();
115 });
116 it('`selectPrev()` should select each node in reverse sequence (collapsed)', done => {
117 collapseNode('1.1', '1.2.1');
118 assertNodeSelection(model.selectPrev.bind(model), uncollapsedSelectionOrder);
119 done();
120 });
121 it('`selectPrevNode()` should select each node in reverse sequence (uncollapsed)', done => {
122 assertNodeSelection(model.selectPrevNode.bind(model), uncollapsedSelectionOrder);
123 done();
124 });
125 it('`selectPrevNode()` should select each node in reverse sequence (collapsed)', done => {
126 collapseNode('1.1', '1.2.1');
127 assertNodeSelection(model.selectPrevNode.bind(model), collapsedSelectionOrder);
128 done();
129 });
130 });
131 const findNode = (id) => model.getNode(id);
132 function createTreeModel() {
133 const container = (0, tree_test_container_1.createTreeTestContainer)();
134 return container.get(tree_model_1.TreeModel);
135 }
136 function retrieveNode(id) {
137 const readonlyNode = model.getNode(id);
138 return readonlyNode;
139 }
140 function collapseNode(...ids) {
141 ids.map(findNode).filter(objects_1.notEmpty).filter(tree_expansion_1.ExpandableTreeNode.is).forEach(node => {
142 model.collapseNode(node);
143 (0, chai_1.expect)(node).to.have.property('expanded', false);
144 });
145 }
146});
147//# sourceMappingURL=tree-selectable.spec.js.map
\No newline at end of file