Skip to content

Commit 9b789c8

Browse files
authored
Merge pull request #3674 from ilandikov/test/already-added-items
test: test adding to `HtmlQueryResultsRenderer.alreadyAddedItems`
2 parents 728e613 + 04c20e3 commit 9b789c8

4 files changed

+282
-3
lines changed

src/Renderer/HtmlQueryResultsRenderer.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,14 @@ export class HtmlQueryResultsRenderer {
264264
} else {
265265
await this.addListItem(listItem, listItemIndex, listItem.children);
266266
}
267+
268+
// The children of this item will be added thanks to recursion and the fact that we always render all children currently
267269
this.addedListItems.add(listItem);
268270

269-
for (const childTask of listItem.children) {
270-
this.addedListItems.add(childTask);
271-
}
271+
// We think this code may be needed in future, we have been unable to write a failing test for it
272+
// for (const childTask of listItem.children) {
273+
// this.addedListItems.add(childTask);
274+
// }
272275
}
273276
}
274277

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<!--
2+
- [ ] #task parent task
3+
- [ ] #task child task 1
4+
- [ ] #task grandchild 1
5+
- [ ] #task child task 2
6+
- [ ] #task grandchild 2
7+
- [ ] #task sibling
8+
-->
9+
10+
<div>
11+
<button class="plugin-tasks-copy-button">Copy results</button>
12+
<ul class="contains-task-list plugin-tasks-query-result tasks-layout-hide-urgency">
13+
<li
14+
class="task-list-item plugin-tasks-list-item"
15+
data-task-priority="normal"
16+
data-task=""
17+
data-line="0"
18+
data-task-status-name="Todo"
19+
data-task-status-type="TODO">
20+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="0" />
21+
<span class="tasks-list-text">
22+
<span class="task-description"><span>#task grandchild 2</span></span>
23+
</span>
24+
<span class="task-extras">
25+
<span class="tasks-backlink">
26+
(
27+
<a rel="noopener" target="_blank" class="internal-link">inheritance_1parent2children2grandchildren1sibling</a>
28+
)
29+
</span>
30+
<a class="tasks-edit" title="Edit task" href="#"></a>
31+
</span>
32+
</li>
33+
<li
34+
class="task-list-item plugin-tasks-list-item"
35+
data-task-priority="normal"
36+
data-task=""
37+
data-line="1"
38+
data-task-status-name="Todo"
39+
data-task-status-type="TODO">
40+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="1" />
41+
<span class="tasks-list-text">
42+
<span class="task-description"><span>#task grandchild 1</span></span>
43+
</span>
44+
<span class="task-extras">
45+
<span class="tasks-backlink">
46+
(
47+
<a rel="noopener" target="_blank" class="internal-link">inheritance_1parent2children2grandchildren1sibling</a>
48+
)
49+
</span>
50+
<a class="tasks-edit" title="Edit task" href="#"></a>
51+
</span>
52+
</li>
53+
<li
54+
class="task-list-item plugin-tasks-list-item"
55+
data-task-priority="normal"
56+
data-task=""
57+
data-line="2"
58+
data-task-status-name="Todo"
59+
data-task-status-type="TODO">
60+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="2" />
61+
<span class="tasks-list-text">
62+
<span class="task-description"><span>#task parent task</span></span>
63+
</span>
64+
<span class="task-extras">
65+
<span class="tasks-backlink">
66+
(
67+
<a rel="noopener" target="_blank" class="internal-link">inheritance_1parent2children2grandchildren1sibling</a>
68+
)
69+
</span>
70+
<a class="tasks-edit" title="Edit task" href="#"></a>
71+
</span>
72+
<ul class="contains-task-list plugin-tasks-query-result tasks-layout-hide-urgency">
73+
<li
74+
class="task-list-item plugin-tasks-list-item"
75+
data-task-priority="normal"
76+
data-task=""
77+
data-line="0"
78+
data-task-status-name="Todo"
79+
data-task-status-type="TODO">
80+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="0" />
81+
<span class="tasks-list-text">
82+
<span class="task-description"><span>#task child task 1</span></span>
83+
</span>
84+
<span class="task-extras">
85+
<span class="tasks-backlink">
86+
(
87+
<a rel="noopener" target="_blank" class="internal-link">
88+
inheritance_1parent2children2grandchildren1sibling
89+
</a>
90+
)
91+
</span>
92+
<a class="tasks-edit" title="Edit task" href="#"></a>
93+
</span>
94+
<ul class="contains-task-list plugin-tasks-query-result tasks-layout-hide-urgency"></ul>
95+
</li>
96+
<li
97+
class="task-list-item plugin-tasks-list-item"
98+
data-task-priority="normal"
99+
data-task=""
100+
data-line="1"
101+
data-task-status-name="Todo"
102+
data-task-status-type="TODO">
103+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="1" />
104+
<span class="tasks-list-text">
105+
<span class="task-description"><span>#task child task 2</span></span>
106+
</span>
107+
<span class="task-extras">
108+
<span class="tasks-backlink">
109+
(
110+
<a rel="noopener" target="_blank" class="internal-link">
111+
inheritance_1parent2children2grandchildren1sibling
112+
</a>
113+
)
114+
</span>
115+
<a class="tasks-edit" title="Edit task" href="#"></a>
116+
</span>
117+
<ul class="contains-task-list plugin-tasks-query-result tasks-layout-hide-urgency"></ul>
118+
</li>
119+
</ul>
120+
</li>
121+
</ul>
122+
<div class="task-count">3 tasks</div>
123+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<!--
2+
- [ ] #task parent task
3+
- [ ] #task child task 1
4+
- [ ] #task grandchild 1
5+
- [ ] #task child task 2
6+
- [ ] #task grandchild 2
7+
- [ ] #task sibling
8+
-->
9+
10+
<div>
11+
<button class="plugin-tasks-copy-button">Copy results</button>
12+
<ul class="contains-task-list plugin-tasks-query-result tasks-layout-hide-urgency">
13+
<li
14+
class="task-list-item plugin-tasks-list-item"
15+
data-task-priority="normal"
16+
data-task=""
17+
data-line="0"
18+
data-task-status-name="Todo"
19+
data-task-status-type="TODO">
20+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="0" />
21+
<span class="tasks-list-text">
22+
<span class="task-description"><span>#task parent task</span></span>
23+
</span>
24+
<span class="task-extras">
25+
<span class="tasks-backlink">
26+
(
27+
<a rel="noopener" target="_blank" class="internal-link">inheritance_1parent2children2grandchildren1sibling</a>
28+
)
29+
</span>
30+
<a class="tasks-edit" title="Edit task" href="#"></a>
31+
</span>
32+
<ul class="contains-task-list plugin-tasks-query-result tasks-layout-hide-urgency">
33+
<li
34+
class="task-list-item plugin-tasks-list-item"
35+
data-task-priority="normal"
36+
data-task=""
37+
data-line="0"
38+
data-task-status-name="Todo"
39+
data-task-status-type="TODO">
40+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="0" />
41+
<span class="tasks-list-text">
42+
<span class="task-description"><span>#task child task 1</span></span>
43+
</span>
44+
<span class="task-extras">
45+
<span class="tasks-backlink">
46+
(
47+
<a rel="noopener" target="_blank" class="internal-link">
48+
inheritance_1parent2children2grandchildren1sibling
49+
</a>
50+
)
51+
</span>
52+
<a class="tasks-edit" title="Edit task" href="#"></a>
53+
</span>
54+
<ul class="contains-task-list plugin-tasks-query-result tasks-layout-hide-urgency">
55+
<li
56+
class="task-list-item plugin-tasks-list-item"
57+
data-task-priority="normal"
58+
data-task=""
59+
data-line="0"
60+
data-task-status-name="Todo"
61+
data-task-status-type="TODO">
62+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="0" />
63+
<span class="tasks-list-text">
64+
<span class="task-description"><span>#task grandchild 1</span></span>
65+
</span>
66+
<span class="task-extras">
67+
<span class="tasks-backlink">
68+
(
69+
<a rel="noopener" target="_blank" class="internal-link">
70+
inheritance_1parent2children2grandchildren1sibling
71+
</a>
72+
)
73+
</span>
74+
<a class="tasks-edit" title="Edit task" href="#"></a>
75+
</span>
76+
</li>
77+
</ul>
78+
</li>
79+
<li
80+
class="task-list-item plugin-tasks-list-item"
81+
data-task-priority="normal"
82+
data-task=""
83+
data-line="1"
84+
data-task-status-name="Todo"
85+
data-task-status-type="TODO">
86+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="1" />
87+
<span class="tasks-list-text">
88+
<span class="task-description"><span>#task child task 2</span></span>
89+
</span>
90+
<span class="task-extras">
91+
<span class="tasks-backlink">
92+
(
93+
<a rel="noopener" target="_blank" class="internal-link">
94+
inheritance_1parent2children2grandchildren1sibling
95+
</a>
96+
)
97+
</span>
98+
<a class="tasks-edit" title="Edit task" href="#"></a>
99+
</span>
100+
<ul class="contains-task-list plugin-tasks-query-result tasks-layout-hide-urgency">
101+
<li
102+
class="task-list-item plugin-tasks-list-item"
103+
data-task-priority="normal"
104+
data-task=""
105+
data-line="0"
106+
data-task-status-name="Todo"
107+
data-task-status-type="TODO">
108+
<input class="task-list-item-checkbox" type="checkbox" title="Right-click for options" data-line="0" />
109+
<span class="tasks-list-text">
110+
<span class="task-description"><span>#task grandchild 2</span></span>
111+
</span>
112+
<span class="task-extras">
113+
<span class="tasks-backlink">
114+
(
115+
<a rel="noopener" target="_blank" class="internal-link">
116+
inheritance_1parent2children2grandchildren1sibling
117+
</a>
118+
)
119+
</span>
120+
<a class="tasks-edit" title="Edit task" href="#"></a>
121+
</span>
122+
</li>
123+
</ul>
124+
</li>
125+
</ul>
126+
</li>
127+
</ul>
128+
<div class="task-count">3 tasks</div>
129+
</div>

tests/Renderer/QueryResultsRenderer.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,30 @@ group by function 'level4'
160160
);
161161
await verifyRenderedTasksHTML(allTasks, 'show tree');
162162
});
163+
164+
it('should render grandchildren once under the parent', async () => {
165+
const allTasks = readTasksFromSimulatedFile('inheritance_1parent2children2grandchildren1sibling');
166+
await verifyRenderedTasksHTML(
167+
allTasks,
168+
`
169+
show tree
170+
sort by function task.lineNumber
171+
(description includes grandchild) OR (description includes parent)
172+
`,
173+
);
174+
});
175+
176+
it('should render grandchildren once and on the same level as parent', async () => {
177+
const allTasks = readTasksFromSimulatedFile('inheritance_1parent2children2grandchildren1sibling');
178+
await verifyRenderedTasksHTML(
179+
allTasks,
180+
`
181+
show tree
182+
sort by function reverse task.lineNumber
183+
(description includes grandchild) OR (description includes parent)
184+
`,
185+
);
186+
});
163187
});
164188

165189
describe('QueryResultsRenderer - responding to file edits', () => {

0 commit comments

Comments
 (0)