mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
refactor: Make db:setup init stage of migrate
This commit is contained in:
parent
daf2c40cae
commit
b063847849
@ -19,7 +19,7 @@ before_script:
|
|||||||
- docker-compose -f docker-compose.yml -f docker-compose.build-and-test.yml build # just tagging, just be quite fast
|
- docker-compose -f docker-compose.yml -f docker-compose.build-and-test.yml build # just tagging, just be quite fast
|
||||||
- docker-compose -f docker-compose.yml -f docker-compose.build-and-test.yml up -d
|
- docker-compose -f docker-compose.yml -f docker-compose.build-and-test.yml up -d
|
||||||
- wait-on http://localhost:7474
|
- wait-on http://localhost:7474
|
||||||
- docker-compose -f docker-compose.yml -f docker-compose.build-and-test.yml exec neo4j db_setup
|
- docker-compose -f docker-compose.yml -f docker-compose.build-and-test.yml exec backend yarn run db:migrate init
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- export CYPRESS_RETRIES=1
|
- export CYPRESS_RETRIES=1
|
||||||
|
|||||||
@ -61,7 +61,7 @@ backend is running:
|
|||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="Docker" %}
|
{% tab title="Docker" %}
|
||||||
```bash
|
```bash
|
||||||
docker-compose exec backend yarn run db:setup
|
docker-compose exec backend yarn run db:migrate init
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ docker-compose exec backend yarn run db:setup
|
|||||||
```bash
|
```bash
|
||||||
# in folder backend/
|
# in folder backend/
|
||||||
# make sure your database is running on http://localhost:7474/browser/
|
# make sure your database is running on http://localhost:7474/browser/
|
||||||
yarn run db:setup
|
yarn run db:migrate init
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
@ -94,7 +94,7 @@ $ docker-compose exec backend yarn run db:reset
|
|||||||
# you could also wipe out your neo4j database and delete all volumes with:
|
# you could also wipe out your neo4j database and delete all volumes with:
|
||||||
$ docker-compose down -v
|
$ docker-compose down -v
|
||||||
# if container is not running, run this command to set up your database indeces and contstraints
|
# if container is not running, run this command to set up your database indeces and contstraints
|
||||||
$ docker-compose run neo4j db_setup
|
$ docker-compose run backend yarn run db:migrate init
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
|
|||||||
@ -10,9 +10,9 @@
|
|||||||
"dev:debug": "nodemon --exec babel-node --inspect=0.0.0.0:9229 src/ -e js,gql",
|
"dev:debug": "nodemon --exec babel-node --inspect=0.0.0.0:9229 src/ -e js,gql",
|
||||||
"lint": "eslint src --config .eslintrc.js",
|
"lint": "eslint src --config .eslintrc.js",
|
||||||
"test": "jest --forceExit --detectOpenHandles --runInBand",
|
"test": "jest --forceExit --detectOpenHandles --runInBand",
|
||||||
"db:reset": "babel-node src/seed/reset-db.js",
|
"db:clean": "babel-node src/db/clean.js",
|
||||||
"db:seed": "babel-node src/seed/seed-db.js",
|
"db:reset": "yarn run db:clean",
|
||||||
"db:setup": "babel-node src/db/setup.js",
|
"db:seed": "babel-node src/db/seed.js",
|
||||||
"__migrate": "migrate --compiler 'js:@babel/register' --migrations-dir ./src/db/migrations",
|
"__migrate": "migrate --compiler 'js:@babel/register' --migrations-dir ./src/db/migrations",
|
||||||
"db:migrate": "yarn run __migrate --store ./src/db/migrate/store.js",
|
"db:migrate": "yarn run __migrate --store ./src/db/migrate/store.js",
|
||||||
"db:migrate:create": "yarn run __migrate --template-file ./src/db/migrate/template.js create",
|
"db:migrate:create": "yarn run __migrate --template-file ./src/db/migrate/template.js create",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { handler } from './webfinger'
|
import { handler } from './webfinger'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { getDriver } from '../../bootstrap/neo4j'
|
import { getDriver } from '../../db/neo4j'
|
||||||
|
|
||||||
let resource, res, json, status, contentType
|
let resource, res, json, status, contentType
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { cleanDatabase } from './factories'
|
import { cleanDatabase } from '../factories'
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
if (process.env.NODE_ENV === 'production') {
|
||||||
throw new Error(`You cannot clean the database in production environment!`)
|
throw new Error(`You cannot clean the database in production environment!`)
|
||||||
@ -1,6 +1,14 @@
|
|||||||
import { getDriver } from '../../bootstrap/neo4j'
|
import { getDriver, getNeode } from '../../db/neo4j'
|
||||||
|
|
||||||
class Store {
|
class Store {
|
||||||
|
async init(fn) {
|
||||||
|
const neode = getNeode()
|
||||||
|
await getNeode().schema.install()
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.log('Successfully created database indices and constraints!')
|
||||||
|
neode.driver.close()
|
||||||
|
}
|
||||||
|
|
||||||
async load(fn) {
|
async load(fn) {
|
||||||
const driver = getDriver()
|
const driver = getDriver()
|
||||||
const session = driver.session()
|
const session = driver.session()
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
import { throwError, of, concat } from 'rxjs'
|
import { throwError, concat } from 'rxjs'
|
||||||
import { tap, flatMap, mergeMap, map, catchError, filter } from 'rxjs/operators'
|
import { flatMap, mergeMap, map, catchError, filter } from 'rxjs/operators'
|
||||||
import CONFIG from '../../src/config'
|
import { getDriver } from '../neo4j'
|
||||||
import { getNeode, getDriver } from '../../src/bootstrap/neo4j'
|
import normalizeEmail from '../../schema/resolvers//helpers/normalizeEmail'
|
||||||
import normalizeEmail from '../../src/schema/resolvers//helpers/normalizeEmail'
|
|
||||||
|
|
||||||
export const description = `
|
export const description = `
|
||||||
This migration merges duplicate :User and :EmailAddress nodes. It became
|
This migration merges duplicate :User and :EmailAddress nodes. It became
|
||||||
@ -13,7 +12,7 @@ export const description = `
|
|||||||
|
|
||||||
This led to about 40 duplicate user and email address nodes in our database.
|
This led to about 40 duplicate user and email address nodes in our database.
|
||||||
`
|
`
|
||||||
export function up (next) {
|
export function up(next) {
|
||||||
const driver = getDriver()
|
const driver = getDriver()
|
||||||
const rxSession = driver.rxSession()
|
const rxSession = driver.rxSession()
|
||||||
rxSession
|
rxSession
|
||||||
@ -22,18 +21,19 @@ export function up (next) {
|
|||||||
flatMap(txc =>
|
flatMap(txc =>
|
||||||
concat(
|
concat(
|
||||||
txc
|
txc
|
||||||
.run("MATCH (email:EmailAddress) RETURN email {.email}")
|
.run('MATCH (email:EmailAddress) RETURN email {.email}')
|
||||||
.records()
|
.records()
|
||||||
.pipe(
|
.pipe(
|
||||||
map(record => {
|
map(record => {
|
||||||
const { email } = record.get('email')
|
const { email } = record.get('email')
|
||||||
const normalizedEmail = normalizeEmail(email)
|
const normalizedEmail = normalizeEmail(email)
|
||||||
return { email, normalizedEmail }
|
return { email, normalizedEmail }
|
||||||
}),
|
}),
|
||||||
filter(({email, normalizedEmail}) => email !== normalizedEmail),
|
filter(({ email, normalizedEmail }) => email !== normalizedEmail),
|
||||||
mergeMap(({email, normalizedEmail})=> {
|
mergeMap(({ email, normalizedEmail }) => {
|
||||||
return txc
|
return txc
|
||||||
.run(`
|
.run(
|
||||||
|
`
|
||||||
MATCH (oldUser:User)-[:PRIMARY_EMAIL]->(oldEmail:EmailAddress {email: $email}), (oldUser)-[previousRelationship]-(oldEmail)
|
MATCH (oldUser:User)-[:PRIMARY_EMAIL]->(oldEmail:EmailAddress {email: $email}), (oldUser)-[previousRelationship]-(oldEmail)
|
||||||
MATCH (user:User)-[:PRIMARY_EMAIL]->(email:EmailAddress {email: $normalizedEmail})
|
MATCH (user:User)-[:PRIMARY_EMAIL]->(email:EmailAddress {email: $normalizedEmail})
|
||||||
DELETE previousRelationship
|
DELETE previousRelationship
|
||||||
@ -41,37 +41,44 @@ export function up (next) {
|
|||||||
CALL apoc.refactor.mergeNodes([user, oldUser], { properties: 'discard', mergeRels: true }) YIELD node as mergedUser
|
CALL apoc.refactor.mergeNodes([user, oldUser], { properties: 'discard', mergeRels: true }) YIELD node as mergedUser
|
||||||
CALL apoc.refactor.mergeNodes([email, oldEmail], { properties: 'discard', mergeRels: true }) YIELD node as mergedEmail
|
CALL apoc.refactor.mergeNodes([email, oldEmail], { properties: 'discard', mergeRels: true }) YIELD node as mergedEmail
|
||||||
RETURN user {.*}, email {.*}
|
RETURN user {.*}, email {.*}
|
||||||
`, { email, normalizedEmail })
|
`,
|
||||||
.records()
|
{ email, normalizedEmail },
|
||||||
.pipe(
|
)
|
||||||
map(r => ({
|
.records()
|
||||||
oldEmail: email,
|
.pipe(
|
||||||
email: r.get('email'),
|
map(r => ({
|
||||||
user: r.get('user'),
|
oldEmail: email,
|
||||||
}))
|
email: r.get('email'),
|
||||||
)
|
user: r.get('user'),
|
||||||
}),
|
})),
|
||||||
),
|
)
|
||||||
|
}),
|
||||||
|
),
|
||||||
txc.commit(),
|
txc.commit(),
|
||||||
).pipe(catchError(err => txc.rollback().pipe(throwError(err))))
|
).pipe(catchError(err => txc.rollback().pipe(throwError(err)))),
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
.subscribe({
|
.subscribe({
|
||||||
next: ({ user, email, oldUser, oldEmail }) => console.log(`
|
next: ({ user, email, oldUser, oldEmail }) =>
|
||||||
Merged:
|
// eslint-disable-next-line no-console
|
||||||
=============================
|
console.log(`
|
||||||
userId: ${user.id}
|
Merged:
|
||||||
email: ${oldEmail} => ${email.email}
|
=============================
|
||||||
=============================
|
userId: ${user.id}
|
||||||
`),
|
email: ${oldEmail} => ${email.email}
|
||||||
|
=============================
|
||||||
|
`),
|
||||||
complete: () => {
|
complete: () => {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
console.log('Merging of duplicate users completed')
|
console.log('Merging of duplicate users completed')
|
||||||
next()
|
next()
|
||||||
},
|
},
|
||||||
error: error => throw new Error(error)
|
error: error => {
|
||||||
|
throw new Error(error)
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function down () {
|
export function down() {
|
||||||
throw new Error("Irreversible migration")
|
throw new Error('Irreversible migration')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,8 +2,8 @@ import faker from 'faker'
|
|||||||
import sample from 'lodash/sample'
|
import sample from 'lodash/sample'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../server'
|
import createServer from '../server'
|
||||||
import Factory from './factories'
|
import Factory from '../factories'
|
||||||
import { getNeode, getDriver } from '../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../db/neo4j'
|
||||||
import { gql } from '../helpers/jest'
|
import { gql } from '../helpers/jest'
|
||||||
|
|
||||||
const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
|
const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
|
||||||
@ -1,7 +0,0 @@
|
|||||||
import { getNeode } from '../bootstrap/neo4j'
|
|
||||||
|
|
||||||
(async() => {
|
|
||||||
await getNeode().schema.install()
|
|
||||||
console.log('Schema installed!')
|
|
||||||
process.exit(0)
|
|
||||||
})()
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
import { getDriver, getNeode } from '../../bootstrap/neo4j'
|
import { getDriver, getNeode } from '../db/neo4j'
|
||||||
|
|
||||||
const factories = {
|
const factories = {
|
||||||
Badge: require('./badges.js').default,
|
Badge: require('./badges.js').default,
|
||||||
@ -1,6 +1,6 @@
|
|||||||
import faker from 'faker'
|
import faker from 'faker'
|
||||||
import uuid from 'uuid/v4'
|
import uuid from 'uuid/v4'
|
||||||
import encryptPassword from '../../helpers/encryptPassword'
|
import encryptPassword from '../helpers/encryptPassword'
|
||||||
import slugify from 'slug'
|
import slugify from 'slug'
|
||||||
|
|
||||||
export default function create() {
|
export default function create() {
|
||||||
@ -1,5 +0,0 @@
|
|||||||
//* This is a fake ES2015 template string, just to benefit of syntax
|
|
||||||
// highlighting of `gql` template strings in certain editors.
|
|
||||||
export function gql(strings) {
|
|
||||||
return strings.join('')
|
|
||||||
}
|
|
||||||
@ -1,5 +1,5 @@
|
|||||||
import Factory from '../seed/factories/index'
|
import Factory from '../factories/index'
|
||||||
import { getDriver, getNeode } from '../bootstrap/neo4j'
|
import { getDriver, getNeode } from '../db/neo4j'
|
||||||
import decode from './decode'
|
import decode from './decode'
|
||||||
|
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
let server
|
let server
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
let server, query, mutate, notifiedUser, authenticatedUser
|
let server, query, mutate, notifiedUser, authenticatedUser
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { gql } from '../helpers/jest'
|
import { gql } from '../helpers/jest'
|
||||||
import Factory from '../seed/factories'
|
import Factory from '../factories'
|
||||||
import { getNeode, getDriver } from '../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../db/neo4j'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../server'
|
import createServer from '../server'
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { rule, shield, deny, allow, or } from 'graphql-shield'
|
import { rule, shield, deny, allow, or } from 'graphql-shield'
|
||||||
import { getNeode } from '../bootstrap/neo4j'
|
import { getNeode } from '../db/neo4j'
|
||||||
import CONFIG from '../config'
|
import CONFIG from '../config'
|
||||||
|
|
||||||
const debug = !!CONFIG.DEBUG
|
const debug = !!CONFIG.DEBUG
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../server'
|
import createServer from '../server'
|
||||||
import Factory from '../seed/factories'
|
import Factory from '../factories'
|
||||||
import { gql } from '../helpers/jest'
|
import { gql } from '../helpers/jest'
|
||||||
import { getDriver, getNeode } from '../bootstrap/neo4j'
|
import { getDriver, getNeode } from '../db/neo4j'
|
||||||
|
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
const instance = getNeode()
|
const instance = getNeode()
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Factory from '../seed/factories'
|
import Factory from '../factories'
|
||||||
import { gql } from '../helpers/jest'
|
import { gql } from '../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../db/neo4j'
|
||||||
import createServer from '../server'
|
import createServer from '../server'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import Factory from '../seed/factories'
|
import Factory from '../factories'
|
||||||
import { getNeode } from '../bootstrap/neo4j'
|
import { getNeode } from '../db/neo4j'
|
||||||
|
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
const neode = getNeode()
|
const neode = getNeode()
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
|
|
||||||
const driver = getDriver()
|
const driver = getDriver()
|
||||||
const neode = getNeode()
|
const neode = getNeode()
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
let mutate, query, authenticatedUser, variables
|
let mutate, query, authenticatedUser, variables
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getDriver, getNeode } from '../../bootstrap/neo4j'
|
import { getDriver, getNeode } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { getNeode } from '../../bootstrap/neo4j'
|
import { getNeode } from '../../db/neo4j'
|
||||||
|
|
||||||
const neode = getNeode()
|
const neode = getNeode()
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { getDriver, getNeode } from '../../bootstrap/neo4j'
|
import { getDriver, getNeode } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getDriver } from '../../bootstrap/neo4j'
|
import { getDriver } from '../../db/neo4j'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../.././server'
|
import createServer from '../.././server'
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createPasswordReset from './helpers/createPasswordReset'
|
import createPasswordReset from './helpers/createPasswordReset'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
const driver = getDriver()
|
const driver = getDriver()
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { UserInputError } from 'apollo-server'
|
import { UserInputError } from 'apollo-server'
|
||||||
import { getNeode } from '../../bootstrap/neo4j'
|
import { getNeode } from '../../db/neo4j'
|
||||||
import fileUpload from './fileUpload'
|
import fileUpload from './fileUpload'
|
||||||
import encryptPassword from '../../helpers/encryptPassword'
|
import encryptPassword from '../../helpers/encryptPassword'
|
||||||
import generateNonce from './helpers/generateNonce'
|
import generateNonce from './helpers/generateNonce'
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getDriver, getNeode } from '../../bootstrap/neo4j'
|
import { getDriver, getNeode } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../.././server'
|
import createServer from '../.././server'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getDriver, getNeode } from '../../bootstrap/neo4j'
|
import { getDriver, getNeode } from '../../db/neo4j'
|
||||||
|
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
const instance = getNeode()
|
const instance = getNeode()
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { getNeode } from '../../bootstrap/neo4j'
|
import { getNeode } from '../../db/neo4j'
|
||||||
import { UserInputError } from 'apollo-server'
|
import { UserInputError } from 'apollo-server'
|
||||||
|
|
||||||
const neode = getNeode()
|
const neode = getNeode()
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
let mutate, query, authenticatedUser, variables
|
let mutate, query, authenticatedUser, variables
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { getNeode } from '../../bootstrap/neo4j'
|
import { getNeode } from '../../db/neo4j'
|
||||||
import Resolver from './helpers/Resolver'
|
import Resolver from './helpers/Resolver'
|
||||||
|
|
||||||
const neode = getNeode()
|
const neode = getNeode()
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
|
|
||||||
const driver = getDriver()
|
const driver = getDriver()
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
|
|
||||||
let query, authenticatedUser
|
let query, authenticatedUser
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import encode from '../../jwt/encode'
|
import encode from '../../jwt/encode'
|
||||||
import bcrypt from 'bcryptjs'
|
import bcrypt from 'bcryptjs'
|
||||||
import { AuthenticationError } from 'apollo-server'
|
import { AuthenticationError } from 'apollo-server'
|
||||||
import { getNeode } from '../../bootstrap/neo4j'
|
import { getNeode } from '../../db/neo4j'
|
||||||
import normalizeEmail from './helpers/normalizeEmail'
|
import normalizeEmail from './helpers/normalizeEmail'
|
||||||
import log from './helpers/databaseLogger'
|
import log from './helpers/databaseLogger'
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import jwt from 'jsonwebtoken'
|
import jwt from 'jsonwebtoken'
|
||||||
import CONFIG from './../../config'
|
import CONFIG from './../../config'
|
||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer, { context } from '../../server'
|
import createServer, { context } from '../../server'
|
||||||
import encode from '../../jwt/encode'
|
import encode from '../../jwt/encode'
|
||||||
import { getNeode } from '../../bootstrap/neo4j'
|
import { getNeode } from '../../db/neo4j'
|
||||||
|
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
const neode = getNeode()
|
const neode = getNeode()
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { neo4jgraphql } from 'neo4j-graphql-js'
|
import { neo4jgraphql } from 'neo4j-graphql-js'
|
||||||
import fileUpload from './fileUpload'
|
import fileUpload from './fileUpload'
|
||||||
import { getNeode } from '../../bootstrap/neo4j'
|
import { getNeode } from '../../db/neo4j'
|
||||||
import { UserInputError, ForbiddenError } from 'apollo-server'
|
import { UserInputError, ForbiddenError } from 'apollo-server'
|
||||||
import Resolver from './helpers/Resolver'
|
import Resolver from './helpers/Resolver'
|
||||||
import log from './helpers/databaseLogger'
|
import log from './helpers/databaseLogger'
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Factory from '../../seed/factories'
|
import Factory from '../../factories'
|
||||||
import { gql } from '../../helpers/jest'
|
import { gql } from '../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer from '../../server'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../../../server'
|
import createServer from '../../../server'
|
||||||
import Factory from '../../../seed/factories'
|
import Factory from '../../../factories'
|
||||||
import { gql } from '../../../helpers/jest'
|
import { gql } from '../../../helpers/jest'
|
||||||
import { getNeode, getDriver } from '../../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../../db/neo4j'
|
||||||
|
|
||||||
const driver = getDriver()
|
const driver = getDriver()
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { gql } from '../../../helpers/jest'
|
import { gql } from '../../../helpers/jest'
|
||||||
import Factory from '../../../seed/factories'
|
import Factory from '../../../factories'
|
||||||
import { getNeode, getDriver } from '../../../bootstrap/neo4j'
|
import { getNeode, getDriver } from '../../../db/neo4j'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import createServer from '../../../server'
|
import createServer from '../../../server'
|
||||||
|
|
||||||
|
|||||||
@ -1,134 +0,0 @@
|
|||||||
const _ = require('lodash')
|
|
||||||
const faker = require('faker')
|
|
||||||
const unsplashTopics = [
|
|
||||||
'love',
|
|
||||||
'family',
|
|
||||||
'spring',
|
|
||||||
'business',
|
|
||||||
'nature',
|
|
||||||
'travel',
|
|
||||||
'happy',
|
|
||||||
'landscape',
|
|
||||||
'health',
|
|
||||||
'friends',
|
|
||||||
'computer',
|
|
||||||
'autumn',
|
|
||||||
'space',
|
|
||||||
'animal',
|
|
||||||
'smile',
|
|
||||||
'face',
|
|
||||||
'people',
|
|
||||||
'portrait',
|
|
||||||
'amazing',
|
|
||||||
]
|
|
||||||
let unsplashTopicsTmp = []
|
|
||||||
|
|
||||||
const ngoLogos = [
|
|
||||||
'http://www.fetchlogos.com/wp-content/uploads/2015/11/Girl-Scouts-Of-The-Usa-Logo.jpg',
|
|
||||||
'http://logos.textgiraffe.com/logos/logo-name/Ngo-designstyle-friday-m.png',
|
|
||||||
'http://seeklogo.com/images/N/ngo-logo-BD53A3E024-seeklogo.com.png',
|
|
||||||
'https://dcassetcdn.com/design_img/10133/25833/25833_303600_10133_image.jpg',
|
|
||||||
'https://cdn.tutsplus.com/vector/uploads/legacy/articles/08bad_ngologos/20.jpg',
|
|
||||||
'https://cdn.tutsplus.com/vector/uploads/legacy/articles/08bad_ngologos/33.jpg',
|
|
||||||
null,
|
|
||||||
]
|
|
||||||
|
|
||||||
const difficulties = ['easy', 'medium', 'hard']
|
|
||||||
|
|
||||||
export default {
|
|
||||||
randomItem: (items, filter) => {
|
|
||||||
const ids = filter
|
|
||||||
? Object.keys(items).filter(id => {
|
|
||||||
return filter(items[id])
|
|
||||||
})
|
|
||||||
: _.keys(items)
|
|
||||||
const randomIds = _.shuffle(ids)
|
|
||||||
return items[randomIds.pop()]
|
|
||||||
},
|
|
||||||
randomItems: (items, key = 'id', min = 1, max = 1) => {
|
|
||||||
const randomIds = _.shuffle(_.keys(items))
|
|
||||||
const res = []
|
|
||||||
|
|
||||||
const count = _.random(min, max)
|
|
||||||
|
|
||||||
for (let i = 0; i < count; i++) {
|
|
||||||
let r = items[randomIds.pop()][key]
|
|
||||||
if (key === 'id') {
|
|
||||||
r = r.toString()
|
|
||||||
}
|
|
||||||
res.push(r)
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
},
|
|
||||||
random: items => {
|
|
||||||
return _.shuffle(items).pop()
|
|
||||||
},
|
|
||||||
randomDifficulty: () => {
|
|
||||||
return _.shuffle(difficulties).pop()
|
|
||||||
},
|
|
||||||
randomLogo: () => {
|
|
||||||
return _.shuffle(ngoLogos).pop()
|
|
||||||
},
|
|
||||||
randomUnsplashUrl: () => {
|
|
||||||
if (Math.random() < 0.6) {
|
|
||||||
// do not attach images in 60 percent of the cases (faster seeding)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (unsplashTopicsTmp.length < 2) {
|
|
||||||
unsplashTopicsTmp = _.shuffle(unsplashTopics)
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
'https://source.unsplash.com/daily?' + unsplashTopicsTmp.pop() + ',' + unsplashTopicsTmp.pop()
|
|
||||||
)
|
|
||||||
},
|
|
||||||
randomCategories: (seederstore, allowEmpty = false) => {
|
|
||||||
let count = Math.round(Math.random() * 3)
|
|
||||||
if (allowEmpty === false && count === 0) {
|
|
||||||
count = 1
|
|
||||||
}
|
|
||||||
const categorieIds = _.shuffle(_.keys(seederstore.categories))
|
|
||||||
const ids = []
|
|
||||||
for (let i = 0; i < count; i++) {
|
|
||||||
ids.push(categorieIds.pop())
|
|
||||||
}
|
|
||||||
return ids
|
|
||||||
},
|
|
||||||
randomAddresses: () => {
|
|
||||||
const count = Math.round(Math.random() * 3)
|
|
||||||
const addresses = []
|
|
||||||
for (let i = 0; i < count; i++) {
|
|
||||||
addresses.push({
|
|
||||||
city: faker.address.city(),
|
|
||||||
zipCode: faker.address.zipCode(),
|
|
||||||
street: faker.address.streetAddress(),
|
|
||||||
country: faker.address.countryCode(),
|
|
||||||
lat: 54.032726 - Math.random() * 10,
|
|
||||||
lng: 6.558838 + Math.random() * 10,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return addresses
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* Get array of ids from the given seederstore items after mapping them by the key in the values
|
|
||||||
*
|
|
||||||
* @param items items from the seederstore
|
|
||||||
* @param values values for which you need the ids
|
|
||||||
* @param key the field key that is represented in the values (slug, name, etc.)
|
|
||||||
*/
|
|
||||||
mapIdsByKey: (items, values, key) => {
|
|
||||||
const res = []
|
|
||||||
values.forEach(value => {
|
|
||||||
res.push(_.find(items, [key, value]).id.toString())
|
|
||||||
})
|
|
||||||
return res
|
|
||||||
},
|
|
||||||
genInviteCode: () => {
|
|
||||||
const chars = '23456789abcdefghkmnpqrstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ'
|
|
||||||
let code = ''
|
|
||||||
for (let i = 0; i < 8; i++) {
|
|
||||||
const n = _.random(0, chars.length - 1)
|
|
||||||
code += chars.substr(n, 1)
|
|
||||||
}
|
|
||||||
return code
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@ -3,7 +3,7 @@ import helmet from 'helmet'
|
|||||||
import { ApolloServer } from 'apollo-server-express'
|
import { ApolloServer } from 'apollo-server-express'
|
||||||
import CONFIG from './config'
|
import CONFIG from './config'
|
||||||
import middleware from './middleware'
|
import middleware from './middleware'
|
||||||
import { getNeode, getDriver } from './bootstrap/neo4j'
|
import { getNeode, getDriver } from './db/neo4j'
|
||||||
import decode from './jwt/decode'
|
import decode from './jwt/decode'
|
||||||
import schema from './schema'
|
import schema from './schema'
|
||||||
import webfinger from './activitypub/routes/webfinger'
|
import webfinger from './activitypub/routes/webfinger'
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { Given, When, Then, AfterAll } from 'cucumber'
|
|||||||
import { expect } from 'chai'
|
import { expect } from 'chai'
|
||||||
// import { client } from '../../../src/activitypub/apollo-client'
|
// import { client } from '../../../src/activitypub/apollo-client'
|
||||||
import { GraphQLClient } from 'graphql-request'
|
import { GraphQLClient } from 'graphql-request'
|
||||||
import Factory from '../../../src/seed/factories'
|
import Factory from '../../../src/factories'
|
||||||
const debug = require('debug')('ea:test:steps')
|
const debug = require('debug')('ea:test:steps')
|
||||||
|
|
||||||
const factory = Factory()
|
const factory = Factory()
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import Factory from '../../backend/src/seed/factories'
|
import Factory from '../../backend/src/factories'
|
||||||
import { getDriver, getNeode } from '../../backend/src/bootstrap/neo4j'
|
import { getDriver, getNeode } from '../../backend/src/db/neo4j'
|
||||||
|
|
||||||
const neo4jConfigs = {
|
const neo4jConfigs = {
|
||||||
uri: Cypress.env('NEO4J_URI'),
|
uri: Cypress.env('NEO4J_URI'),
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// features/support/steps.js
|
// features/support/steps.js
|
||||||
import { Given, When, Then, After, AfterAll } from 'cucumber'
|
import { Given, When, Then, After, AfterAll } from 'cucumber'
|
||||||
import Factory from '../../backend/src/seed/factories'
|
import Factory from '../../backend/src/factories'
|
||||||
import dotenv from 'dotenv'
|
import dotenv from 'dotenv'
|
||||||
import expect from 'expect'
|
import expect from 'expect'
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user