Merge branch 'master' into 2474-Incorrectly-Email-Label-on-InputEmail

This commit is contained in:
Alexander Friedland 2023-01-10 14:09:14 +01:00 committed by GitHub
commit f5ec665333
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 43 deletions

View File

@ -1146,13 +1146,21 @@ describe('ContributionResolver', () => {
const now = new Date() const now = new Date()
beforeAll(async () => { beforeAll(async () => {
creation = await creationFactory(testEnv, { await mutate({
email: 'peter@lustig.de', mutation: adminCreateContribution,
amount: 400, variables: {
memo: 'Herzlich Willkommen bei Gradido!', email: 'peter@lustig.de',
creationDate: contributionDateFormatter( amount: 400,
new Date(now.getFullYear(), now.getMonth() - 1, 1), memo: 'Herzlich Willkommen bei Gradido!',
), creationDate: contributionDateFormatter(
new Date(now.getFullYear(), now.getMonth() - 1, 1),
),
},
})
creation = await Contribution.findOneOrFail({
where: {
memo: 'Herzlich Willkommen bei Gradido!',
},
}) })
}) })
@ -1879,6 +1887,10 @@ describe('ContributionResolver', () => {
new Date(now.getFullYear(), now.getMonth() - 2, 1), new Date(now.getFullYear(), now.getMonth() - 2, 1),
), ),
}) })
await query({
query: login,
variables: { email: 'peter@lustig.de', password: 'Aa12345_' },
})
}) })
it('returns true', async () => { it('returns true', async () => {
@ -1959,6 +1971,10 @@ describe('ContributionResolver', () => {
new Date(now.getFullYear(), now.getMonth() - 2, 1), new Date(now.getFullYear(), now.getMonth() - 2, 1),
), ),
}) })
await query({
query: login,
variables: { email: 'peter@lustig.de', password: 'Aa12345_' },
})
}) })
it('throws no error for the second confirmation', async () => { it('throws no error for the second confirmation', async () => {

View File

@ -1,8 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { backendLogger as logger } from '@/server/logger' import { login, createContribution, confirmContribution } from '@/seeds/graphql/mutations'
import { login, adminCreateContribution, confirmContribution } from '@/seeds/graphql/mutations'
import { CreationInterface } from '@/seeds/creation/CreationInterface' import { CreationInterface } from '@/seeds/creation/CreationInterface'
import { ApolloServerTestClient } from 'apollo-server-testing' import { ApolloServerTestClient } from 'apollo-server-testing'
import { Transaction } from '@entity/Transaction' import { Transaction } from '@entity/Transaction'
@ -19,43 +18,27 @@ export const creationFactory = async (
creation: CreationInterface, creation: CreationInterface,
): Promise<Contribution | void> => { ): Promise<Contribution | void> => {
const { mutate } = client const { mutate } = client
logger.trace('creationFactory...') await mutate({ mutation: login, variables: { email: creation.email, password: 'Aa12345_' } })
await mutate({ mutation: login, variables: { email: 'peter@lustig.de', password: 'Aa12345_' } })
logger.trace('creationFactory... after login')
// TODO it would be nice to have this mutation return the id
await mutate({ mutation: adminCreateContribution, variables: { ...creation } })
logger.trace('creationFactory... after adminCreateContribution')
const user = await findUserByEmail(creation.email) // userContact.user const {
data: { createContribution: contribution },
} = await mutate({ mutation: createContribution, variables: { ...creation } })
const pendingCreation = await Contribution.findOneOrFail({
where: { userId: user.id, amount: creation.amount },
order: { createdAt: 'DESC' },
})
logger.trace(
'creationFactory... after Contribution.findOneOrFail pendingCreation=',
pendingCreation,
)
if (creation.confirmed) { if (creation.confirmed) {
logger.trace('creationFactory... creation.confirmed=', creation.confirmed) const user = await findUserByEmail(creation.email) // userContact.user
await mutate({ mutation: confirmContribution, variables: { id: pendingCreation.id } })
logger.trace('creationFactory... after confirmContribution') await mutate({ mutation: login, variables: { email: 'peter@lustig.de', password: 'Aa12345_' } })
const confirmedCreation = await Contribution.findOneOrFail({ id: pendingCreation.id }) await mutate({ mutation: confirmContribution, variables: { id: contribution.id } })
logger.trace( const confirmedContribution = await Contribution.findOneOrFail({ id: contribution.id })
'creationFactory... after Contribution.findOneOrFail confirmedCreation=',
confirmedCreation,
)
if (creation.moveCreationDate) { if (creation.moveCreationDate) {
logger.trace('creationFactory... creation.moveCreationDate=', creation.moveCreationDate)
const transaction = await Transaction.findOneOrFail({ const transaction = await Transaction.findOneOrFail({
where: { userId: user.id, creationDate: new Date(creation.creationDate) }, where: { userId: user.id, creationDate: new Date(creation.creationDate) },
order: { balanceDate: 'DESC' }, order: { balanceDate: 'DESC' },
}) })
logger.trace('creationFactory... after Transaction.findOneOrFail transaction=', transaction)
if (transaction.decay.equals(0) && transaction.creationDate) { if (transaction.decay.equals(0) && transaction.creationDate) {
confirmedCreation.contributionDate = new Date( confirmedContribution.contributionDate = new Date(
nMonthsBefore(transaction.creationDate, creation.moveCreationDate), nMonthsBefore(transaction.creationDate, creation.moveCreationDate),
) )
transaction.creationDate = new Date( transaction.creationDate = new Date(
@ -64,17 +47,11 @@ export const creationFactory = async (
transaction.balanceDate = new Date( transaction.balanceDate = new Date(
nMonthsBefore(transaction.balanceDate, creation.moveCreationDate), nMonthsBefore(transaction.balanceDate, creation.moveCreationDate),
) )
logger.trace('creationFactory... before transaction.save transaction=', transaction)
await transaction.save() await transaction.save()
logger.trace( await confirmedContribution.save()
'creationFactory... before confirmedCreation.save confirmedCreation=',
confirmedCreation,
)
await confirmedCreation.save()
} }
} }
} else { } else {
logger.trace('creationFactory... pendingCreation=', pendingCreation) return contribution
return pendingCreation
} }
} }