return folder when newsletter email api is called

This commit is contained in:
Hongbo Wu
2023-12-19 14:52:30 +08:00
parent a2a7725047
commit b5f82d448e
2 changed files with 21 additions and 5 deletions

View File

@ -4,7 +4,10 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { createHmac } from 'crypto'
import { NewsletterEmail } from '../entity/newsletter_email'
import {
EXISTING_NEWSLETTER_FOLDER,
NewsletterEmail,
} from '../entity/newsletter_email'
import {
DEFAULT_SUBSCRIPTION_FOLDER,
Subscription,
@ -450,6 +453,9 @@ export const functionResolvers = {
subscriptionCount(newsletterEmail: NewsletterEmail) {
return newsletterEmail.subscriptions?.length || 0
},
folder(newsletterEmail: NewsletterEmail) {
return newsletterEmail.folder || EXISTING_NEWSLETTER_FOLDER
},
},
...resultResolveTypeResolver('Login'),
...resultResolveTypeResolver('LogOut'),

View File

@ -18,6 +18,7 @@ import { createTestUser } from '../db'
import { generateFakeUuid, graphqlRequest, request } from '../util'
describe('Newsletters API', () => {
const defaultFolder = 'inbox'
let user: User
let authToken: string
@ -47,6 +48,7 @@ describe('Newsletters API', () => {
confirmationCode
createdAt
subscriptionCount
folder
}
}
@ -101,6 +103,7 @@ describe('Newsletters API', () => {
createdAt:
newsletterEmails[1].createdAt.toISOString().split('.')[0] + 'Z',
subscriptionCount: 1,
folder: defaultFolder,
},
{
id: newsletterEmails[0].id,
@ -109,6 +112,7 @@ describe('Newsletters API', () => {
createdAt:
newsletterEmails[0].createdAt.toISOString().split('.')[0] + 'Z',
subscriptionCount: 0,
folder: defaultFolder,
},
])
})
@ -165,8 +169,8 @@ describe('Newsletters API', () => {
describe('Create newsletter email', () => {
const query = `
mutation {
createNewsletterEmail {
mutation CreateNewsletterEmail($input: CreateNewsletterEmailInput!) {
createNewsletterEmail(input: $input) {
... on CreateNewsletterEmailSuccess {
newsletterEmail {
id
@ -181,11 +185,17 @@ describe('Newsletters API', () => {
`
it('responds with status code 200', async () => {
const response = await graphqlRequest(query, authToken).expect(200)
const folder = 'following'
const response = await graphqlRequest(query, authToken, {
input: {
folder,
}
}).expect(200)
const newsletterEmail = await findNewsletterEmailById(
response.body.data.createNewsletterEmail.id
response.body.data.createNewsletterEmail.newsletterEmail.id
)
expect(newsletterEmail).not.to.be.undefined
expect(newsletterEmail?.folder).to.eql(folder)
})
it('responds status code 400 when invalid query', async () => {