This commit is contained in:
Robert Schäfer 2019-02-21 10:32:07 +01:00
parent 91a13593dc
commit 98983bb575
3 changed files with 36 additions and 39 deletions

View File

@ -7,7 +7,7 @@ let driver
export function getDriver (options = {}) {
const {
uri = process.env.NEO4J_URI || 'bolt://localhost:7687',
uri = process.env.NEO4J_URI || 'bolt://localhost:7687',
username = process.env.NEO4J_USERNAME || 'neo4j',
password = process.env.NEO4J_PASSWORD || 'neo4j'
} = options

View File

@ -1,11 +1,9 @@
import { GraphQLClient } from 'graphql-request'
import { GraphQLClient, request } from 'graphql-request'
import { getDriver } from '../../bootstrap/neo4j'
import { request } from 'graphql-request'
export const seedServerHost = 'http://127.0.0.1:4001'
export const testServerHost = 'http://127.0.0.1:4123'
const authenticatedHeaders = async ({ email, password }, host = testServerHost) => {
const authenticatedHeaders = async ({ email, password }, host) => {
const mutation = `
mutation {
login(email:"${email}", password:"${password}"){
@ -19,21 +17,21 @@ const authenticatedHeaders = async ({ email, password }, host = testServerHost)
}
const factories = {
'badge': require('./badges.js').default,
'user': require('./users.js').default,
'badge': require('./badges.js').default,
'user': require('./users.js').default,
'organization': require('./organizations.js').default,
'post': require('./posts.js').default,
'comment': require('./comments.js').default,
'category': require('./categories.js').default,
'tag': require('./tags.js').default,
'report': require('./reports.js').default
'post': require('./posts.js').default,
'comment': require('./comments.js').default,
'category': require('./categories.js').default,
'tag': require('./tags.js').default,
'report': require('./reports.js').default
}
const relationFactories = {
'user': require('./users.js').relate,
'user': require('./users.js').relate,
'organization': require('./organizations.js').relate,
'post': require('./posts.js').relate,
'comment': require('./comments.js').relate
'post': require('./posts.js').relate,
'comment': require('./comments.js').relate
}
export const create = (model, parameters, options) => {
@ -57,7 +55,7 @@ export const cleanDatabase = async (options = {}) => {
try {
return await session.run(cypher)
} catch (error) {
throw(error)
throw (error)
} finally {
session.close()
}
@ -66,8 +64,7 @@ export const cleanDatabase = async (options = {}) => {
export default function factoryFun (options = {}) {
const {
neo4jDriver = getDriver(),
seedServerHost = 'http://127.0.0.1:4001',
testServerHost = 'http://127.0.0.1:4123'
seedServerHost = 'http://127.0.0.1:4001'
} = options
const graphQLClient = new GraphQLClient(seedServerHost)
@ -77,24 +74,24 @@ export default function factoryFun (options = {}) {
seedServerHost,
graphQLClient,
lastResponse: null,
async authenticateAs({email, password}) {
const headers = await authenticatedHeaders({email, password}, seedServerHost)
async authenticateAs ({ email, password }) {
const headers = await authenticatedHeaders({ email, password }, seedServerHost)
this.lastResponse = headers
this.graphQLClient = new GraphQLClient(seedServerHost, { headers })
return this
},
async create(node, properties) {
async create (node, properties) {
const mutation = factories[node](properties)
this.lastResponse = await this.graphQLClient.request(mutation)
return this
},
async relate(node, relationship, properties) {
async relate (node, relationship, properties) {
const mutation = relationFactories[node](relationship, properties)
this.lastResponse = await this.graphQLClient.request(mutation)
return this
},
async cleanDatabase() {
this.lastResponse = await cleanDatabase({driver: this.neo4jDriver})
async cleanDatabase () {
this.lastResponse = await cleanDatabase({ driver: this.neo4jDriver })
return this
}
}

View File

@ -1,4 +1,4 @@
import factoryFun, { create, relate, seedServerHost as host } from './factories'
import factoryFun, { create, relate } from './factories'
/* eslint-disable no-multi-spaces */
(async function () {
@ -79,22 +79,22 @@ import factoryFun, { create, relate, seedServerHost as host } from './factories'
])
await Promise.all([
asAdmin .create('post', { id: 'p0' }),
asAdmin.create('post', { id: 'p0' }),
asModerator.create('post', { id: 'p1' }),
asUser .create('post', { id: 'p2' }),
asTick .create('post', { id: 'p3' }),
asTrick .create('post', { id: 'p4' }),
asTrack .create('post', { id: 'p5' }),
asAdmin .create('post', { id: 'p6' }),
asUser.create('post', { id: 'p2' }),
asTick.create('post', { id: 'p3' }),
asTrick.create('post', { id: 'p4' }),
asTrack.create('post', { id: 'p5' }),
asAdmin.create('post', { id: 'p6' }),
asModerator.create('post', { id: 'p7' }),
asUser .create('post', { id: 'p8' }),
asTick .create('post', { id: 'p9' }),
asTrick .create('post', { id: 'p10' }),
asTrack .create('post', { id: 'p11' }),
asAdmin .create('post', { id: 'p12' }),
asUser.create('post', { id: 'p8' }),
asTick.create('post', { id: 'p9' }),
asTrick.create('post', { id: 'p10' }),
asTrack.create('post', { id: 'p11' }),
asAdmin.create('post', { id: 'p12' }),
asModerator.create('post', { id: 'p13' }),
asUser .create('post', { id: 'p14' }),
asTick .create('post', { id: 'p15' })
asUser.create('post', { id: 'p14' }),
asTick.create('post', { id: 'p15' })
])
await Promise.all([
@ -169,7 +169,7 @@ import factoryFun, { create, relate, seedServerHost as host } from './factories'
])
await Promise.all([
asTick .create('report', { description: 'I don\'t like this comment', resource: { id: 'c1', type: 'comment' } }),
asTick.create('report', { description: 'I don\'t like this comment', resource: { id: 'c1', type: 'comment' } }),
asTrick.create('report', { description: 'I don\'t like this post', resource: { id: 'p1', type: 'contribution' } }),
asTrack.create('report', { description: 'I don\'t like this user', resource: { id: 'u1', type: 'user' } })
])