Upload 4.12
This commit is contained in:
@@ -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
|
||||||
1
part4/bloglist/requests/delete_blog.rest
Normal file
1
part4/bloglist/requests/delete_blog.rest
Normal file
@@ -0,0 +1 @@
|
|||||||
|
DELETE http://localhost:3001/api/blogs/64778b41a8f175e16455b293
|
||||||
1
part4/bloglist/requests/get_by_id.rest
Normal file
1
part4/bloglist/requests/get_by_id.rest
Normal file
@@ -0,0 +1 @@
|
|||||||
|
GET http://localhost:3001/api/blogs/647788bc1d350a17ba599541
|
||||||
@@ -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
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,25 +12,28 @@ beforeEach(async () => {
|
|||||||
await Blog.insertMany(helper.initialBlogs)
|
await Blog.insertMany(helper.initialBlogs)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('blogs are returned as json', async () => {
|
describe('getting blogs', () => {
|
||||||
|
test('blogs are returned as json', async () => {
|
||||||
await api
|
await api
|
||||||
.get('/api/blogs')
|
.get('/api/blogs')
|
||||||
.expect(200)
|
.expect(200)
|
||||||
.expect('Content-Type', /application\/json/)
|
.expect('Content-Type', /application\/json/)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('all blogs are returned', async () => {
|
test('all blogs are returned', async () => {
|
||||||
const response = await api.get('/api/blogs')
|
const response = await api.get('/api/blogs')
|
||||||
expect(response.body).toHaveLength(helper.initialBlogs.length)
|
expect(response.body).toHaveLength(helper.initialBlogs.length)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('a specific blog is within the returned blogs', async () => {
|
test('a specific blog is within the returned blogs', async () => {
|
||||||
const response = await api.get('/api/blogs')
|
const response = await api.get('/api/blogs')
|
||||||
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')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
test('a valid blog can be added ', async () => {
|
describe('adding blog', () => {
|
||||||
|
test('a valid blog can be added ', async () => {
|
||||||
const newBlog = {
|
const newBlog = {
|
||||||
title: 'Test',
|
title: 'Test',
|
||||||
author: 'Tester',
|
author: 'Tester',
|
||||||
@@ -48,10 +51,11 @@ test('a valid blog can be added ', async () => {
|
|||||||
expect(blogsAtEnd).toHaveLength(helper.initialBlogs.length + 1)
|
expect(blogsAtEnd).toHaveLength(helper.initialBlogs.length + 1)
|
||||||
const contents = blogsAtEnd.map((n) => n.title)
|
const contents = blogsAtEnd.map((n) => n.title)
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,6 +63,33 @@ test('blog without content is not added', async () => {
|
|||||||
|
|
||||||
const blogsAtEnd = await helper.blogsInDb()
|
const blogsAtEnd = await helper.blogsInDb()
|
||||||
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 () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user