UNPKG

@ancxkush/create-ts-express-mongo-starter-code

Version:

NodeJS/Express starter code with - TypeScript, MongoDB setup, Exception Handler, Logger, HTTP testing example, Swagger Docs example, Mongoose model example, JOI validation example, CRUD operations example

80 lines (63 loc) 1.88 kB
import app from '../../app' import server from '../../server' import request from 'supertest' import seed from './seed' import { BookModel } from '../../models/example.model' import { connectDB, disconnectDB } from '../../config/db.connect' const testBook = { bookId: 7, title: 'test book', price: 777, } describe('example book model', () => { beforeAll(async () => { await BookModel.insertMany(seed) }) afterAll(async () => { disconnectDB() server.close() }) beforeEach(async () => { await BookModel.deleteMany({ title: 'test book', }) }) describe('GET /api/books', () => { it('should return all books', async () => { const res = await request(app).get('/api/books') expect(res.statusCode).toBe(200) expect(res.body).not.toBeNull() }) }) describe('GET /api/books/:id', () => { it('should return a book', async () => { const res = await request(app).get('/api/books/4') expect(res.statusCode).toBe(200) expect(res.body.title).toBe('mock book four') }) }) describe('POST /api/books', () => { it('shoud create a new book', async () => { const res = await request(app).post('/api/books').send(testBook) expect(res.statusCode).toBe(201) expect(res.body.bookId).toBe(7) }) }) describe('PATCH /api/books', () => { it('shoud update a book', async () => { await request(app).post('/api/books').send(testBook) const res = await request(app).patch('/api/books/7').send({ price: 765, }) expect(res.statusCode).toBe(200) expect(res.body.price).toBe(765) }) }) describe('DELETE /api/books/:id', () => { it('should delete a book', async () => { await request(app).post('/api/books').send(testBook) const res = await request(app).delete('/api/books/7') expect(res.statusCode).toBe(200) }) }) })