seed simple confired creations

This commit is contained in:
Moriz Wahl 2022-03-15 19:28:46 +01:00
parent 05a65aa98f
commit a234266493
4 changed files with 86 additions and 5 deletions

View File

@ -0,0 +1,7 @@
export interface CreationInterface {
email: string
amount: number
memo: string
creationDate: string
confirmed?: boolean
}

View File

@ -0,0 +1,29 @@
import { CreationInterface } from './CreationInterface'
const lastMonth = (date: Date): string => {
return new Date(date.getFullYear(), date.getMonth() - 1, 1).toISOString()
}
export const creations: CreationInterface[] = [
{
email: 'bibi@bloxberg.de',
amount: 1000,
memo: 'Herzlich Willkommen bei Gradido!',
creationDate: lastMonth(new Date()),
confirmed: true,
},
{
email: 'bob@baumeister.de',
amount: 1000,
memo: 'Herzlich Willkommen bei Gradido!',
creationDate: lastMonth(new Date()),
confirmed: true,
},
{
email: 'raeuber@hotzenplotz.de',
amount: 1000,
memo: 'Herzlich Willkommen bei Gradido!',
creationDate: lastMonth(new Date()),
confirmed: true,
},
]

View File

@ -0,0 +1,38 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { createPendingCreation, confirmPendingCreation } from '@/seeds/graphql/mutations'
import { login } from '@/seeds/graphql/queries'
import { CreationInterface } from '@/seeds/creation/CreationInterface'
import { ApolloServerTestClient } from 'apollo-server-testing'
import { User } from '@entity/User'
import { AdminPendingCreation } from '@entity/AdminPendingCreation'
// import CONFIG from '@/config/index'
export const creationFactory = async (
client: ApolloServerTestClient,
creation: CreationInterface,
): Promise<void> => {
const { mutate, query } = client
// get Peter Lustig
const peterLustig = await User.findOneOrFail({ where: { email: 'peter@lustig.de' } })
const variables = { ...creation, moderator: peterLustig.id }
// login as Peter Lustig (admin)
await query({ query: login, variables: { email: 'peter@lustig.de', password: 'Aa12345_' } })
await mutate({ mutation: createPendingCreation, variables })
// get User
const user = await User.findOneOrFail({ where: { email: creation.email } })
if (creation.confirmed) {
const pendingCreation = await AdminPendingCreation.findOneOrFail({
where: { userId: user.id },
order: { created: 'DESC' },
})
await mutate({ mutation: confirmPendingCreation, variables: { id: pendingCreation.id } })
}
}

View File

@ -7,14 +7,16 @@ import { createTestClient } from 'apollo-server-testing'
import { name, internet, random } from 'faker'
import { users } from './users/index'
import { creations } from './creation/index'
import { userFactory } from './factory/user'
import { creationFactory } from './factory/creation'
import { entities } from '@entity/index'
const context = {
token: '',
setHeaders: {
push: (value: string): void => {
context.token = value
push: (value: { key: string; value: string }): void => {
context.token = value.value
},
// eslint-disable-next-line @typescript-eslint/no-empty-function
forEach: (): void => {},
@ -38,18 +40,18 @@ const resetEntity = async (entity: any) => {
const run = async () => {
const server = await createServer(context)
const testClient = createTestClient(server.apollo)
const seedClient = createTestClient(server.apollo)
const { con } = server
await cleanDB()
// seed the standard users
for (let i = 0; i < users.length; i++) {
await userFactory(testClient, users[i])
await userFactory(seedClient, users[i])
}
// seed 100 random users
for (let i = 0; i < 100; i++) {
await userFactory(testClient, {
await userFactory(seedClient, {
firstName: name.firstName(),
lastName: name.lastName(),
email: internet.email(),
@ -57,6 +59,11 @@ const run = async () => {
})
}
// create GDD
for (let i = 0; i < creations.length; i++) {
await creationFactory(seedClient, creations[i])
}
await con.close()
}