Upload 4.12

This commit is contained in:
Andrew Trieu
2023-05-31 21:14:33 +03:00
parent 1c781aca74
commit 0988a44fe4
5 changed files with 88 additions and 44 deletions

View File

@@ -13,11 +13,22 @@ blogsRouter.post('/', async (request, response) => {
title: body.title, title: body.title,
author: body.author, author: body.author,
url: body.url, url: body.url,
likes: body.likes likes: body.likes || 0
})).save() })).save()
response.status(201).json(blog) response.status(201).json(blog)
}) })
blogsRouter.get('/:id', async (request, response) => {
const blog = await Blog.findById(request.params.id)
if (blog) response.json(blog)
else response.status(404).end()
})
blogsRouter.delete('/:id', async (request, response) => {
await Blog.findByIdAndRemove(request.params.id)
response.status(204).end()
})
module.exports = blogsRouter module.exports = blogsRouter

View File

@@ -0,0 +1 @@
DELETE http://localhost:3001/api/blogs/64778b41a8f175e16455b293

View File

@@ -0,0 +1 @@
GET http://localhost:3001/api/blogs/647788bc1d350a17ba599541

View File

@@ -2,6 +2,6 @@ POST http://localhost:3001/api/blogs
content-type: application/json content-type: application/json
{ {
"title": "Another blog", "author": "Andrew", "url": "www.andrew.eu", "likes": 1000 "title": "Last blog", "author": "Andrew", "url": "www.andrew.eu", "likes": 1000
} }

View File

@@ -12,6 +12,7 @@ beforeEach(async () => {
await Blog.insertMany(helper.initialBlogs) await Blog.insertMany(helper.initialBlogs)
}) })
describe('getting blogs', () => {
test('blogs are returned as json', async () => { test('blogs are returned as json', async () => {
await api await api
.get('/api/blogs') .get('/api/blogs')
@@ -29,7 +30,9 @@ test('a specific blog is within the returned blogs', async () => {
const contents = response.body.map((r) => r.title) const contents = response.body.map((r) => r.title)
expect(contents).toContain('Another blog') expect(contents).toContain('Another blog')
}) })
})
describe('adding blog', () => {
test('a valid blog can be added ', async () => { test('a valid blog can be added ', async () => {
const newBlog = { const newBlog = {
title: 'Test', title: 'Test',
@@ -50,8 +53,9 @@ test('a valid blog can be added ', async () => {
expect(contents).toContain('Test') expect(contents).toContain('Test')
}) })
test('blog without content is not added', async () => { test('blog without title or url is not added', async () => {
const newBlog = { const newBlog = {
author: 'Tester',
likes: 999 likes: 999
} }
@@ -61,6 +65,33 @@ test('blog without content is not added', async () => {
expect(blogsAtEnd).toHaveLength(helper.initialBlogs.length) expect(blogsAtEnd).toHaveLength(helper.initialBlogs.length)
}) })
test('blog without likes is added with 0 likes', async () => {
const newBlog = {
title: 'Another test',
author: 'Tester',
url: 'http:/test.com'
}
await api
.post('/api/blogs')
.send(newBlog)
.expect(201)
.expect('Content-Type', /application\/json/)
const blogsAtEnd = await helper.blogsInDb()
const addedBlog = blogsAtEnd.find(blog => blog.title === 'Another test')
expect(addedBlog.likes).toBe(0)
})
})
describe('blog id check', () => {
test('blog id is defined', async () => {
const response = await api.get('/api/blogs')
expect(response.body[0].id).toBeDefined()
})
})
afterAll(async () => { afterAll(async () => {
await mongoose.connection.close() await mongoose.connection.close()
}) })