Skip to content

Commit 535e3a2

Browse files
fix: map updated API task and project objects to match local schemas (#283)
Co-authored-by: Pedro Alves <pedroalves0@gmail.com>
1 parent 50fbd19 commit 535e3a2

8 files changed

+275
-76
lines changed

src/TodoistApi.projects.test.ts

+19-12
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import { TodoistApi } from '.'
22
import {
33
DEFAULT_AUTH_TOKEN,
44
DEFAULT_PROJECT,
5+
RAW_DEFAULT_PROJECT,
56
DEFAULT_REQUEST_ID,
67
DEFAULT_USER,
7-
PROJECT_WITH_OPTIONALS_AS_NULL,
88
} from './testUtils/testDefaults'
99
import {
1010
getSyncBaseUri,
@@ -21,7 +21,7 @@ describe('TodoistApi project endpoints', () => {
2121
describe('getProject', () => {
2222
test('calls get request with expected url', async () => {
2323
const projectId = '12'
24-
const requestMock = setupRestClientMock(DEFAULT_PROJECT)
24+
const requestMock = setupRestClientMock(RAW_DEFAULT_PROJECT)
2525
const api = getTarget()
2626

2727
await api.getProject(projectId)
@@ -36,7 +36,7 @@ describe('TodoistApi project endpoints', () => {
3636
})
3737

3838
test('returns result from rest client', async () => {
39-
setupRestClientMock(DEFAULT_PROJECT)
39+
setupRestClientMock(RAW_DEFAULT_PROJECT)
4040
const api = getTarget()
4141

4242
const project = await api.getProject('123')
@@ -48,7 +48,7 @@ describe('TodoistApi project endpoints', () => {
4848
describe('getProjects', () => {
4949
test('calls get on projects endpoint', async () => {
5050
const requestMock = setupRestClientMock({
51-
results: [DEFAULT_PROJECT],
51+
results: [RAW_DEFAULT_PROJECT],
5252
nextCursor: '123',
5353
})
5454
const api = getTarget()
@@ -67,13 +67,13 @@ describe('TodoistApi project endpoints', () => {
6767
})
6868

6969
test('returns result from rest client', async () => {
70-
const projects = [DEFAULT_PROJECT, PROJECT_WITH_OPTIONALS_AS_NULL]
70+
const projects = [RAW_DEFAULT_PROJECT]
7171
setupRestClientMock({ results: projects, nextCursor: '123' })
7272
const api = getTarget()
7373

7474
const { results, nextCursor } = await api.getProjects()
7575

76-
expect(results).toEqual(projects)
76+
expect(results).toEqual([DEFAULT_PROJECT])
7777
expect(nextCursor).toBe('123')
7878
})
7979
})
@@ -84,7 +84,7 @@ describe('TodoistApi project endpoints', () => {
8484
}
8585

8686
test('calls post on restClient with expected parameters', async () => {
87-
const requestMock = setupRestClientMock(DEFAULT_PROJECT)
87+
const requestMock = setupRestClientMock(RAW_DEFAULT_PROJECT)
8888
const api = getTarget()
8989

9090
await api.addProject(DEFAULT_ADD_PROJECT_ARGS, DEFAULT_REQUEST_ID)
@@ -101,7 +101,7 @@ describe('TodoistApi project endpoints', () => {
101101
})
102102

103103
test('returns result from rest client', async () => {
104-
setupRestClientMock(DEFAULT_PROJECT)
104+
setupRestClientMock(RAW_DEFAULT_PROJECT)
105105
const api = getTarget()
106106

107107
const project = await api.addProject(DEFAULT_ADD_PROJECT_ARGS)
@@ -115,7 +115,7 @@ describe('TodoistApi project endpoints', () => {
115115
test('calls post on restClient with expected parameters', async () => {
116116
const projectId = '123'
117117
const updateArgs = { name: 'a new name' }
118-
const requestMock = setupRestClientMock(DEFAULT_PROJECT, 204)
118+
const requestMock = setupRestClientMock(RAW_DEFAULT_PROJECT, 204)
119119
const api = getTarget()
120120

121121
await api.updateProject(projectId, updateArgs, DEFAULT_REQUEST_ID)
@@ -132,13 +132,20 @@ describe('TodoistApi project endpoints', () => {
132132
})
133133

134134
test('returns success result from rest client', async () => {
135-
const returnedProject = { ...DEFAULT_PROJECT, ...DEFAULT_UPDATE_PROJECT_ARGS }
136-
setupRestClientMock(returnedProject, 204)
135+
const RAW_DEFAULT_PROJECT_WITH_UPDATES = {
136+
...RAW_DEFAULT_PROJECT,
137+
name: DEFAULT_UPDATE_PROJECT_ARGS.name,
138+
}
139+
setupRestClientMock(RAW_DEFAULT_PROJECT_WITH_UPDATES, 204)
137140
const api = getTarget()
138141

139142
const result = await api.updateProject('123', DEFAULT_UPDATE_PROJECT_ARGS)
140143

141-
expect(result).toEqual(returnedProject)
144+
const DEFAULT_PROJECT_WITH_UPDATES = {
145+
...DEFAULT_PROJECT,
146+
name: DEFAULT_UPDATE_PROJECT_ARGS.name,
147+
}
148+
expect(result).toEqual(DEFAULT_PROJECT_WITH_UPDATES)
142149
})
143150
})
144151

src/TodoistApi.tasks.test.ts

+25-14
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
DEFAULT_QUICK_ADD_RESPONSE,
77
DEFAULT_REQUEST_ID,
88
DEFAULT_TASK,
9+
RAW_DEFAULT_TASK,
910
TASK_WITH_OPTIONALS_AS_NULL,
1011
} from './testUtils/testDefaults'
1112
import {
@@ -33,7 +34,7 @@ describe('TodoistApi task endpoints', () => {
3334
}
3435

3536
test('calls post on restClient with expected parameters', async () => {
36-
const requestMock = setupRestClientMock(DEFAULT_TASK)
37+
const requestMock = setupRestClientMock(RAW_DEFAULT_TASK)
3738
const api = getTarget()
3839

3940
await api.addTask(DEFAULT_ADD_TASK_ARGS, DEFAULT_REQUEST_ID)
@@ -50,7 +51,7 @@ describe('TodoistApi task endpoints', () => {
5051
})
5152

5253
test('calls post on restClient with expected parameters against staging', async () => {
53-
const requestMock = setupRestClientMock(DEFAULT_TASK)
54+
const requestMock = setupRestClientMock(RAW_DEFAULT_TASK)
5455
const api = getTarget('https://staging.todoist.com')
5556

5657
await api.addTask(DEFAULT_ADD_TASK_ARGS, DEFAULT_REQUEST_ID)
@@ -67,7 +68,7 @@ describe('TodoistApi task endpoints', () => {
6768
})
6869

6970
test('returns result from rest client', async () => {
70-
setupRestClientMock(DEFAULT_TASK)
71+
setupRestClientMock(RAW_DEFAULT_TASK)
7172
const api = getTarget()
7273

7374
const task = await api.addTask(DEFAULT_ADD_TASK_ARGS)
@@ -81,7 +82,7 @@ describe('TodoistApi task endpoints', () => {
8182

8283
test('calls post on restClient with expected parameters', async () => {
8384
const taskId = '123'
84-
const requestMock = setupRestClientMock(DEFAULT_TASK, 204)
85+
const requestMock = setupRestClientMock(RAW_DEFAULT_TASK, 204)
8586
const api = getTarget()
8687

8788
await api.updateTask(taskId, DEFAULT_UPDATE_TASK_ARGS, DEFAULT_REQUEST_ID)
@@ -98,13 +99,20 @@ describe('TodoistApi task endpoints', () => {
9899
})
99100

100101
test('returns success result from rest client', async () => {
101-
const returnedTask = { ...DEFAULT_TASK, ...DEFAULT_UPDATE_TASK_ARGS }
102-
setupRestClientMock(returnedTask, 204)
102+
const RAW_DEFAULT_TASK_WITH_UPDATES = {
103+
...RAW_DEFAULT_TASK,
104+
content: DEFAULT_UPDATE_TASK_ARGS.content,
105+
}
106+
setupRestClientMock(RAW_DEFAULT_TASK_WITH_UPDATES, 204)
103107
const api = getTarget()
104108

105109
const response = await api.updateTask('123', DEFAULT_UPDATE_TASK_ARGS)
106110

107-
expect(response).toEqual(returnedTask)
111+
const DEFAULT_TASK_WITH_UPDATES = {
112+
...DEFAULT_TASK,
113+
content: DEFAULT_UPDATE_TASK_ARGS.content,
114+
}
115+
expect(response).toEqual(DEFAULT_TASK_WITH_UPDATES)
108116
})
109117
})
110118

@@ -235,7 +243,7 @@ describe('TodoistApi task endpoints', () => {
235243
describe('getTask', () => {
236244
test('calls get request with expected url', async () => {
237245
const taskId = '12'
238-
const requestMock = setupRestClientMock(DEFAULT_TASK)
246+
const requestMock = setupRestClientMock(RAW_DEFAULT_TASK)
239247
const api = getTarget()
240248

241249
await api.getTask(taskId)
@@ -259,7 +267,7 @@ describe('TodoistApi task endpoints', () => {
259267

260268
test('calls get on expected endpoint with args', async () => {
261269
const requestMock = setupRestClientMock({
262-
results: [DEFAULT_TASK, TASK_WITH_OPTIONALS_AS_NULL],
270+
results: [RAW_DEFAULT_TASK, TASK_WITH_OPTIONALS_AS_NULL],
263271
nextCursor: '123',
264272
})
265273
const api = getTarget()
@@ -277,13 +285,13 @@ describe('TodoistApi task endpoints', () => {
277285
})
278286

279287
test('returns result from rest client', async () => {
280-
const tasks = [DEFAULT_TASK]
288+
const tasks = [RAW_DEFAULT_TASK]
281289
setupRestClientMock({ results: tasks, nextCursor: '123' })
282290
const api = getTarget()
283291

284292
const { results, nextCursor } = await api.getTasks(DEFAULT_GET_TASKS_ARGS)
285293

286-
expect(results).toEqual(tasks)
294+
expect(results).toEqual([DEFAULT_TASK])
287295
expect(nextCursor).toBe('123')
288296
})
289297
})
@@ -297,7 +305,10 @@ describe('TodoistApi task endpoints', () => {
297305
}
298306

299307
test('calls get request with expected url', async () => {
300-
const requestMock = setupRestClientMock({ results: [DEFAULT_TASK], nextCursor: null })
308+
const requestMock = setupRestClientMock({
309+
results: [RAW_DEFAULT_TASK],
310+
nextCursor: null,
311+
})
301312
const api = getTarget()
302313

303314
await api.getTasksByFilter(DEFAULT_GET_TASKS_BY_FILTER_ARGS)
@@ -313,7 +324,7 @@ describe('TodoistApi task endpoints', () => {
313324
})
314325

315326
test('returns result from rest client', async () => {
316-
setupRestClientMock({ results: [DEFAULT_TASK], nextCursor: null })
327+
setupRestClientMock({ results: [RAW_DEFAULT_TASK], nextCursor: null })
317328
const api = getTarget()
318329

319330
const response = await api.getTasksByFilter(DEFAULT_GET_TASKS_BY_FILTER_ARGS)
@@ -325,7 +336,7 @@ describe('TodoistApi task endpoints', () => {
325336
})
326337

327338
test('validates task array in response', async () => {
328-
const invalidTask = { ...DEFAULT_TASK, due: '2020-01-31' }
339+
const invalidTask = { ...RAW_DEFAULT_TASK, due: '2020-01-31' }
329340
setupRestClientMock({ results: [invalidTask], nextCursor: null })
330341
const api = getTarget()
331342

0 commit comments

Comments
 (0)