Ocelot-Social/backend/src/middleware/orderByMiddleware.spec.js
2019-11-16 20:09:05 +01:00

82 lines
2.0 KiB
JavaScript

import { gql } from '../helpers/jest'
import Factory from '../seed/factories'
import { neode as getNeode, getDriver } from '../bootstrap/neo4j'
import { createTestClient } from 'apollo-server-testing'
import createServer from '../server'
const factory = Factory()
const neode = getNeode()
const driver = getDriver()
const { server } = createServer({
context: () => {
return {
user: null,
neode,
driver,
}
},
})
const { query } = createTestClient(server)
beforeEach(async () => {
await neode.create('Post', { title: 'first' })
await neode.create('Post', { title: 'second' })
await neode.create('Post', { title: 'third' })
await neode.create('Post', { title: 'last' })
})
afterEach(async () => {
await factory.cleanDatabase()
})
describe('Query', () => {
describe('Post', () => {
describe('orderBy', () => {
it('createdAt descending is default', async () => {
const posts = [
{ title: 'last' },
{ title: 'third' },
{ title: 'second' },
{ title: 'first' },
]
const expected = expect.objectContaining({ data: { Post: posts } })
await expect(
query({
query: gql`
{
Post {
title
}
}
`,
}),
).resolves.toEqual(expected)
})
describe('(orderBy: createdAt_asc)', () => {
it('orders by createdAt ascending', async () => {
const posts = [
{ title: 'first' },
{ title: 'second' },
{ title: 'third' },
{ title: 'last' },
]
const expected = expect.objectContaining({ data: { Post: posts } })
await expect(
query({
query: gql`
{
Post(orderBy: createdAt_asc) {
title
}
}
`,
}),
).resolves.toEqual(expected)
})
})
})
})
})