From 89c17fd0abb353d195b30b8f50512aabc1113a63 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Tue, 29 Aug 2023 11:34:55 +0800 Subject: [PATCH] Only filter inactive newsletters out from the subscriptions response --- .../api/src/resolvers/subscriptions/index.ts | 9 +++++ .../api/test/resolvers/subscriptions.test.ts | 34 ++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/packages/api/src/resolvers/subscriptions/index.ts b/packages/api/src/resolvers/subscriptions/index.ts index b7890f1dc..95fc2abc0 100644 --- a/packages/api/src/resolvers/subscriptions/index.ts +++ b/packages/api/src/resolvers/subscriptions/index.ts @@ -74,8 +74,17 @@ export const subscriptionsResolver = authorized< .leftJoinAndSelect('subscription.newsletterEmail', 'newsletterEmail') .where({ user: { id: uid }, + }) + + // Show all RSS, but only active newsletters + queryBuilder + .where({ + type: SubscriptionType.Newsletter, status: SubscriptionStatus.Active, }) + .orWhere({ + type: SubscriptionType.Rss, + }) if (type) { queryBuilder.andWhere({ diff --git a/packages/api/test/resolvers/subscriptions.test.ts b/packages/api/test/resolvers/subscriptions.test.ts index 480925a4e..621c266b4 100644 --- a/packages/api/test/resolvers/subscriptions.test.ts +++ b/packages/api/test/resolvers/subscriptions.test.ts @@ -88,11 +88,6 @@ describe('Subscriptions API', () => { it('should return subscriptions', async () => { const res = await graphqlRequest(query, authToken).expect(200) - console.log( - 'test subscriptions: ', - res.body.data.subscriptions.subscriptions - ) - expect(res.body.data.subscriptions.subscriptions).to.eql( subscriptions.map((sub) => ({ id: sub.id, @@ -101,6 +96,35 @@ describe('Subscriptions API', () => { ) }) + it('should return only newsletters when type newsletter supplied', async () => { + query = ` + query { + subscriptions(type: NEWSLETTER) { + ... on SubscriptionsSuccess { + subscriptions { + id + name + } + } + ... on SubscriptionsError { + errorCodes + } + } + } + ` + const newsletters = subscriptions.filter( + (s) => s.type == SubscriptionType.Newsletter + ) + const res = await graphqlRequest(query, authToken).expect(200) + + expect(res.body.data.subscriptions.subscriptions).to.eql( + newsletters.map((sub) => ({ + id: sub.id, + name: sub.name, + })) + ) + }) + it('responds status code 400 when invalid query', async () => { const invalidQuery = ` query {