From 514a38ea3868140ab87210ce4692ec122f5235bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 31 May 2022 11:00:56 +0200 Subject: [PATCH] Make transaction link filter object nullable --- backend/src/graphql/arg/SearchUsersArgs.ts | 2 +- .../graphql/resolver/AdminResolver.test.ts | 20 ++++++++++--------- backend/src/graphql/resolver/AdminResolver.ts | 11 +++++----- backend/src/seeds/graphql/mutations.ts | 2 +- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/backend/src/graphql/arg/SearchUsersArgs.ts b/backend/src/graphql/arg/SearchUsersArgs.ts index 8db6bfc06..38057762d 100644 --- a/backend/src/graphql/arg/SearchUsersArgs.ts +++ b/backend/src/graphql/arg/SearchUsersArgs.ts @@ -12,6 +12,6 @@ export default class SearchUsersArgs { @Field(() => Int, { nullable: true }) pageSize?: number - @Field(() => SearchUsersFilters, { nullable: true }) + @Field(() => SearchUsersFilters, { nullable: true, defaultValue: null }) filters: SearchUsersFilters } diff --git a/backend/src/graphql/resolver/AdminResolver.test.ts b/backend/src/graphql/resolver/AdminResolver.test.ts index c923e46ad..3b5908908 100644 --- a/backend/src/graphql/resolver/AdminResolver.test.ts +++ b/backend/src/graphql/resolver/AdminResolver.test.ts @@ -1332,11 +1332,7 @@ describe('AdminResolver', () => { describe('transaction links list', () => { const variables = { userId: 1, // dummy, may be replaced - filters: { - withDeleted: null, - withExpired: null, - withRedeemed: null, - }, + filters: null, currentPage: 1, pageSize: 5, } @@ -1434,13 +1430,12 @@ describe('AdminResolver', () => { resetToken() }) - // Todo: make filters argument nullable? - describe.skip('without any filters', () => { + describe('without any filters', () => { it('finds 6 open transaction links and no deleted or redeemed', async () => { await expect( query({ query: listTransactionLinksAdmin, - variables: { ...variables, filters: null }, + variables, }), ).resolves.toEqual(expectNoDeletedOrRedeemed) }) @@ -1451,7 +1446,14 @@ describe('AdminResolver', () => { await expect( query({ query: listTransactionLinksAdmin, - variables, + variables: { + ...variables, + filters: { + withDeleted: null, + withExpired: null, + withRedeemed: null, + }, + }, }), ).resolves.toEqual(expectNoDeletedOrRedeemed) }) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 012bdde30..54207b17c 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -426,9 +426,10 @@ export class AdminResolver { async listTransactionLinksAdmin( @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, - @Arg('filters') + @Arg('filters', () => TransactionLinkFilters, { nullable: true, defaultValue: null }) filters: TransactionLinkFilters, - @Arg('userId', () => Int) userId: number, + @Arg('userId', () => Int) + userId: number, ): Promise { const user = await dbUser.findOneOrFail({ id: userId }) const where: { @@ -438,11 +439,11 @@ export class AdminResolver { } = { userId, } - if (!filters.withRedeemed) where.redeemedBy = null - if (!filters.withExpired) where.validUntil = MoreThan(new Date()) + if (!filters || !filters.withRedeemed) where.redeemedBy = null + if (!filters || !filters.withExpired) where.validUntil = MoreThan(new Date()) const [transactionLinks, count] = await dbTransactionLink.findAndCount({ where, - withDeleted: filters.withDeleted, + withDeleted: !filters ? false : filters.withDeleted, order: { createdAt: order, }, diff --git a/backend/src/seeds/graphql/mutations.ts b/backend/src/seeds/graphql/mutations.ts index 269901e94..d5dc99b99 100644 --- a/backend/src/seeds/graphql/mutations.ts +++ b/backend/src/seeds/graphql/mutations.ts @@ -165,7 +165,7 @@ export const deletePendingCreation = gql` export const listTransactionLinksAdmin = gql` query ( $userId: Int! - $filters: TransactionLinkFilters! + $filters: TransactionLinkFilters $currentPage: Int = 1 $pageSize: Int = 5 ) {