From c4905aaba8ae2729fe85400ae4abd8f22531022a Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 1 Feb 2023 13:43:12 +0800 Subject: [PATCH 1/3] Add default empty value to the text field in received_emails table --- ...0.do.add_default_value_to_text_in_received_emails.sql | 9 +++++++++ ...undo.add_default_value_to_text_in_received_emails.sql | 9 +++++++++ 2 files changed, 18 insertions(+) create mode 100755 packages/db/migrations/0110.do.add_default_value_to_text_in_received_emails.sql create mode 100755 packages/db/migrations/0110.undo.add_default_value_to_text_in_received_emails.sql diff --git a/packages/db/migrations/0110.do.add_default_value_to_text_in_received_emails.sql b/packages/db/migrations/0110.do.add_default_value_to_text_in_received_emails.sql new file mode 100755 index 000000000..a08a8ff0f --- /dev/null +++ b/packages/db/migrations/0110.do.add_default_value_to_text_in_received_emails.sql @@ -0,0 +1,9 @@ +-- Type: DO +-- Name: add_default_value_to_text_in_received_emails +-- Description: Add default value to the text field in received_emails table + +BEGIN; + +ALTER TABLE omnivore.received_emails ALTER COLUMN text SET DEFAULT ''; + +COMMIT; diff --git a/packages/db/migrations/0110.undo.add_default_value_to_text_in_received_emails.sql b/packages/db/migrations/0110.undo.add_default_value_to_text_in_received_emails.sql new file mode 100755 index 000000000..60f09c56d --- /dev/null +++ b/packages/db/migrations/0110.undo.add_default_value_to_text_in_received_emails.sql @@ -0,0 +1,9 @@ +-- Type: UNDO +-- Name: add_default_value_to_text_in_received_emails +-- Description: Add default value to the text field in received_emails table + +BEGIN; + +ALTER TABLE omnivore.received_emails ALTER COLUMN text DROP DEFAULT; + +COMMIT; From ac6f5b497cbaa586c10c25be0d43efd1dd074f3a Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 1 Feb 2023 13:44:27 +0800 Subject: [PATCH 2/3] Accept null value for text in an email --- packages/api/src/routers/svc/emails.ts | 8 +------- packages/api/test/routers/emails.test.ts | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/api/src/routers/svc/emails.ts b/packages/api/src/routers/svc/emails.ts index b3ce6cefc..f6d1479c5 100644 --- a/packages/api/src/routers/svc/emails.ts +++ b/packages/api/src/routers/svc/emails.ts @@ -36,13 +36,7 @@ interface EmailMessage { } function isEmailMessage(data: any): data is EmailMessage { - return ( - 'from' in data && - 'to' in data && - 'subject' in data && - 'html' in data && - 'text' in data - ) + return 'from' in data && 'to' in data && 'subject' in data } const logger = buildLogger('app.dispatch') diff --git a/packages/api/test/routers/emails.test.ts b/packages/api/test/routers/emails.test.ts index 1b68043b1..f181d06d4 100644 --- a/packages/api/test/routers/emails.test.ts +++ b/packages/api/test/routers/emails.test.ts @@ -125,6 +125,7 @@ describe('Emails Router', () => { }) describe('create', () => { + const url = '/svc/pubsub/emails/save' const html = 'test html' const text = 'test text' const from = 'fake from' @@ -140,12 +141,26 @@ describe('Emails Router', () => { subject, } const res = await request - .post('/svc/pubsub/emails/save') + .post(url) + .set('Authorization', `${authToken}`) + .send(data) + .expect(200) + + expect(res.body.id).not.to.be.undefined + }) + + it('saves the email if body is empty', async () => { + const data = { + from, + to: newsletterEmail, + subject, + } + const res = await request + .post(url) .set('Authorization', `${authToken}`) .send(data) .expect(200) - console.log(res.body) expect(res.body.id).not.to.be.undefined }) }) From dd6c8cf6dcd1f7bbd263a6205bf6b98b7004d0db Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 1 Feb 2023 13:53:27 +0800 Subject: [PATCH 3/3] Make subject optional too --- packages/api/src/routers/svc/emails.ts | 2 +- packages/api/test/routers/emails.test.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/api/src/routers/svc/emails.ts b/packages/api/src/routers/svc/emails.ts index f6d1479c5..f14de103a 100644 --- a/packages/api/src/routers/svc/emails.ts +++ b/packages/api/src/routers/svc/emails.ts @@ -36,7 +36,7 @@ interface EmailMessage { } function isEmailMessage(data: any): data is EmailMessage { - return 'from' in data && 'to' in data && 'subject' in data + return 'from' in data && 'to' in data } const logger = buildLogger('app.dispatch') diff --git a/packages/api/test/routers/emails.test.ts b/packages/api/test/routers/emails.test.ts index f181d06d4..a625fe800 100644 --- a/packages/api/test/routers/emails.test.ts +++ b/packages/api/test/routers/emails.test.ts @@ -163,5 +163,20 @@ describe('Emails Router', () => { expect(res.body.id).not.to.be.undefined }) + + it('saves the email if subject is empty', async () => { + const data = { + from, + to: newsletterEmail, + html, + } + const res = await request + .post(url) + .set('Authorization', `${authToken}`) + .send(data) + .expect(200) + + expect(res.body.id).not.to.be.undefined + }) }) })