From 574906eb7602afcd75d4aef11291f6ed053feb76 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 24 Jan 2023 10:27:46 +0100 Subject: [PATCH 01/27] Add filterState parameter to listAllContributions query, can be a string or null and checks in the DB for the ContributionStatus. --- .../graphql/resolver/ContributionResolver.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index a71e4767e..e9c949dba 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -1,6 +1,6 @@ import Decimal from 'decimal.js-light' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' -import { FindOperator, IsNull, In, getConnection } from '@dbTools/typeorm' +import { FindOperator, IsNull, In, getConnection, Equal } from '@dbTools/typeorm' import { Contribution as DbContribution } from '@entity/Contribution' import { ContributionMessage } from '@entity/ContributionMessage' @@ -179,12 +179,27 @@ export class ContributionResolver { async listAllContributions( @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, + @Arg('filterState', () => String, { nullable: true }) + filterState: string | null, ): Promise { + const where: { + contributionStatus?: FindOperator | null + } = {} + const typeStatus = Object.values(ContributionStatus) + if (filterState !== null) { + // Asked ChatGBT for explanation => filterState converted to ContributionStatus + const contributionStatus = ContributionStatus[filterState as keyof typeof ContributionStatus] + if (typeStatus.includes(contributionStatus)) { + where.contributionStatus = Equal(filterState) + } + } + const [dbContributions, count] = await getConnection() .createQueryBuilder() .select('c') .from(DbContribution, 'c') .innerJoinAndSelect('c.user', 'u') + .where(where) .orderBy('c.createdAt', order) .limit(pageSize) .offset((currentPage - 1) * pageSize) From f4c743f7b4e30118cbe35e2faec55becf117e3df Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 24 Jan 2023 11:33:29 +0100 Subject: [PATCH 02/27] Add localization, change filterState from string to array of string. --- .../graphql/resolver/ContributionResolver.ts | 38 ++++++++++++++++--- backend/src/locales/de.json | 5 +++ backend/src/locales/en.json | 6 +++ 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index e9c949dba..759d3b1a1 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -1,4 +1,5 @@ import Decimal from 'decimal.js-light' +import i18n from 'i18n' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' import { FindOperator, IsNull, In, getConnection, Equal } from '@dbTools/typeorm' @@ -179,18 +180,43 @@ export class ContributionResolver { async listAllContributions( @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, - @Arg('filterState', () => String, { nullable: true }) - filterState: string | null, + @Arg('filterState', () => [String], { nullable: true }) + filterStates: string[] | null, + @Ctx() context: Context, ): Promise { const where: { contributionStatus?: FindOperator | null } = {} const typeStatus = Object.values(ContributionStatus) - if (filterState !== null) { + const filterStateArray = [] + const user = getUser(context) + i18n.setLocale(user.language) + if (filterStates !== null) { // Asked ChatGBT for explanation => filterState converted to ContributionStatus - const contributionStatus = ContributionStatus[filterState as keyof typeof ContributionStatus] - if (typeStatus.includes(contributionStatus)) { - where.contributionStatus = Equal(filterState) + const length = filterStates.length + let i = 0 + for (i; i < length; i++) { + const filterState = filterStates[i].toUpperCase() + logger.info('filterState', filterState) + const contributionStatus = + ContributionStatus[filterState as keyof typeof ContributionStatus] + logger.info('contributionStatus', contributionStatus) + if (!typeStatus.includes(contributionStatus)) { + logger.error( + `${i18n.__('error.contributions.wrongFilterState', { + contributionState: filterStates[i], + })}`, + ) + throw new Error( + `${i18n.__('error.contributions.wrongFilterState', { + contributionState: filterStates[i], + })}`, + ) + } + filterStateArray.push(contributionStatus) + } + if (filterStateArray.length > 0) { + where.contributionStatus = In(filterStateArray) } } diff --git a/backend/src/locales/de.json b/backend/src/locales/de.json index 38b53508b..d547fd951 100644 --- a/backend/src/locales/de.json +++ b/backend/src/locales/de.json @@ -55,6 +55,11 @@ "subject": "Gradido: {senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet" } }, + "error": { + "contributions": { + "wrongFilterState": "Nicht definierter Status wurde gesendet: {contributionState}" + } + }, "general": { "decimalSeparator": ",", "imprint": "Gradido-Akademie\nInstitut für Wirtschaftsbionik\nPfarrweg 2\n74653 Künzelsau\nDeutschland", diff --git a/backend/src/locales/en.json b/backend/src/locales/en.json index ac1ad380f..f6ada3716 100644 --- a/backend/src/locales/en.json +++ b/backend/src/locales/en.json @@ -1,4 +1,5 @@ { + "contributions": {}, "emails": { "addedContributionMessage": { "commonGoodContributionMessage": "you have received a message from {senderFirstName} {senderLastName} regarding your common good contribution “{contributionMemo}”.", @@ -55,6 +56,11 @@ "subject": "Gradido: {senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido" } }, + "error": { + "contributions": { + "wrongFilterState": "Send a state that isn't defined: {contributionState}" + } + }, "general": { "decimalSeparator": ".", "imprint": "Gradido-Akademie\nInstitut für Wirtschaftsbionik\nPfarrweg 2\n74653 Künzelsau\nDeutschland", From 1554a7d454957eae0fdee7b0415f8401fef4f0ea Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 24 Jan 2023 12:04:09 +0100 Subject: [PATCH 03/27] Remove test loggings. --- backend/src/graphql/resolver/ContributionResolver.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 759d3b1a1..68bfddeb9 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -197,10 +197,8 @@ export class ContributionResolver { let i = 0 for (i; i < length; i++) { const filterState = filterStates[i].toUpperCase() - logger.info('filterState', filterState) const contributionStatus = ContributionStatus[filterState as keyof typeof ContributionStatus] - logger.info('contributionStatus', contributionStatus) if (!typeStatus.includes(contributionStatus)) { logger.error( `${i18n.__('error.contributions.wrongFilterState', { From d42804acfb4900c9b7914aad42e819a5db6eaa89 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 24 Jan 2023 12:10:53 +0100 Subject: [PATCH 04/27] Change type of filterState from string[] to ContributionStatus[]. --- .../src/graphql/resolver/ContributionResolver.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 68bfddeb9..bc1706e0c 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -180,26 +180,23 @@ export class ContributionResolver { async listAllContributions( @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, - @Arg('filterState', () => [String], { nullable: true }) - filterStates: string[] | null, + @Arg('filterState', () => [ContributionStatus], { nullable: true }) + filterStates: ContributionStatus[] | null, @Ctx() context: Context, ): Promise { const where: { contributionStatus?: FindOperator | null } = {} const typeStatus = Object.values(ContributionStatus) - const filterStateArray = [] const user = getUser(context) i18n.setLocale(user.language) if (filterStates !== null) { - // Asked ChatGBT for explanation => filterState converted to ContributionStatus + const filterStateArray = [] const length = filterStates.length let i = 0 for (i; i < length; i++) { - const filterState = filterStates[i].toUpperCase() - const contributionStatus = - ContributionStatus[filterState as keyof typeof ContributionStatus] - if (!typeStatus.includes(contributionStatus)) { + const filterState = filterStates[i] + if (!typeStatus.includes(filterState)) { logger.error( `${i18n.__('error.contributions.wrongFilterState', { contributionState: filterStates[i], @@ -211,7 +208,7 @@ export class ContributionResolver { })}`, ) } - filterStateArray.push(contributionStatus) + filterStateArray.push(filterState) } if (filterStateArray.length > 0) { where.contributionStatus = In(filterStateArray) From b940400e5b4e0716ed00128885fa32e95d2ce879 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 24 Jan 2023 14:26:43 +0100 Subject: [PATCH 05/27] Remove unused import. --- backend/src/graphql/resolver/ContributionResolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index bc1706e0c..148cbceb8 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -1,7 +1,7 @@ import Decimal from 'decimal.js-light' import i18n from 'i18n' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' -import { FindOperator, IsNull, In, getConnection, Equal } from '@dbTools/typeorm' +import { FindOperator, IsNull, In, getConnection } from '@dbTools/typeorm' import { Contribution as DbContribution } from '@entity/Contribution' import { ContributionMessage } from '@entity/ContributionMessage' From 2cecadded222b8f06739c198f9bb53df478b0870 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 24 Jan 2023 17:02:08 +0100 Subject: [PATCH 06/27] Add filterState to the backend test listAllContributions query. --- backend/src/graphql/resolver/ContributionResolver.test.ts | 4 ++-- backend/src/seeds/graphql/queries.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index abae8e446..7b4186fb4 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -681,7 +681,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterConfirmed: false, + filterState: null, }, }), ).resolves.toEqual( @@ -726,7 +726,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterConfirmed: false, + filterState: null, }, }), ).resolves.toEqual( diff --git a/backend/src/seeds/graphql/queries.ts b/backend/src/seeds/graphql/queries.ts index 97f871235..b99b39b40 100644 --- a/backend/src/seeds/graphql/queries.ts +++ b/backend/src/seeds/graphql/queries.ts @@ -172,8 +172,8 @@ export const listContributions = gql` ` export const listAllContributions = ` -query ($currentPage: Int = 1, $pageSize: Int = 5, $order: Order = DESC) { - listAllContributions(currentPage: $currentPage, pageSize: $pageSize, order: $order) { +query ($currentPage: Int = 1, $pageSize: Int = 5, $order: Order = DESC, $filterState: [ContributionStatus!] = null) { + listAllContributions(currentPage: $currentPage, pageSize: $pageSize, order: $order, filterState: $filterState) { contributionCount contributionList { id From cc0fe5968d5eddc048991a318aef3dd0c79a8fcd Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 25 Jan 2023 07:54:17 +0100 Subject: [PATCH 07/27] Tests that the filterState parameter in listAllContributions works as expected. --- .../resolver/ContributionResolver.test.ts | 111 ++++++++++++++++++ backend/src/seeds/graphql/queries.ts | 19 +-- 2 files changed, 123 insertions(+), 7 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 7b4186fb4..04749d8f0 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -45,6 +45,7 @@ import { Transaction as DbTransaction } from '@entity/Transaction' import { User } from '@entity/User' import { EventProtocolType } from '@/event/EventProtocolType' import { logger, i18n as localization } from '@test/testSetup' +import { ContributionStatus } from '@enum/ContributionStatus' // mock account activation email to avoid console spam // mock account activation email to avoid console spam @@ -737,11 +738,121 @@ describe('ContributionResolver', () => { contributionList: expect.arrayContaining([ expect.objectContaining({ id: expect.any(Number), + state: 'CONFIRMED', memo: 'Herzlich Willkommen bei Gradido!', amount: '1000', }), expect.objectContaining({ id: expect.any(Number), + state: 'PENDING', + memo: 'Test env contribution', + amount: '100', + }), + ]), + }, + }, + }), + ) + }) + + it('returns all CONFIRMED Creation', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + filterState: ['CONFIRMED'], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + listAllContributions: { + contributionCount: 1, + contributionList: expect.arrayContaining([ + expect.objectContaining({ + id: expect.any(Number), + state: 'CONFIRMED', + memo: 'Herzlich Willkommen bei Gradido!', + amount: '1000', + }), + expect.not.objectContaining({ + id: expect.any(Number), + state: 'PENDING', + memo: 'Test env contribution', + amount: '100', + }), + ]), + }, + }, + }), + ) + }) + + it('returns all PENDING Creation', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + filterState: ['PENDING'], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + listAllContributions: { + contributionCount: 1, + contributionList: expect.arrayContaining([ + expect.not.objectContaining({ + id: expect.any(Number), + state: 'CONFIRMED', + memo: 'Herzlich Willkommen bei Gradido!', + amount: '1000', + }), + expect.objectContaining({ + id: expect.any(Number), + state: 'PENDING', + memo: 'Test env contribution', + amount: '100', + }), + ]), + }, + }, + }), + ) + }) + + it('returns all DENIED Creation', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + filterState: ['DENIED'], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + listAllContributions: { + contributionCount: 0, + contributionList: expect.not.arrayContaining([ + expect.objectContaining({ + id: expect.any(Number), + state: 'CONFIRMED', + memo: 'Herzlich Willkommen bei Gradido!', + amount: '1000', + }), + expect.objectContaining({ + id: expect.any(Number), + state: 'PENDING', memo: 'Test env contribution', amount: '100', }), diff --git a/backend/src/seeds/graphql/queries.ts b/backend/src/seeds/graphql/queries.ts index b99b39b40..17a66951a 100644 --- a/backend/src/seeds/graphql/queries.ts +++ b/backend/src/seeds/graphql/queries.ts @@ -177,13 +177,18 @@ query ($currentPage: Int = 1, $pageSize: Int = 5, $order: Order = DESC, $filterS contributionCount contributionList { id - firstName - lastName - amount - memo - createdAt - confirmedAt - confirmedBy + firstName + lastName + amount + memo + createdAt + confirmedAt + confirmedBy + contributionDate + state + messagesCount + deniedAt + deniedBy } } } From 47eea57c0943729bf235633d5746c1fa6efce0d5 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 25 Jan 2023 08:00:34 +0100 Subject: [PATCH 08/27] Remove unused import. --- backend/src/graphql/resolver/ContributionResolver.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 04749d8f0..3d251ced1 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -45,7 +45,6 @@ import { Transaction as DbTransaction } from '@entity/Transaction' import { User } from '@entity/User' import { EventProtocolType } from '@/event/EventProtocolType' import { logger, i18n as localization } from '@test/testSetup' -import { ContributionStatus } from '@enum/ContributionStatus' // mock account activation email to avoid console spam // mock account activation email to avoid console spam From 9e7da0f451fd18920880d589baffee2fc0a73a5d Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 25 Jan 2023 08:11:47 +0100 Subject: [PATCH 09/27] Add tests for filterState parameter in listAllContributions query. --- .../resolver/ContributionResolver.test.ts | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 3d251ced1..f65a8d5a5 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -754,6 +754,42 @@ describe('ContributionResolver', () => { ) }) + it('returns allCreation', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + filterState: [], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + listAllContributions: { + contributionCount: 2, + contributionList: expect.arrayContaining([ + expect.objectContaining({ + id: expect.any(Number), + state: 'CONFIRMED', + memo: 'Herzlich Willkommen bei Gradido!', + amount: '1000', + }), + expect.objectContaining({ + id: expect.any(Number), + state: 'PENDING', + memo: 'Test env contribution', + amount: '100', + }), + ]), + }, + }, + }), + ) + }) + it('returns all CONFIRMED Creation', async () => { await expect( query({ @@ -826,6 +862,42 @@ describe('ContributionResolver', () => { ) }) + it('returns all IN_PROGRESS Creation', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + filterState: ['IN_PROGRESS'], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + listAllContributions: { + contributionCount: 0, + contributionList: expect.not.arrayContaining([ + expect.objectContaining({ + id: expect.any(Number), + state: 'CONFIRMED', + memo: 'Herzlich Willkommen bei Gradido!', + amount: '1000', + }), + expect.objectContaining({ + id: expect.any(Number), + state: 'PENDING', + memo: 'Test env contribution', + amount: '100', + }), + ]), + }, + }, + }), + ) + }) + it('returns all DENIED Creation', async () => { await expect( query({ @@ -861,6 +933,78 @@ describe('ContributionResolver', () => { }), ) }) + + it('returns all DELETED Creation', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + filterState: ['DELETED'], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + listAllContributions: { + contributionCount: 0, + contributionList: expect.not.arrayContaining([ + expect.objectContaining({ + id: expect.any(Number), + state: 'CONFIRMED', + memo: 'Herzlich Willkommen bei Gradido!', + amount: '1000', + }), + expect.objectContaining({ + id: expect.any(Number), + state: 'PENDING', + memo: 'Test env contribution', + amount: '100', + }), + ]), + }, + }, + }), + ) + }) + + it('returns all CONFIRMED and PENDING Creation', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + filterState: ['CONFIRMED', 'PENDING'], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + listAllContributions: { + contributionCount: 2, + contributionList: expect.arrayContaining([ + expect.objectContaining({ + id: expect.any(Number), + state: 'CONFIRMED', + memo: 'Herzlich Willkommen bei Gradido!', + amount: '1000', + }), + expect.objectContaining({ + id: expect.any(Number), + state: 'PENDING', + memo: 'Test env contribution', + amount: '100', + }), + ]), + }, + }, + }), + ) + }) }) }) From 8b3423b91b2cd632befe4adb5d2b9ed2d0b87e16 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 25 Jan 2023 16:40:32 +0100 Subject: [PATCH 10/27] Remove i18n, change state to status. --- .../graphql/resolver/ContributionResolver.ts | 35 +++++++------------ backend/src/locales/de.json | 5 --- backend/src/locales/en.json | 5 --- 3 files changed, 12 insertions(+), 33 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 36d7c2237..799747013 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -180,38 +180,27 @@ export class ContributionResolver { async listAllContributions( @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, - @Arg('filterState', () => [ContributionStatus], { nullable: true }) - filterStates: ContributionStatus[] | null, - @Ctx() context: Context, + @Arg('statusFilter', () => [ContributionStatus], { nullable: true }) + statusFilters: ContributionStatus[] | null, ): Promise { const where: { contributionStatus?: FindOperator | null } = {} const typeStatus = Object.values(ContributionStatus) - const user = getUser(context) - i18n.setLocale(user.language) - if (filterStates !== null) { - const filterStateArray = [] - const length = filterStates.length + if (statusFilters !== null) { + const statusFilterArray = [] + const length = statusFilters.length let i = 0 for (i; i < length; i++) { - const filterState = filterStates[i] - if (!typeStatus.includes(filterState)) { - logger.error( - `${i18n.__('error.contributions.wrongFilterState', { - contributionState: filterStates[i], - })}`, - ) - throw new Error( - `${i18n.__('error.contributions.wrongFilterState', { - contributionState: filterStates[i], - })}`, - ) + const statusFilter = statusFilters[i] + if (!typeStatus.includes(statusFilter)) { + logger.error(`Nicht definierter Status wurde gesendet: ${statusFilters[i]}`) + throw new Error(`Nicht definierter Status wurde gesendet: ${statusFilters[i]}`) } - filterStateArray.push(filterState) + statusFilterArray.push(statusFilter) } - if (filterStateArray.length > 0) { - where.contributionStatus = In(filterStateArray) + if (statusFilterArray.length > 0) { + where.contributionStatus = In(statusFilterArray) } } diff --git a/backend/src/locales/de.json b/backend/src/locales/de.json index d547fd951..38b53508b 100644 --- a/backend/src/locales/de.json +++ b/backend/src/locales/de.json @@ -55,11 +55,6 @@ "subject": "Gradido: {senderFirstName} {senderLastName} hat dir {transactionAmount} Gradido gesendet" } }, - "error": { - "contributions": { - "wrongFilterState": "Nicht definierter Status wurde gesendet: {contributionState}" - } - }, "general": { "decimalSeparator": ",", "imprint": "Gradido-Akademie\nInstitut für Wirtschaftsbionik\nPfarrweg 2\n74653 Künzelsau\nDeutschland", diff --git a/backend/src/locales/en.json b/backend/src/locales/en.json index be26a8467..fa45c6635 100644 --- a/backend/src/locales/en.json +++ b/backend/src/locales/en.json @@ -56,11 +56,6 @@ "subject": "Gradido: {senderFirstName} {senderLastName} has sent you {transactionAmount} Gradido" } }, - "error": { - "contributions": { - "wrongFilterState": "Send a state that isn't defined: {contributionState}" - } - }, "general": { "decimalSeparator": ".", "imprint": "Gradido-Akademie\nInstitut für Wirtschaftsbionik\nPfarrweg 2\n74653 Künzelsau\nDeutschland", From 0bd3ce27dfdc277edc3007e3b840a45b2d2291ef Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 25 Jan 2023 16:48:49 +0100 Subject: [PATCH 11/27] Change Tests to statusFilter. --- .../resolver/ContributionResolver.test.ts | 18 +++++++++--------- backend/src/seeds/graphql/queries.ts | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index f65a8d5a5..7958fd0cb 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -681,7 +681,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: null, + statusFilter: null, }, }), ).resolves.toEqual( @@ -726,7 +726,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: null, + statusFilter: null, }, }), ).resolves.toEqual( @@ -762,7 +762,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: [], + statusFilter: [], }, }), ).resolves.toEqual( @@ -798,7 +798,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: ['CONFIRMED'], + statusFilter: ['CONFIRMED'], }, }), ).resolves.toEqual( @@ -834,7 +834,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: ['PENDING'], + statusFilter: ['PENDING'], }, }), ).resolves.toEqual( @@ -870,7 +870,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: ['IN_PROGRESS'], + statusFilter: ['IN_PROGRESS'], }, }), ).resolves.toEqual( @@ -906,7 +906,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: ['DENIED'], + statusFilter: ['DENIED'], }, }), ).resolves.toEqual( @@ -942,7 +942,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: ['DELETED'], + statusFilter: ['DELETED'], }, }), ).resolves.toEqual( @@ -978,7 +978,7 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - filterState: ['CONFIRMED', 'PENDING'], + statusFilter: ['CONFIRMED', 'PENDING'], }, }), ).resolves.toEqual( diff --git a/backend/src/seeds/graphql/queries.ts b/backend/src/seeds/graphql/queries.ts index 17a66951a..9ee04254d 100644 --- a/backend/src/seeds/graphql/queries.ts +++ b/backend/src/seeds/graphql/queries.ts @@ -172,8 +172,8 @@ export const listContributions = gql` ` export const listAllContributions = ` -query ($currentPage: Int = 1, $pageSize: Int = 5, $order: Order = DESC, $filterState: [ContributionStatus!] = null) { - listAllContributions(currentPage: $currentPage, pageSize: $pageSize, order: $order, filterState: $filterState) { +query ($currentPage: Int = 1, $pageSize: Int = 5, $order: Order = DESC, $statusFilter: [ContributionStatus!] = null) { + listAllContributions(currentPage: $currentPage, pageSize: $pageSize, order: $order, statusFilter: $statusFilter) { contributionCount contributionList { id From 12703a33f9eaf0d8e0ed857c9abbff6986e08a90 Mon Sep 17 00:00:00 2001 From: elweyn Date: Thu, 26 Jan 2023 07:06:57 +0100 Subject: [PATCH 12/27] Remove unused i18n import. --- backend/src/graphql/resolver/ContributionResolver.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 799747013..56f389b08 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -1,5 +1,4 @@ import Decimal from 'decimal.js-light' -import i18n from 'i18n' import { Arg, Args, Authorized, Ctx, Int, Mutation, Query, Resolver } from 'type-graphql' import { FindOperator, IsNull, In, getConnection } from '@dbTools/typeorm' From 311fb974679706c2f8639f4a77372707ea9b044b Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 28 Jan 2023 08:10:50 +0100 Subject: [PATCH 13/27] Refactor filter method. --- .../graphql/resolver/ContributionResolver.ts | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 56f389b08..728079bab 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -185,22 +185,9 @@ export class ContributionResolver { const where: { contributionStatus?: FindOperator | null } = {} - const typeStatus = Object.values(ContributionStatus) - if (statusFilters !== null) { - const statusFilterArray = [] - const length = statusFilters.length - let i = 0 - for (i; i < length; i++) { - const statusFilter = statusFilters[i] - if (!typeStatus.includes(statusFilter)) { - logger.error(`Nicht definierter Status wurde gesendet: ${statusFilters[i]}`) - throw new Error(`Nicht definierter Status wurde gesendet: ${statusFilters[i]}`) - } - statusFilterArray.push(statusFilter) - } - if (statusFilterArray.length > 0) { - where.contributionStatus = In(statusFilterArray) - } + + if (statusFilters !== null && statusFilters.length) { + where.contributionStatus = In(statusFilters) } const [dbContributions, count] = await getConnection() From e5a86cd12505b70f28bacf07517c07f37fab84b6 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 28 Jan 2023 08:12:26 +0100 Subject: [PATCH 14/27] Correct en local file. --- backend/src/locales/en.json | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/locales/en.json b/backend/src/locales/en.json index fa45c6635..5cde70d26 100644 --- a/backend/src/locales/en.json +++ b/backend/src/locales/en.json @@ -1,5 +1,4 @@ { - "contributions": {}, "emails": { "addedContributionMessage": { "commonGoodContributionMessage": "you have received a message from {senderFirstName} {senderLastName} regarding your common good contribution “{contributionMemo}”.", From d5605d3afb4b2cf83dcc534b085ad43ee32a3ef9 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 28 Jan 2023 08:36:46 +0100 Subject: [PATCH 15/27] Add test for error case wrong statusFilter value. --- .../resolver/ContributionResolver.test.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 7958fd0cb..738c6fc25 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -45,6 +45,7 @@ import { Transaction as DbTransaction } from '@entity/Transaction' import { User } from '@entity/User' import { EventProtocolType } from '@/event/EventProtocolType' import { logger, i18n as localization } from '@test/testSetup' +import { UserInputError } from 'apollo-server-express' // mock account activation email to avoid console spam // mock account activation email to avoid console spam @@ -718,6 +719,28 @@ describe('ContributionResolver', () => { resetToken() }) + it('throws an error with non existing filter', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + statusFilter: ['CONFIRMD'], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + errors: [ + new UserInputError( + 'Variable "$statusFilter" got invalid value "CONFIRMD" at "statusFilter[0]"; Value "CONFIRMD" does not exist in "ContributionStatus" enum. Did you mean the enum value "CONFIRMED"?', + ), + ], + }), + ) + }) + it('returns allCreation', async () => { await expect( query({ From c63e6fd474ba80dc9383190a18e148df231d42db Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 31 Jan 2023 11:10:02 +0100 Subject: [PATCH 16/27] Add tests for listAllContributions statusFilter parameter. --- .../resolver/ContributionResolver.test.ts | 43 +++++++++++++++++-- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 738c6fc25..be4b91713 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -727,21 +727,56 @@ describe('ContributionResolver', () => { currentPage: 1, pageSize: 25, order: 'DESC', - statusFilter: ['CONFIRMD'], + statusFilter: ['NOT_VALID'], }, }), ).resolves.toEqual( expect.objectContaining({ errors: [ new UserInputError( - 'Variable "$statusFilter" got invalid value "CONFIRMD" at "statusFilter[0]"; Value "CONFIRMD" does not exist in "ContributionStatus" enum. Did you mean the enum value "CONFIRMED"?', + 'Variable "$statusFilter" got invalid value "NOT_VALID" at "statusFilter[0]"; Value "NOT_VALID" does not exist in "ContributionStatus" enum.', ), ], }), ) }) - it('returns allCreation', async () => { + it('returns allCreation without statusFilter', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + listAllContributions: { + contributionCount: 2, + contributionList: expect.arrayContaining([ + expect.objectContaining({ + id: expect.any(Number), + state: 'CONFIRMED', + memo: 'Herzlich Willkommen bei Gradido!', + amount: '1000', + }), + expect.objectContaining({ + id: expect.any(Number), + state: 'PENDING', + memo: 'Test env contribution', + amount: '100', + }), + ]), + }, + }, + }), + ) + }) + + it('returns allCreation for statusFilter = null', async () => { await expect( query({ query: listAllContributions, @@ -777,7 +812,7 @@ describe('ContributionResolver', () => { ) }) - it('returns allCreation', async () => { + it('returns allCreation for statusFilter = []', async () => { await expect( query({ query: listAllContributions, From 70649b968f22a7149227297e6d679e3339593e20 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 31 Jan 2023 11:11:18 +0100 Subject: [PATCH 17/27] Change statusFilter from default null to optional. --- backend/src/graphql/resolver/ContributionResolver.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 728079bab..6a5240cd1 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -180,13 +180,13 @@ export class ContributionResolver { @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, @Arg('statusFilter', () => [ContributionStatus], { nullable: true }) - statusFilters: ContributionStatus[] | null, + statusFilters?: ContributionStatus[], ): Promise { const where: { contributionStatus?: FindOperator | null } = {} - if (statusFilters !== null && statusFilters.length) { + if (statusFilters && statusFilters.length) { where.contributionStatus = In(statusFilters) } From 75d47d016d1edb83f1f1c2d4b29bac0deee77816 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 31 Jan 2023 11:19:43 +0100 Subject: [PATCH 18/27] Remove the default null of statusFilter or the test query. --- backend/src/seeds/graphql/queries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/seeds/graphql/queries.ts b/backend/src/seeds/graphql/queries.ts index 9ee04254d..385a69479 100644 --- a/backend/src/seeds/graphql/queries.ts +++ b/backend/src/seeds/graphql/queries.ts @@ -172,7 +172,7 @@ export const listContributions = gql` ` export const listAllContributions = ` -query ($currentPage: Int = 1, $pageSize: Int = 5, $order: Order = DESC, $statusFilter: [ContributionStatus!] = null) { +query ($currentPage: Int = 1, $pageSize: Int = 5, $order: Order = DESC, $statusFilter: [ContributionStatus!]) { listAllContributions(currentPage: $currentPage, pageSize: $pageSize, order: $order, statusFilter: $statusFilter) { contributionCount contributionList { From 787b2b95529c9a2c3d44f6f9678abb5a4f083151 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 31 Jan 2023 11:38:37 +0100 Subject: [PATCH 19/27] Add test for value null in statusFilter array. --- .../resolver/ContributionResolver.test.ts | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index be4b91713..6c9c1136b 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -719,7 +719,7 @@ describe('ContributionResolver', () => { resetToken() }) - it('throws an error with non existing filter', async () => { + it('throws an error with "NOT_VALID" in statusFilter', async () => { await expect( query({ query: listAllContributions, @@ -741,6 +741,53 @@ describe('ContributionResolver', () => { ) }) + it('throws an error with a null in statusFilter', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + statusFilter: [null], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + errors: [ + new UserInputError( + 'Variable "$statusFilter" got invalid value null at "statusFilter[0]"; Expected non-nullable type "ContributionStatus!" not to be null.', + ), + ], + }), + ) + }) + + it('throws an error with null and "NOT_VALID" in statusFilter', async () => { + await expect( + query({ + query: listAllContributions, + variables: { + currentPage: 1, + pageSize: 25, + order: 'DESC', + statusFilter: [null, 'NOT_VALID'], + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + errors: [ + new UserInputError( + 'Variable "$statusFilter" got invalid value null at "statusFilter[0]"; Expected non-nullable type "ContributionStatus!" not to be null.', + ), + new UserInputError( + 'Variable "$statusFilter" got invalid value "NOT_VALID" at "statusFilter[1]"; Value "NOT_VALID" does not exist in "ContributionStatus" enum.', + ), + ], + }), + ) + }) + it('returns allCreation without statusFilter', async () => { await expect( query({ From a1ece2f171b9efaf1c1a8eb762600435743ef206 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 31 Jan 2023 11:39:44 +0100 Subject: [PATCH 20/27] Change definition of the parameter statusFilter so that the ContributionStatus item can't be null. --- backend/src/graphql/resolver/ContributionResolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 6a5240cd1..623ee19f0 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -179,7 +179,7 @@ export class ContributionResolver { async listAllContributions( @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, - @Arg('statusFilter', () => [ContributionStatus], { nullable: true }) + @Arg('statusFilter', () => [ContributionStatus!], { nullable: true }) statusFilters?: ContributionStatus[], ): Promise { const where: { From 681a23a1132c8fab50f8fee17ce5530ecdc1fef2 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 31 Jan 2023 11:50:25 +0100 Subject: [PATCH 21/27] Change the definition of statusFilter remove --- backend/src/graphql/resolver/ContributionResolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 623ee19f0..6a5240cd1 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -179,7 +179,7 @@ export class ContributionResolver { async listAllContributions( @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, - @Arg('statusFilter', () => [ContributionStatus!], { nullable: true }) + @Arg('statusFilter', () => [ContributionStatus], { nullable: true }) statusFilters?: ContributionStatus[], ): Promise { const where: { From 55e830ee8d6b101b0de5363f4adca6dff223fb29 Mon Sep 17 00:00:00 2001 From: Hannes Heine Date: Thu, 2 Feb 2023 09:14:04 +0100 Subject: [PATCH 22/27] Update backend/src/graphql/resolver/ContributionResolver.test.ts Co-authored-by: Moriz Wahl --- backend/src/graphql/resolver/ContributionResolver.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 6c9c1136b..a5c52e58b 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -788,7 +788,7 @@ describe('ContributionResolver', () => { ) }) - it('returns allCreation without statusFilter', async () => { + it('returns all contributions without statusFilter', async () => { await expect( query({ query: listAllContributions, From 44dabe04862e676ab17f6eef7c3fb59a430b820d Mon Sep 17 00:00:00 2001 From: Hannes Heine Date: Thu, 2 Feb 2023 09:14:24 +0100 Subject: [PATCH 23/27] Update backend/src/graphql/resolver/ContributionResolver.test.ts Co-authored-by: Moriz Wahl --- backend/src/graphql/resolver/ContributionResolver.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index a5c52e58b..76bf900e4 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -823,7 +823,7 @@ describe('ContributionResolver', () => { ) }) - it('returns allCreation for statusFilter = null', async () => { + it('returns all contributions for statusFilter = null', async () => { await expect( query({ query: listAllContributions, From 27b54555eadd95d58eb96f5ee51d9a24c2500641 Mon Sep 17 00:00:00 2001 From: Hannes Heine Date: Thu, 2 Feb 2023 09:14:37 +0100 Subject: [PATCH 24/27] Update backend/src/graphql/resolver/ContributionResolver.test.ts Co-authored-by: Moriz Wahl --- backend/src/graphql/resolver/ContributionResolver.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 76bf900e4..6dfb4234d 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -859,7 +859,7 @@ describe('ContributionResolver', () => { ) }) - it('returns allCreation for statusFilter = []', async () => { + it('returns all contributions for statusFilter = []', async () => { await expect( query({ query: listAllContributions, From 676c6b2e7e2eba946b81cca15f3a50ca86f3bc53 Mon Sep 17 00:00:00 2001 From: Hannes Heine Date: Thu, 2 Feb 2023 09:14:48 +0100 Subject: [PATCH 25/27] Update backend/src/graphql/resolver/ContributionResolver.test.ts Co-authored-by: Moriz Wahl --- backend/src/graphql/resolver/ContributionResolver.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 6dfb4234d..d4bd753de 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -895,7 +895,7 @@ describe('ContributionResolver', () => { ) }) - it('returns all CONFIRMED Creation', async () => { + it('returns all CONFIRMED contributions', async () => { await expect( query({ query: listAllContributions, From c659264e8264a10a884e0a72eeb8f9533b8b5b27 Mon Sep 17 00:00:00 2001 From: Hannes Heine Date: Thu, 2 Feb 2023 09:18:16 +0100 Subject: [PATCH 26/27] Update backend/src/graphql/resolver/ContributionResolver.test.ts Co-authored-by: Moriz Wahl --- backend/src/graphql/resolver/ContributionResolver.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index d4bd753de..d48502c69 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -931,7 +931,7 @@ describe('ContributionResolver', () => { ) }) - it('returns all PENDING Creation', async () => { + it('returns all PENDING contributions', async () => { await expect( query({ query: listAllContributions, From 471685bbd7a04d4ff946ee7d509b0cde0caae87d Mon Sep 17 00:00:00 2001 From: elweyn Date: Thu, 2 Feb 2023 11:22:47 +0100 Subject: [PATCH 27/27] Change statusFilters to statusFilter. --- backend/src/graphql/resolver/ContributionResolver.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 6a5240cd1..c7946d2c8 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -180,14 +180,14 @@ export class ContributionResolver { @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, @Arg('statusFilter', () => [ContributionStatus], { nullable: true }) - statusFilters?: ContributionStatus[], + statusFilter?: ContributionStatus[], ): Promise { const where: { contributionStatus?: FindOperator | null } = {} - if (statusFilters && statusFilters.length) { - where.contributionStatus = In(statusFilters) + if (statusFilter && statusFilter.length) { + where.contributionStatus = In(statusFilter) } const [dbContributions, count] = await getConnection()