diff --git a/packages/api/src/resolvers/subscriptions/index.ts b/packages/api/src/resolvers/subscriptions/index.ts index 0e8a41e94..67c2fe978 100644 --- a/packages/api/src/resolvers/subscriptions/index.ts +++ b/packages/api/src/resolvers/subscriptions/index.ts @@ -50,13 +50,15 @@ export const subscriptionsResolver = authorized< } } - const subscriptions = await getRepository(Subscription).find({ - where: { user: { id: uid }, status: SubscriptionStatus.Active }, - order: { - [sortBy]: sortOrder, - }, - relations: ['newsletterEmail'], - }) + const subscriptions = await getRepository(Subscription) + .createQueryBuilder('subscription') + .innerJoinAndSelect('subscription.newsletterEmail', 'newsletterEmail') + .where({ + user: { id: uid }, + status: SubscriptionStatus.Active, + }) + .orderBy('subscription.' + sortBy, sortOrder) + .getMany() return { subscriptions: subscriptions.map((s) => ({ diff --git a/packages/api/test/db.ts b/packages/api/test/db.ts index aa6f859fa..b861acf3d 100644 --- a/packages/api/test/db.ts +++ b/packages/api/test/db.ts @@ -197,15 +197,16 @@ export const createTestLabel = async ( export const createTestSubscription = async ( user: User, name: string, - newsletterEmail: NewsletterEmail, + newsletterEmail?: NewsletterEmail, status = SubscriptionStatus.Active ): Promise => { - return getRepository(Subscription).save({ - user, - name, - status, - newsletterEmail: { id: newsletterEmail.id }, - }) + const subscription = new Subscription() + subscription.user = user + subscription.name = name + newsletterEmail && (subscription.newsletterEmail = newsletterEmail) + subscription.status = status + + return getRepository(Subscription).save(subscription) } export const deleteTestLabels = async ( diff --git a/packages/api/test/resolvers/subscriptions.test.ts b/packages/api/test/resolvers/subscriptions.test.ts index c0a2a7631..962b97f16 100644 --- a/packages/api/test/resolvers/subscriptions.test.ts +++ b/packages/api/test/resolvers/subscriptions.test.ts @@ -32,12 +32,15 @@ describe('Subscriptions API', () => { // create testing subscriptions const sub1 = await createTestSubscription(user, 'sub_1', newsletterEmail) const sub2 = await createTestSubscription(user, 'sub_2', newsletterEmail) + // create a unsubscribed subscription await createTestSubscription( user, 'sub_3', newsletterEmail, SubscriptionStatus.Unsubscribed ) + // create a subscription without a newsletter email + await createTestSubscription(user, 'sub_4') subscriptions = [sub2, sub1] })