mirror of
https://github.com/usatiuk/ustk-todolist.git
synced 2025-10-29 08:07:48 +01:00
clean up,
tests, fixes
This commit is contained in:
@@ -40,12 +40,39 @@ afterAll(async () => {
|
||||
});
|
||||
|
||||
describe('test lists', () => {
|
||||
test('should index lists', async () => {
|
||||
const response = await request(server)
|
||||
.get('/lists')
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(response.body.data[0].name).toEqual('List1');
|
||||
});
|
||||
test('should not index lists without authentication', async () => {
|
||||
await request(server)
|
||||
.get('/lists')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(401);
|
||||
});
|
||||
test('should create list', async () => {
|
||||
const response = await request(server)
|
||||
.post('/lists')
|
||||
.send({
|
||||
name: 'List2',
|
||||
})
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(await TodoList.findOne({ name: 'List2' })).toBeTruthy();
|
||||
const freshUser = await User.findById(user.id).exec();
|
||||
expect(freshUser.lists).toContain(response.body.data.id);
|
||||
});
|
||||
test('should not create list without authentication', async () => {
|
||||
await request(server)
|
||||
.post('/lists')
|
||||
@@ -56,4 +83,56 @@ describe('test lists', () => {
|
||||
.set('Accept', 'application/json')
|
||||
.expect(401);
|
||||
});
|
||||
test('should update list', async () => {
|
||||
const response = await request(server)
|
||||
.patch(`/lists/${list._id}`)
|
||||
.send({
|
||||
name: 'List2',
|
||||
})
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(await TodoList.findOne({ name: 'List2' })).toBeTruthy();
|
||||
});
|
||||
test('should not update list without authentication', async () => {
|
||||
await request(server)
|
||||
.patch(`/lists/${list._id}`)
|
||||
.send({
|
||||
name: 'List2',
|
||||
})
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(401);
|
||||
expect(await TodoList.findOne({ name: 'List2' })).toBeFalsy();
|
||||
});
|
||||
test('should remove list', async () => {
|
||||
const response = await request(server)
|
||||
.delete(`/lists/${list._id}`)
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(await TodoList.findOne({ name: 'List1' }).exec()).toBeFalsy();
|
||||
expect(await Todo.findOne({ text: 'Todo1' }).exec()).toBeFalsy();
|
||||
const freshUser = await User.findById(user.id).exec();
|
||||
expect(freshUser.lists).not.toContain(list._id);
|
||||
expect(freshUser.todos).not.toContain(todo._id);
|
||||
});
|
||||
test('should not remove list without authentication', async () => {
|
||||
await request(server)
|
||||
.delete(`/lists/${list._id}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(401);
|
||||
expect(await TodoList.findOne({ name: 'List1' }).exec()).toBeTruthy();
|
||||
expect(await Todo.findOne({ text: 'Todo1' }).exec()).toBeTruthy();
|
||||
const freshUser = await User.findById(user.id).exec();
|
||||
expect(freshUser.lists).toContain(list._id);
|
||||
expect(freshUser.todos).toContain(todo._id);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,43 +1,6 @@
|
||||
const server = require('../../app.js');
|
||||
|
||||
const request = require('supertest');
|
||||
const mongoose = require('mongoose');
|
||||
|
||||
const Todo = mongoose.model('Todo');
|
||||
const TodoList = mongoose.model('TodoList');
|
||||
const User = mongoose.model('User');
|
||||
|
||||
jest.setTimeout(60000);
|
||||
const MongoDBMemoryServer = require('mongodb-memory-server').default;
|
||||
const { seed, clean } = require('./utils');
|
||||
|
||||
let user;
|
||||
let token;
|
||||
let list;
|
||||
let todo;
|
||||
let mongoServer;
|
||||
|
||||
beforeAll(async () => {
|
||||
mongoServer = new MongoDBMemoryServer();
|
||||
const mongoUri = await mongoServer.getConnectionString();
|
||||
await mongoose.connect(mongoUri);
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
({
|
||||
user, token, list, todo,
|
||||
} = await seed());
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await clean();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await mongoose.disconnect();
|
||||
await mongoServer.stop();
|
||||
await server.close();
|
||||
});
|
||||
|
||||
describe('test not found', () => {
|
||||
test('respond not found with json', async () => {
|
||||
|
||||
137
tests/integration/todos.test.js
Normal file
137
tests/integration/todos.test.js
Normal file
@@ -0,0 +1,137 @@
|
||||
const server = require('../../app.js');
|
||||
|
||||
const request = require('supertest');
|
||||
const mongoose = require('mongoose');
|
||||
|
||||
const Todo = mongoose.model('Todo');
|
||||
const User = mongoose.model('User');
|
||||
|
||||
jest.setTimeout(60000);
|
||||
const MongoDBMemoryServer = require('mongodb-memory-server').default;
|
||||
const { seed, clean } = require('./utils');
|
||||
|
||||
let user;
|
||||
let token;
|
||||
let list;
|
||||
let todo;
|
||||
let mongoServer;
|
||||
|
||||
beforeAll(async () => {
|
||||
mongoServer = new MongoDBMemoryServer();
|
||||
const mongoUri = await mongoServer.getConnectionString();
|
||||
await mongoose.connect(mongoUri);
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
({
|
||||
user, token, list, todo,
|
||||
} = await seed());
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await clean();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await mongoose.disconnect();
|
||||
await mongoServer.stop();
|
||||
await server.close();
|
||||
});
|
||||
|
||||
describe('test todos', () => {
|
||||
test('should index todos', async () => {
|
||||
const response = await request(server)
|
||||
.get(`/lists/${list._id}/todos`)
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(response.body.data[0].text).toEqual('Todo1');
|
||||
});
|
||||
test('should not index todos without authentication', async () => {
|
||||
await request(server)
|
||||
.get(`/lists/${list._id}/todos`)
|
||||
.set('Accept', 'application/json')
|
||||
.expect(401);
|
||||
});
|
||||
test('should create todo', async () => {
|
||||
const response = await request(server)
|
||||
.post(`/lists/${list._id}/todos`)
|
||||
.send({
|
||||
text: 'Todo2',
|
||||
})
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(await Todo.findOne({ text: 'Todo2', list: list._id })).toBeTruthy();
|
||||
const freshUser = await User.findById(user.id).exec();
|
||||
expect(freshUser.todos).toContain(response.body.data.id);
|
||||
const freshList = await User.findById(user.id).exec();
|
||||
expect(freshList.todos).toContain(response.body.data.id);
|
||||
});
|
||||
test('should not create todo without authentication', async () => {
|
||||
await request(server)
|
||||
.post(`/lists/${list._id}/todos`)
|
||||
.send({
|
||||
text: 'Todo1',
|
||||
})
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(401);
|
||||
});
|
||||
test('should update todo', async () => {
|
||||
const response = await request(server)
|
||||
.patch(`/lists/${list._id}/todos/${todo._id}`)
|
||||
.send({
|
||||
text: 'Todo2',
|
||||
})
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(await Todo.findOne({ text: 'Todo2' })).toBeTruthy();
|
||||
expect(await Todo.findOne({ text: 'Todo1' })).toBeFalsy();
|
||||
});
|
||||
test('should not update todo without authentication', async () => {
|
||||
await request(server)
|
||||
.patch(`/lists/${list._id}/todos/${todo._id}`)
|
||||
.send({
|
||||
text: 'Todo2',
|
||||
})
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(401);
|
||||
expect(await Todo.findOne({ text: 'Todo1' })).toBeTruthy();
|
||||
expect(await Todo.findOne({ text: 'Todo2' })).toBeFalsy();
|
||||
});
|
||||
test('should remove todo', async () => {
|
||||
const response = await request(server)
|
||||
.delete(`/lists/${list._id}/todos/${todo._id}`)
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(await Todo.findOne({ text: 'Todo1' }).exec()).toBeFalsy();
|
||||
const freshUser = await User.findById(user.id).exec();
|
||||
expect(freshUser.todos).not.toContain(todo.id);
|
||||
const freshList = await User.findById(user.id).exec();
|
||||
expect(freshList.todos).not.toContain(todo.id);
|
||||
});
|
||||
test('should not remove todo without authentication', async () => {
|
||||
await request(server)
|
||||
.delete(`/lists/${list._id}/todos/${todo._id}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Accept', 'application/json')
|
||||
.expect(401);
|
||||
expect(await Todo.findOne({ text: 'Todo1' }).exec()).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -13,10 +13,7 @@ const MongoDBMemoryServer = require('mongodb-memory-server').default;
|
||||
const { seed, clean } = require('./utils');
|
||||
const { secret } = require('../../config');
|
||||
|
||||
let user;
|
||||
let token;
|
||||
let list;
|
||||
let todo;
|
||||
let mongoServer;
|
||||
|
||||
beforeAll(async () => {
|
||||
@@ -26,9 +23,7 @@ beforeAll(async () => {
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
({
|
||||
user, token, list, todo,
|
||||
} = await seed());
|
||||
({ token } = await seed());
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
@@ -160,6 +155,8 @@ describe('test users', () => {
|
||||
.expect(401);
|
||||
expect(response.body.success).toBeFalsy();
|
||||
expect(await User.findOne({ username: 'User1' }).exec()).toBeTruthy();
|
||||
expect(await TodoList.findOne({ name: 'List1' }).exec()).toBeTruthy();
|
||||
expect(await Todo.findOne({ text: 'Todo1' })).toBeTruthy();
|
||||
});
|
||||
test('should delete user', async () => {
|
||||
const response = await request(server)
|
||||
@@ -171,5 +168,7 @@ describe('test users', () => {
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
expect(response.body.success).toBeTruthy();
|
||||
expect(await User.findOne({ username: 'User1' }).exec()).toBeFalsy();
|
||||
expect(await TodoList.findOne({ name: 'List1' }).exec()).toBeFalsy();
|
||||
expect(await Todo.findOne({ text: 'Todo1' }).exec()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user