test case for Moderation Contribution message does not change contribution status, normal message does

This commit is contained in:
Ulf Gebhardt 2023-07-05 10:40:36 +02:00
parent 01a5e6897c
commit ff03b05e5e
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9

View File

@ -5,6 +5,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { Connection } from '@dbTools/typeorm'
import { Event as DbEvent } from '@entity/Event'
import { Contribution as DbContribution } from '@entity/Contribution'
import { ApolloServerTestClient } from 'apollo-server-testing'
import { GraphQLError } from 'graphql'
@ -23,6 +24,7 @@ import {
import { listContributionMessages, adminListContributionMessages } from '@/seeds/graphql/queries'
import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg'
import { peterLustig } from '@/seeds/users/peter-lustig'
import { ContributionStatus } from '../enum/ContributionStatus'
jest.mock('@/emails/sendEmailVariants', () => {
const originalModule = jest.requireActual('@/emails/sendEmailVariants')
@ -168,6 +170,50 @@ describe('ContributionMessageResolver', () => {
})
})
describe('contribution message type MODERATOR', () => {
beforeAll(() => {
jest.clearAllMocks()
})
it('creates ContributionMessage', async () => {
await expect(
mutate({
mutation: adminCreateContributionMessage,
variables: {
contributionId: result.data.createContribution.id,
message: 'Internal moderator communication',
messageType: 'MODERATOR',
},
}),
).resolves.toEqual(
expect.objectContaining({
data: {
adminCreateContributionMessage: expect.objectContaining({
id: expect.any(Number),
message: 'Internal moderator communication',
type: 'MODERATOR',
userFirstName: 'Peter',
userLastName: 'Lustig',
}),
},
}),
)
})
it("don't call sendAddedContributionMessageEmail", () => {
expect(sendAddedContributionMessageEmail).not.toBeCalled()
})
it("don't change contribution status", async () => {
await expect(DbContribution.find()).resolves.toContainEqual(
expect.objectContaining({
id: result.data.createContribution.id,
contributionStatus: ContributionStatus.PENDING,
}),
)
})
})
describe('valid input', () => {
it('creates ContributionMessage', async () => {
await expect(
@ -205,6 +251,15 @@ describe('ContributionMessageResolver', () => {
})
})
it('change contribution status', async () => {
await expect(DbContribution.find()).resolves.toContainEqual(
expect.objectContaining({
id: result.data.createContribution.id,
contributionStatus: ContributionStatus.IN_PROGRESS,
}),
)
})
it('stores the ADMIN_CONTRIBUTION_MESSAGE_CREATE event in the database', async () => {
await expect(DbEvent.find()).resolves.toContainEqual(
expect.objectContaining({
@ -217,41 +272,6 @@ describe('ContributionMessageResolver', () => {
)
})
})
describe('contribution message type MODERATOR', () => {
beforeAll(() => {
jest.clearAllMocks()
})
it('creates ContributionMessage', async () => {
await expect(
mutate({
mutation: adminCreateContributionMessage,
variables: {
contributionId: result.data.createContribution.id,
message: 'Internal moderator communication',
messageType: 'MODERATOR',
},
}),
).resolves.toEqual(
expect.objectContaining({
data: {
adminCreateContributionMessage: expect.objectContaining({
id: expect.any(Number),
message: 'Internal moderator communication',
type: 'MODERATOR',
userFirstName: 'Peter',
userLastName: 'Lustig',
}),
},
}),
)
})
it("don't call sendAddedContributionMessageEmail", () => {
expect(sendAddedContributionMessageEmail).not.toBeCalled()
})
})
})
})