roschaefer 77d24b5a71 Add backend test for @mattwr18
This was already covered by `slugifyMiddleware.spec.js`. I do agree that
this is a better place for it. Also we're not testing GraphQL requests
here but the factories. As we're testing the existence of unique
constraints, I think it won't matter if we use factories or actual
GraphQL requests.
2019-09-23 00:09:08 +02:00

85 lines
2.1 KiB
JavaScript

import Factory from '../seed/factories'
import { neode } from '../bootstrap/neo4j'
const factory = Factory()
const instance = neode()
afterEach(async () => {
await factory.cleanDatabase()
})
describe('role', () => {
it('defaults to `user`', async () => {
const user = await instance.create('User', { name: 'John' })
await expect(user.toJson()).resolves.toEqual(
expect.objectContaining({
role: 'user',
}),
)
})
})
describe('slug', () => {
it('normalizes to lowercase letters', async () => {
const user = await instance.create('User', { slug: 'Matt' })
await expect(user.toJson()).resolves.toEqual(
expect.objectContaining({
slug: 'matt',
}),
)
})
it('must be unique', async done => {
await instance.create('User', { slug: 'Matt' })
try {
await expect(instance.create('User', { slug: 'Matt' })).rejects.toThrow('already exists')
done()
} catch (error) {
throw new Error(`
${error}
Probably your database has no unique constraints!
To see all constraints go to http://localhost:7474/browser/ and
paste the following:
\`\`\`
CALL db.constraints();
\`\`\`
Learn how to setup the database here:
https://docs.human-connection.org/human-connection/neo4j
`)
}
})
describe('characters', () => {
const createUser = attrs => {
return instance.create('User', attrs).then(user => user.toJson())
}
it('-', async () => {
await expect(createUser({ slug: 'matt-rider' })).resolves.toMatchObject({
slug: 'matt-rider',
})
})
it('_', async () => {
await expect(createUser({ slug: 'matt_rider' })).resolves.toMatchObject({
slug: 'matt_rider',
})
})
it(' ', async () => {
await expect(createUser({ slug: 'matt rider' })).rejects.toThrow(
/fails to match the required pattern/,
)
})
it('ä', async () => {
await expect(createUser({ slug: 'mätt' })).rejects.toThrow(
/fails to match the required pattern/,
)
})
})
})