Added ability to append to documents. Added test cases for the same (#963)

* added ability to append to documents. Added test cases for the same

* made changes required for lint test

* updated snapshot for document.test.js to reflect new test cases added

* append should not enforce newline character
This commit is contained in:
arpitsingh94
2019-06-14 12:06:24 +05:30
committed by Tom Moor
parent 18a5cd8765
commit 7dfe8785a2
3 changed files with 62 additions and 2 deletions

View File

@@ -107,6 +107,15 @@ Object {
}
`;
exports[`#documents.update should require text while appending 1`] = `
Object {
"error": "param_required",
"message": "Text is required while appending",
"ok": false,
"status": 400,
}
`;
exports[`#documents.viewed should require authentication 1`] = `
Object {
"error": "authentication_required",

View File

@@ -600,9 +600,19 @@ router.post('documents.create', auth(), async ctx => {
});
router.post('documents.update', auth(), async ctx => {
const { id, title, text, publish, autosave, done, lastRevision } = ctx.body;
const {
id,
title,
text,
publish,
autosave,
done,
lastRevision,
append,
} = ctx.body;
ctx.assertPresent(id, 'id is required');
ctx.assertPresent(title || text, 'title or text is required');
if (append) ctx.assertPresent(text, 'Text is required while appending');
const user = ctx.state.user;
const document = await Document.findById(id);
@@ -615,7 +625,12 @@ router.post('documents.update', auth(), async ctx => {
// Update document
if (title) document.title = title;
if (text) document.text = text;
//append to document
if (append) {
document.text += text;
} else if (text) {
document.text = text;
}
document.lastModifiedById = user.id;
if (publish) {

View File

@@ -1212,6 +1212,42 @@ describe('#documents.update', async () => {
});
expect(res.status).toEqual(403);
});
it('should append document with text', async () => {
const { user, document } = await seed();
const res = await server.post('/api/documents.update', {
body: {
token: user.getJwtToken(),
id: document.id,
text: 'Additional text',
lastRevision: document.revision,
append: true,
},
});
const body = await res.json();
expect(res.status).toEqual(200);
expect(body.data.text).toBe(document.text + 'Additional text');
});
it('should require text while appending', async () => {
const { user, document } = await seed();
const res = await server.post('/api/documents.update', {
body: {
token: user.getJwtToken(),
id: document.id,
lastRevision: document.revision,
title: 'Updated Title',
append: true,
},
});
const body = await res.json();
expect(res.status).toEqual(400);
expect(body).toMatchSnapshot();
});
});
describe('#documents.archive', async () => {