From e310d46ac908f52dd81ba75b49dcdb25b377a693 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Sat, 19 Aug 2023 09:27:12 +0200 Subject: [PATCH] add tests for hashtag --- .../resolver/ContributionResolver.test.ts | 140 ++++++++++++++++-- backend/src/seeds/graphql/queries.ts | 2 + 2 files changed, 129 insertions(+), 13 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index cbb92eff8..a678c7531 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -2718,22 +2718,40 @@ describe('ContributionResolver', () => { mutation: login, variables: { email: 'peter@lustig.de', password: 'Aa12345_' }, }) + await mutate({ + mutation: createContribution, + variables: { + amount: 100.0, + memo: '#firefighters', + creationDate: new Date().toString(), + }, + }) }) afterAll(() => { resetToken() }) - it('returns 17 creations in total', async () => { + it('returns 18 creations in total', async () => { const { data: { adminListContributions: contributionListObject }, } = await query({ query: adminListContributions, }) - expect(contributionListObject.contributionList).toHaveLength(17) + // console.log('17 contributions: %s', JSON.stringify(contributionListObject, null, 2)) + expect(contributionListObject.contributionList).toHaveLength(18) expect(contributionListObject).toMatchObject({ - contributionCount: 17, + contributionCount: 18, contributionList: expect.arrayContaining([ + expect.objectContaining({ + amount: expect.decimalEqual(100), + firstName: 'Peter', + id: expect.any(Number), + lastName: 'Lustig', + memo: '#firefighters', + messagesCount: 0, + status: 'PENDING', + }), expect.objectContaining({ amount: expect.decimalEqual(50), firstName: 'Bibi', @@ -2905,8 +2923,17 @@ describe('ContributionResolver', () => { }) expect(contributionListObject.contributionList).toHaveLength(2) expect(contributionListObject).toMatchObject({ - contributionCount: 4, + contributionCount: 5, contributionList: expect.arrayContaining([ + expect.objectContaining({ + amount: '100', + firstName: 'Peter', + id: expect.any(Number), + lastName: 'Lustig', + memo: '#firefighters', + messagesCount: 0, + status: 'PENDING', + }), expect.objectContaining({ amount: '400', firstName: 'Peter', @@ -2916,15 +2943,6 @@ describe('ContributionResolver', () => { messagesCount: 0, status: 'PENDING', }), - expect.objectContaining({ - amount: '100', - firstName: 'Peter', - id: expect.any(Number), - lastName: 'Lustig', - memo: 'Test env contribution', - messagesCount: 0, - status: 'PENDING', - }), expect.not.objectContaining({ status: 'DENIED', }), @@ -2951,6 +2969,60 @@ describe('ContributionResolver', () => { query: 'Peter', }, }) + expect(contributionListObject.contributionList).toHaveLength(4) + expect(contributionListObject).toMatchObject({ + contributionCount: 4, + contributionList: expect.arrayContaining([ + expect.objectContaining({ + amount: expect.decimalEqual(100), + firstName: 'Peter', + id: expect.any(Number), + lastName: 'Lustig', + memo: '#firefighters', + messagesCount: 0, + status: 'PENDING', + }), + expect.objectContaining({ + amount: expect.decimalEqual(400), + firstName: 'Peter', + id: expect.any(Number), + lastName: 'Lustig', + memo: 'Herzlich Willkommen bei Gradido!', + messagesCount: 0, + status: 'PENDING', + }), + expect.objectContaining({ + amount: expect.decimalEqual(100), + firstName: 'Peter', + id: expect.any(Number), + lastName: 'Lustig', + memo: 'Test env contribution', + messagesCount: 0, + status: 'PENDING', + }), + expect.objectContaining({ + amount: expect.decimalEqual(200), + firstName: 'Peter', + id: expect.any(Number), + lastName: 'Lustig', + memo: 'Das war leider zu Viel!', + messagesCount: 0, + status: 'DELETED', + }), + ]), + }) + }) + + it('returns only contributions of the queried user without hashtags', async () => { + const { + data: { adminListContributions: contributionListObject }, + } = await query({ + query: adminListContributions, + variables: { + query: 'Peter', + noHashtag: true, + }, + }) expect(contributionListObject.contributionList).toHaveLength(3) expect(contributionListObject).toMatchObject({ contributionCount: 3, @@ -2986,6 +3058,48 @@ describe('ContributionResolver', () => { }) }) + it('returns only contributions with #firefighter', async () => { + const { + data: { adminListContributions: contributionListObject }, + } = await query({ + query: adminListContributions, + variables: { + query: '#firefighter', + }, + }) + expect(contributionListObject.contributionList).toHaveLength(1) + expect(contributionListObject).toMatchObject({ + contributionCount: 1, + contributionList: expect.arrayContaining([ + expect.objectContaining({ + amount: expect.decimalEqual(100), + firstName: 'Peter', + id: expect.any(Number), + lastName: 'Lustig', + memo: '#firefighters', + messagesCount: 0, + status: 'PENDING', + }), + ]), + }) + }) + + it('returns no contributions with #firefighter and no hashtag', async () => { + const { + data: { adminListContributions: contributionListObject }, + } = await query({ + query: adminListContributions, + variables: { + query: '#firefighter', + noHashtag: true, + }, + }) + expect(contributionListObject.contributionList).toHaveLength(0) + expect(contributionListObject).toMatchObject({ + contributionCount: 0, + }) + }) + // test for case sensitivity and email it('returns only contributions of the queried user email', async () => { const { diff --git a/backend/src/seeds/graphql/queries.ts b/backend/src/seeds/graphql/queries.ts index f016102a2..3a2823a65 100644 --- a/backend/src/seeds/graphql/queries.ts +++ b/backend/src/seeds/graphql/queries.ts @@ -236,6 +236,7 @@ export const adminListContributions = gql` $statusFilter: [ContributionStatus!] $userId: Int $query: String + $noHashtag: Boolean ) { adminListContributions( currentPage: $currentPage @@ -244,6 +245,7 @@ export const adminListContributions = gql` statusFilter: $statusFilter userId: $userId query: $query + noHashtag: $noHashtag ) { contributionCount contributionList {