From e94f6de466e43e8bbb3e374e4eff06e5eca2b2db Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 18 Jan 2023 14:36:23 +0800 Subject: [PATCH] Delete subscription if unsub --- packages/api/src/services/subscriptions.ts | 11 +++-------- packages/api/test/resolvers/subscriptions.test.ts | 7 +++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/api/src/services/subscriptions.ts b/packages/api/src/services/subscriptions.ts index edf013f19..c58e770b4 100644 --- a/packages/api/src/services/subscriptions.ts +++ b/packages/api/src/services/subscriptions.ts @@ -52,7 +52,6 @@ export const saveSubscription = async ({ name, newsletterEmail: { id: newsletterEmail.id }, user: { id: userId }, - status: SubscriptionStatus.Active, unsubscribeHttpUrl, unsubscribeMailTo, icon, @@ -63,9 +62,7 @@ export const saveSubscription = async ({ return result.identifiers[0].id as string } -export const unsubscribe = async ( - subscription: Subscription -): Promise => { +export const unsubscribe = async (subscription: Subscription) => { if (subscription.unsubscribeMailTo) { // unsubscribe by sending email first await sendUnsubscribeEmail( @@ -79,9 +76,8 @@ export const unsubscribe = async ( throw new Error('No unsubscribe method defined') } - // set status to unsubscribed - subscription.status = SubscriptionStatus.Unsubscribed - return getRepository(Subscription).save(subscription) + // delete the subscription + await getRepository(Subscription).delete(subscription.id) } export const unsubscribeAll = async ( @@ -91,7 +87,6 @@ export const unsubscribeAll = async ( const subscriptions = await getRepository(Subscription).find({ where: { user: { id: newsletterEmail.user.id }, - status: SubscriptionStatus.Active, newsletterEmail: { id: newsletterEmail.id }, }, relations: ['newsletterEmail'], diff --git a/packages/api/test/resolvers/subscriptions.test.ts b/packages/api/test/resolvers/subscriptions.test.ts index 2ceb71403..c0a2a7631 100644 --- a/packages/api/test/resolvers/subscriptions.test.ts +++ b/packages/api/test/resolvers/subscriptions.test.ts @@ -6,6 +6,7 @@ import 'mocha' import { User } from '../../src/entity/user' import { getRepository } from '../../src/entity/utils' import { NewsletterEmail } from '../../src/entity/newsletter_email' +import { SubscriptionStatus } from '../../src/generated/graphql' describe('Subscriptions API', () => { let user: User @@ -31,6 +32,12 @@ describe('Subscriptions API', () => { // create testing subscriptions const sub1 = await createTestSubscription(user, 'sub_1', newsletterEmail) const sub2 = await createTestSubscription(user, 'sub_2', newsletterEmail) + await createTestSubscription( + user, + 'sub_3', + newsletterEmail, + SubscriptionStatus.Unsubscribed + ) subscriptions = [sub2, sub1] })