@@ -3,6 +3,8 @@ import AutoTasks from '../..';
33import { DONE , DUE , KanbanBoard , PROGRESS , UPCOMING } from '../../kanban/board' ;
44import { KanbanSynchroniser } from '../../kanban/synchroniser' ;
55import { DEFAULT_SETTINGS , ISettings } from '../../settings' ;
6+ import { EmojiTaskCollection } from '../../tasks/emoji-collection' ;
7+ import { TaskFactory } from '../../tasks/factory' ;
68import { DUE_DATE_FORMAT } from '../../tasks/task' ;
79import { ObsidianVault } from '../../types' ;
810
@@ -15,6 +17,7 @@ describe('kanban synchroniser', () => {
1517 let plugin : AutoTasks ;
1618 let settings : ISettings ;
1719 let vault : ObsidianVault ;
20+ let taskFactory : TaskFactory ;
1821 let board : KanbanBoard ;
1922
2023 beforeEach ( ( ) => {
@@ -27,15 +30,21 @@ describe('kanban synchroniser', () => {
2730 vault . getFiles = jest . fn ( ) ;
2831 vault . modify = jest . fn ( ) ;
2932 vault . read = jest . fn ( ) ;
33+ taskFactory = jest . fn ( ) as unknown as TaskFactory ;
34+ taskFactory . newCollection = jest . fn ( ) . mockImplementation ( ( a , b ) => new EmojiTaskCollection ( a , b ) ) ;
3035 jest . spyOn ( AutoTasks , 'getSettings' ) . mockReturnValue ( settings ) ;
3136
32- sut = new KanbanSynchroniser ( plugin , vault ) ;
37+ sut = new KanbanSynchroniser ( plugin , vault , taskFactory ) ;
38+ } ) ;
39+
40+ afterEach ( ( ) => {
41+ jest . resetAllMocks ( ) ;
3342 } ) ;
3443
3544 it ( 'retrieves files with empty list and performs with empty list' , async ( ) => {
3645 jest . spyOn ( vault , 'getFiles' ) . mockReturnValue ( [ ] ) ;
3746 const vaultModify = jest . spyOn ( vault , 'modify' ) ;
38- board = new KanbanBoard ( BOARD_FILENAME ) ;
47+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME ) ;
3948 const boardGetTaskCollection = jest . spyOn ( board , 'getTaskCollection' ) ;
4049
4150 await sut . process ( board ) ;
@@ -54,7 +63,7 @@ describe('kanban synchroniser', () => {
5463 const file3 = new TFile ( ) ;
5564 file3 . path = 'elsewhere/file3.md' ;
5665 const vaultModify = jest . spyOn ( vault , 'modify' ) ;
57- board = new KanbanBoard ( BOARD_FILENAME ) ;
66+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME ) ;
5867 const boardGetTaskCollection = jest . spyOn ( board , 'getTaskCollection' ) ;
5968 const vaultRead = jest . spyOn ( vault , 'read' ) . mockResolvedValue ( '' ) ;
6069
@@ -69,7 +78,7 @@ describe('kanban synchroniser', () => {
6978 const file = new TFile ( ) ;
7079 file . name = BOARD_FILENAME ;
7180 const vaultModify = jest . spyOn ( vault , 'modify' ) ;
72- board = new KanbanBoard ( BOARD_FILENAME ) ;
81+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME ) ;
7382 const boardGetTaskCollection = jest . spyOn ( board , 'getTaskCollection' ) ;
7483
7584 await sut . process ( board , [ file ] ) ;
@@ -84,7 +93,7 @@ describe('kanban synchroniser', () => {
8493 const file2 = new TFile ( ) ;
8594 file2 . name = 'file2.md' ;
8695 jest . spyOn ( vault , 'getFiles' ) . mockImplementation ( ( ) => [ file1 , file2 ] ) ;
87- board = new KanbanBoard ( BOARD_FILENAME ) ;
96+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME ) ;
8897 const boardGetTaskCollection = jest . spyOn ( board , 'getTaskCollection' ) ;
8998 const vaultRead = jest . spyOn ( vault , 'read' ) . mockResolvedValue ( '' ) ;
9099
@@ -100,7 +109,7 @@ describe('kanban synchroniser', () => {
100109
101110 const file1 = new TFile ( ) ;
102111 file1 . name = 'file1.md' ;
103- board = new KanbanBoard ( BOARD_FILENAME ) ;
112+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME ) ;
104113 jest . spyOn ( vault , 'read' ) . mockResolvedValue ( '## TODOs\n\n- [ ] A new task\n- [ ] Meeting: Something or other\n- [ ] Meeting: Jamie 1-2-1\n- [ ] Another new task\n' ) ;
105114
106115 await sut . process ( board , [ file1 ] ) ;
@@ -114,7 +123,7 @@ describe('kanban synchroniser', () => {
114123 it ( 'adds new tasks' , async ( ) => {
115124 const file1 = new TFile ( ) ;
116125 file1 . name = 'file1.md' ;
117- board = new KanbanBoard ( BOARD_FILENAME ) ;
126+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME ) ;
118127 jest . spyOn ( vault , 'read' ) . mockResolvedValue ( '## TODOs\n\n- [ ] A new task\n- [ ] Another new task\n' ) ;
119128
120129 await sut . process ( board , [ file1 ] ) ;
@@ -127,7 +136,7 @@ describe('kanban synchroniser', () => {
127136 const file1 = new TFile ( ) ;
128137 file1 . name = 'file1.md' ;
129138 const dueDate = moment ( ) . format ( DUE_DATE_FORMAT ) ;
130- board = new KanbanBoard ( BOARD_FILENAME , `${ UPCOMING } \n\n\n\n\n\n${ DUE } \n\n- [ ] Due task 📅 ${ dueDate } \n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n\n\n\n\n` ) ;
139+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME , `${ UPCOMING } \n\n\n\n\n\n${ DUE } \n\n- [ ] Due task 📅 ${ dueDate } \n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n\n\n\n\n` ) ;
131140 jest . spyOn ( vault , 'read' ) . mockResolvedValue ( `## TODOs\n\n- [ ] Due task 📅 ${ dueDate } \n` ) ;
132141
133142 await sut . process ( board , [ file1 ] ) ;
@@ -139,7 +148,7 @@ describe('kanban synchroniser', () => {
139148 const file1 = new TFile ( ) ;
140149 file1 . name = 'file1.md' ;
141150 const dueDate = moment ( ) . format ( DUE_DATE_FORMAT ) ;
142- board = new KanbanBoard ( BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Due task 📅 ${ dueDate } \n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n\n\n\n\n` ) ;
151+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Due task 📅 ${ dueDate } \n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n\n\n\n\n` ) ;
143152 jest . spyOn ( vault , 'read' ) . mockResolvedValue ( `## TODOs\n\n- [ ] Due task 📅 ${ dueDate } \n` ) ;
144153
145154 await sut . process ( board , [ file1 ] ) ;
@@ -150,7 +159,7 @@ describe('kanban synchroniser', () => {
150159 it ( 'moves incomplete tasks back to UPCOMING' , async ( ) => {
151160 const file1 = new TFile ( ) ;
152161 file1 . name = 'file1.md' ;
153- board = new KanbanBoard ( BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Existing task\n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n- [x] Incomplete task\n\n\n\n\n` ) ;
162+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Existing task\n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n- [x] Incomplete task\n\n\n\n\n` ) ;
154163 jest . spyOn ( vault , 'read' ) . mockResolvedValue ( `## TODOs\n\n- [ ] Existing task\n- [ ] Incomplete task\n` ) ;
155164
156165 await sut . process ( board , [ file1 ] ) ;
@@ -162,7 +171,7 @@ describe('kanban synchroniser', () => {
162171 const file1 = new TFile ( ) ;
163172 file1 . name = 'file1.md' ;
164173 const dueDate = moment ( ) . format ( DUE_DATE_FORMAT ) ;
165- board = new KanbanBoard ( BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Existing task\n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n- [x] Incomplete task\n\n\n\n\n` ) ;
174+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Existing task\n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n- [x] Incomplete task\n\n\n\n\n` ) ;
166175 jest . spyOn ( vault , 'read' ) . mockResolvedValue ( `## TODOs\n\n- [ ] Existing task\n- [ ] Incomplete task 📅 ${ dueDate } \n` ) ;
167176
168177 await sut . process ( board , [ file1 ] ) ;
@@ -173,7 +182,7 @@ describe('kanban synchroniser', () => {
173182 it ( 'moves complete tasks to DONE' , async ( ) => {
174183 const file1 = new TFile ( ) ;
175184 file1 . name = 'file1.md' ;
176- board = new KanbanBoard ( BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Complete task\n- [ ] Existing task\n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n\n\n\n\n` ) ;
185+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Complete task\n- [ ] Existing task\n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n\n\n\n\n` ) ;
177186 jest . spyOn ( vault , 'read' ) . mockResolvedValue ( `## TODOs\n\n- [ ] Existing task\n- [x] Complete task\n` ) ;
178187
179188 await sut . process ( board , [ file1 ] ) ;
@@ -185,7 +194,7 @@ describe('kanban synchroniser', () => {
185194 const file1 = new TFile ( ) ;
186195 file1 . name = 'file1.md' ;
187196 const dueDate = moment ( ) . add ( 5 , 'days' ) . format ( DUE_DATE_FORMAT ) ;
188- board = new KanbanBoard ( BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Existing task\n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n\n\n\n\n` ) ;
197+ board = new KanbanBoard ( taskFactory , BOARD_FILENAME , `${ UPCOMING } \n\n- [ ] Existing task\n\n\n\n\n${ DUE } \n\n\n\n\n\n${ PROGRESS } \n\n\n\n\n\n${ DONE } \n\n\n\n\n\n` ) ;
189198 jest . spyOn ( vault , 'read' ) . mockResolvedValue ( `## TODOs\n\n- [ ] Existing task 📅 ${ dueDate } ⏫ 🆔 random-id\n` ) ;
190199
191200 await sut . process ( board , [ file1 ] ) ;
0 commit comments