From 1837f31906c4ec33f9f2e32c32e7258b1d97330d Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 9 Jan 2023 16:52:54 +0800 Subject: [PATCH] Add tests --- .../api/test/resolvers/newsletters.test.ts | 42 ++++++++++++++----- .../services/save_newsletter_email.test.ts | 7 ++++ 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/packages/api/test/resolvers/newsletters.test.ts b/packages/api/test/resolvers/newsletters.test.ts index 46f2ce22d..c2ad592a4 100644 --- a/packages/api/test/resolvers/newsletters.test.ts +++ b/packages/api/test/resolvers/newsletters.test.ts @@ -1,5 +1,6 @@ import { createTestNewsletterEmail, + createTestSubscription, createTestUser, deleteTestUser, getNewsletterEmail, @@ -35,6 +36,9 @@ describe('Newsletters API', () => { 'Test_email_address_2@omnivore.app' ) newsletterEmails = [newsletterEmail1, newsletterEmail2] + + // create testing subscriptions + await createTestSubscription(user, 'sub', newsletterEmail2) }) after(async () => { @@ -51,6 +55,8 @@ describe('Newsletters API', () => { id address confirmationCode + createdAt + subscriptionCount } } @@ -63,17 +69,31 @@ describe('Newsletters API', () => { it('responds with newsletter emails sort by created_at desc', async () => { const response = await graphqlRequest(query, authToken).expect(200) - expect(response.body.data.newsletterEmails.newsletterEmails).to.eqls( - newsletterEmails - .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime()) - .map((value) => { - return { - id: value.id, - address: value.address, - confirmationCode: value.confirmationCode, - } - }) - ) + expect( + response.body.data.newsletterEmails.newsletterEmails.map((e: any) => { + return { + ...e, + createdAt: new Date(e.createdAt).toISOString().split('.')[0] + 'Z', + } + }) + ).to.eqls([ + { + id: newsletterEmails[1].id, + address: newsletterEmails[1].address, + confirmationCode: newsletterEmails[1].confirmationCode, + createdAt: + newsletterEmails[1].createdAt.toISOString().split('.')[0] + 'Z', + subscriptionCount: 1, + }, + { + id: newsletterEmails[0].id, + address: newsletterEmails[0].address, + confirmationCode: newsletterEmails[0].confirmationCode, + createdAt: + newsletterEmails[0].createdAt.toISOString().split('.')[0] + 'Z', + subscriptionCount: 0, + }, + ]) }) it('responds status code 400 when invalid query', async () => { diff --git a/packages/api/test/services/save_newsletter_email.test.ts b/packages/api/test/services/save_newsletter_email.test.ts index 0f9bb3f99..a11ead336 100644 --- a/packages/api/test/services/save_newsletter_email.test.ts +++ b/packages/api/test/services/save_newsletter_email.test.ts @@ -10,6 +10,8 @@ import { SaveContext } from '../../src/services/save_email' import { createPubSubClient } from '../../src/datalayer/pubsub' import { getPageByParam } from '../../src/elastic/pages' import nock from 'nock' +import { getRepository } from '../../src/entity/utils' +import { Subscription } from '../../src/entity/subscription' describe('saveNewsletterEmail', () => { const fakeContent = 'fake content' @@ -55,6 +57,11 @@ describe('saveNewsletterEmail', () => { expect(page?.title).to.equal(title) expect(page?.author).to.equal(author) expect(page?.content).to.contain(fakeContent) + + const subscriptions = await getRepository(Subscription).findBy({ + newsletterEmail: { id: email.id }, + }) + expect(subscriptions).not.to.be.empty }) it('should adds a Newsletter label to that page', async () => {