Add test for filter posts by category

This commit is contained in:
Matt Rider 2019-07-03 19:46:26 -03:00
parent 324330ad8e
commit c6b261853f

View File

@ -32,6 +32,26 @@ const postQueryWithCategories = `
}
}
`
const createPostWithoutCategoriesVariables = {
title: 'This is a post without categories',
content: 'I should be able to filter it out',
categoryIds: null,
}
const postQueryFilteredByCategory = `
query($name: String) {
Post(filter: { categories_some: { name: $name } }) {
title
id
categories {
name
}
}
}
`
const postCategoriesFilterParam = 'Environment & Nature'
const postQueryFilteredByCategoryVariables = {
name: postCategoriesFilterParam,
}
beforeEach(async () => {
await factory.create('User', {
email: 'test@example.org',
@ -124,7 +144,8 @@ describe('CreatePost', () => {
})
describe('categories', () => {
it('allows a user to set the categories of the post', async () => {
let postWithCategories
beforeEach(async () => {
await Promise.all([
factory.create('Category', {
id: 'cat9',
@ -142,11 +163,14 @@ describe('CreatePost', () => {
icon: 'shopping-cart',
}),
])
const expected = [{ id: 'cat9' }, { id: 'cat4' }, { id: 'cat15' }]
const postWithCategories = await client.request(
postWithCategories = await client.request(
createPostWithCategoriesMutation,
creatPostWithCategoriesVariables,
)
})
it('allows a user to set the categories of the post', async () => {
const expected = [{ id: 'cat9' }, { id: 'cat4' }, { id: 'cat15' }]
const postQueryWithCategoriesVariables = {
id: postWithCategories.CreatePost.id,
}
@ -154,6 +178,28 @@ describe('CreatePost', () => {
client.request(postQueryWithCategories, postQueryWithCategoriesVariables),
).resolves.toEqual({ Post: [{ categories: expect.arrayContaining(expected) }] })
})
it('allows a user to filter for posts by category', async () => {
await client.request(createPostWithCategoriesMutation, createPostWithoutCategoriesVariables)
const categoryNames = [
{ name: 'Democracy & Politics' },
{ name: 'Environment & Nature' },
{ name: 'Consumption & Sustainability' },
]
const expected = {
Post: [
{
title: postTitle,
id: postWithCategories.CreatePost.id,
categories: expect.arrayContaining(categoryNames),
},
],
}
await expect(
client.request(postQueryFilteredByCategory, postQueryFilteredByCategoryVariables),
).resolves.toEqual(expected)
})
})
})
})