mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Fix seeds without the use of neode
@appinteractive ping
This commit is contained in:
parent
f024bd3821
commit
1734554a88
@ -1,7 +1,7 @@
|
||||
import { request } from 'graphql-request'
|
||||
import { create, cleanDatabase } from './seed/factories'
|
||||
import jwt from 'jsonwebtoken'
|
||||
import { host } from './jest/helpers'
|
||||
import { testServerHost as host } from './jest/helpers'
|
||||
|
||||
describe('login', () => {
|
||||
const mutation = (params) => {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { request } from 'graphql-request'
|
||||
|
||||
export const host = 'http://127.0.0.1:4123'
|
||||
export const testServerHost = 'http://127.0.0.1:4123'
|
||||
|
||||
export async function authenticatedHeaders ({ email, password }) {
|
||||
export async function authenticatedHeaders ({ email, password }, host = testServerHost) {
|
||||
const mutation = `
|
||||
mutation {
|
||||
login(email:"${email}", password:"${password}"){
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { create, cleanDatabase } from '../seed/factories'
|
||||
import { host, authenticatedHeaders } from '../jest/helpers'
|
||||
import { testServerHost as host, authenticatedHeaders } from '../jest/helpers'
|
||||
import { GraphQLClient } from 'graphql-request'
|
||||
|
||||
describe('authorization', () => {
|
||||
|
||||
@ -3,14 +3,12 @@ export default {
|
||||
Category: require('./categories.js').default,
|
||||
Tags: require('./tags.js').default,
|
||||
|
||||
User: require('./users.js').default,
|
||||
UserBadges: require('./users-badges.js').default,
|
||||
UserBlacklist: require('./users-blacklist.js').default,
|
||||
UserFollows: require('./users-follows.js').default,
|
||||
UserFriends: require('./users-friends.js').default,
|
||||
|
||||
Organization: require('./organizations.js').default,
|
||||
Post: require('./posts.js').default,
|
||||
Comment: require('./comments.js').default,
|
||||
UserShouts: require('./users-shouts.js').default
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import { GraphQLClient } from 'graphql-request'
|
||||
import ApolloClient from 'apollo-client'
|
||||
import gql from 'graphql-tag'
|
||||
import dotenv from 'dotenv'
|
||||
@ -6,25 +7,30 @@ import { InMemoryCache } from 'apollo-cache-inmemory'
|
||||
import neo4j from '../../bootstrap/neo4j'
|
||||
import fetch from 'node-fetch'
|
||||
|
||||
export const seedServerHost = 'http://127.0.0.1:4001'
|
||||
|
||||
dotenv.config()
|
||||
|
||||
const apolloClient = new ApolloClient({
|
||||
link: new HttpLink({ uri: 'http://localhost:4001', fetch }),
|
||||
link: new HttpLink({ uri: seedServerHost, fetch }),
|
||||
cache: new InMemoryCache()
|
||||
})
|
||||
|
||||
const driver = neo4j().getDriver()
|
||||
|
||||
const builders = {
|
||||
'user': require('./users.js').default
|
||||
'user': require('./users.js').default,
|
||||
'post': require('./posts.js').default
|
||||
}
|
||||
|
||||
const buildMutation = (model, parameters) => {
|
||||
return builders[model](parameters)
|
||||
}
|
||||
|
||||
const create = (model, parameters) => {
|
||||
return apolloClient.mutate({ mutation: gql(buildMutation(model, parameters)) })
|
||||
const create = (model, parameters, options) => {
|
||||
const graphQLClient = new GraphQLClient(seedServerHost, options)
|
||||
const mutation = buildMutation(model, parameters)
|
||||
return graphQLClient.request(mutation)
|
||||
}
|
||||
|
||||
const cleanDatabase = async () => {
|
||||
|
||||
34
src/seed/factories/posts.js
Normal file
34
src/seed/factories/posts.js
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
import faker from 'faker'
|
||||
|
||||
export default function (params) {
|
||||
const {
|
||||
id = `u${faker.random.number()}`,
|
||||
title = faker.lorem.sentence(),
|
||||
content = [
|
||||
faker.lorem.sentence(),
|
||||
faker.lorem.sentence(),
|
||||
faker.lorem.sentence(),
|
||||
faker.lorem.sentence(),
|
||||
faker.lorem.sentence(),
|
||||
].join('. '),
|
||||
image = faker.image.imageUrl(),
|
||||
visibility = 'public',
|
||||
disabled = false,
|
||||
deleted = false
|
||||
} = params
|
||||
|
||||
return `
|
||||
mutation {
|
||||
CreatePost(
|
||||
id: "${id}",
|
||||
title: "${title}",
|
||||
content: "${content}",
|
||||
image: "${image}",
|
||||
visibility: ${visibility},
|
||||
disabled: ${disabled},
|
||||
deleted: ${deleted}
|
||||
) { id, title }
|
||||
}
|
||||
`
|
||||
}
|
||||
@ -2,23 +2,27 @@ import faker from 'faker'
|
||||
|
||||
export default function (params) {
|
||||
const {
|
||||
id = `u${faker.random.number()}`,
|
||||
name = faker.name.findName(),
|
||||
email = faker.internet.email(),
|
||||
password = '1234',
|
||||
avatar = faker.internet.avatar()
|
||||
role = 'user',
|
||||
avatar = faker.internet.avatar(),
|
||||
disabled = false,
|
||||
deleted = false
|
||||
} = params
|
||||
|
||||
return `
|
||||
mutation {
|
||||
u1: CreateUser(
|
||||
id: "u1",
|
||||
CreateUser(
|
||||
id: "${id}",
|
||||
name: "${name}",
|
||||
password: "${password}",
|
||||
email: "${email}",
|
||||
avatar: "${avatar}",
|
||||
role: admin,
|
||||
disabled: false,
|
||||
deleted: false) {
|
||||
role: ${role},
|
||||
disabled: ${disabled},
|
||||
deleted: ${deleted}) {
|
||||
id
|
||||
name
|
||||
email
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { apolloClient } from './factories'
|
||||
import { create, apolloClient, seedServerHost as host } from './factories'
|
||||
import { authenticatedHeaders } from '../jest/helpers.js'
|
||||
import gql from 'graphql-tag'
|
||||
import asyncForEach from '../helpers/asyncForEach'
|
||||
import seed from './data'
|
||||
@ -6,6 +7,32 @@ import seed from './data'
|
||||
(async function () {
|
||||
|
||||
// prefer factories
|
||||
try {
|
||||
const [admin, moderator, user, ...otherUsers] = await Promise.all([
|
||||
create('user', {id: 'u1', name: 'Peter Lustig' , role: 'admin' , email: 'admin@example.org', password: '1234'}),
|
||||
create('user', {id: 'u2', name: 'Bob der Baumeister', role: 'moderator', email: 'moderator@example.org'}),
|
||||
create('user', {id: 'u3', name: 'Jenny Rostock' , role: 'user' , email: 'user@example.org'}),
|
||||
create('user', {id: 'u4', name: 'Angie Banjie' , role: 'user' , email: 'angie@example.org'}),
|
||||
])
|
||||
|
||||
// TODO: other users, not only admin, are authors of a post
|
||||
const headers = await authenticatedHeaders({
|
||||
email: 'admin@example.org',
|
||||
password: '1234'
|
||||
}, host)
|
||||
await create('post', {id: 'p1'}, { headers } )
|
||||
await create('post', {id: 'p2'}, { headers } )
|
||||
await create('post', {id: 'p3'}, { headers } )
|
||||
await create('post', {id: 'p4'}, { headers } )
|
||||
await create('post', {id: 'p5'}, { headers } )
|
||||
await create('post', {id: 'p6'}, { headers } )
|
||||
} catch(err) {
|
||||
/* eslint-disable-next-line no-console */
|
||||
console.error(err)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
|
||||
let data = {}
|
||||
// legacy seeds
|
||||
await asyncForEach(Object.keys(seed), async key => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user