add tests for /export/history.csv
This commit is contained in:
@@ -1,3 +1,48 @@
|
||||
// TODO how to test this route since it uses session authentication?
|
||||
import {
|
||||
generateUser,
|
||||
} from '../../../../helpers/api-v3-integration.helper';
|
||||
import {
|
||||
updateDocument,
|
||||
} from '../../../../helpers/mongo';
|
||||
import moment from 'moment';
|
||||
|
||||
describe('GET /export/history.csv', () => {});
|
||||
describe.only('GET /export/history.csv', () => {
|
||||
it('should return a valid CSV file with tasks history data', async () => {
|
||||
let user = await generateUser();
|
||||
let tasks = await user.post('/tasks/user', [
|
||||
{type: 'habit', text: 'habit 1'},
|
||||
{type: 'daily', text: 'daily 1'},
|
||||
{type: 'habit', text: 'habit 2'},
|
||||
{type: 'todo', text: 'todo 1'},
|
||||
]);
|
||||
|
||||
// score all the tasks twice
|
||||
await Promise.all(tasks.map(task => {
|
||||
return user.post(`/tasks/${task._id}/score/up`);
|
||||
}));
|
||||
await Promise.all(tasks.map(task => {
|
||||
return user.post(`/tasks/${task._id}/score/up`);
|
||||
}));
|
||||
|
||||
// adding an history entry to daily 1 manually because cron didn't run yet
|
||||
await updateDocument('tasks', tasks[1], {
|
||||
history: {value: 3.2, date: Number(new Date())},
|
||||
});
|
||||
|
||||
// get updated tasks
|
||||
tasks = await Promise.all(tasks.map(task => {
|
||||
return user.get(`/tasks/${task._id}`);
|
||||
}));
|
||||
|
||||
let res = await user.get(`/export/history.csv`);
|
||||
let splitRes = res.split('\n');
|
||||
expect(splitRes[0]).to.equal('Task Name,Task ID,Task Type,Date,Value');
|
||||
expect(splitRes[1]).to.equal(`habit 1,${tasks[0]._id},habit,${moment(tasks[0].history[0].date).format('YYYY-MM-DD HH:mm:ss')},${tasks[0].history[0].value}`);
|
||||
expect(splitRes[2]).to.equal(`habit 1,${tasks[0]._id},habit,${moment(tasks[0].history[1].date).format('YYYY-MM-DD HH:mm:ss')},${tasks[0].history[1].value}`);
|
||||
expect(splitRes[3]).to.equal(`daily 1,${tasks[1]._id},daily,${moment(tasks[1].history[0].date).format('YYYY-MM-DD HH:mm:ss')},${tasks[1].history[0].value}`);
|
||||
expect(splitRes[4]).to.equal(`habit 2,${tasks[2]._id},habit,${moment(tasks[2].history[0].date).format('YYYY-MM-DD HH:mm:ss')},${tasks[2].history[0].value}`);
|
||||
expect(splitRes[5]).to.equal(`habit 2,${tasks[2]._id},habit,${moment(tasks[2].history[1].date).format('YYYY-MM-DD HH:mm:ss')},${tasks[2].history[1].value}`);
|
||||
expect(splitRes[6]).to.equal('');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user