1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | Object.defineProperty(exports, "__esModule", { value: true });
|
18 | const tree_model_1 = require("./tree-model");
|
19 | const objects_1 = require("../../common/objects");
|
20 | const chai_1 = require("chai");
|
21 | const tree_test_container_1 = require("./test/tree-test-container");
|
22 | const mock_selectable_tree_model_1 = require("./test/mock-selectable-tree-model");
|
23 | const tree_expansion_1 = require("./tree-expansion");
|
24 | describe('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 |
|
\ | No newline at end of file |