From ff03b05e5e0621d7002a9d7c6aa3e9e535049712 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 5 Jul 2023 10:40:36 +0200 Subject: [PATCH] test case for Moderation Contribution message does not change contribution status, normal message does --- .../ContributionMessageResolver.test.ts | 90 +++++++++++-------- 1 file changed, 55 insertions(+), 35 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.test.ts b/backend/src/graphql/resolver/ContributionMessageResolver.test.ts index e4929483f..a48e005d6 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.test.ts @@ -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() - }) - }) }) })