Newer
Older
import { HttpModule } from '@nestjs/axios';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { ConfigurationModule } from '../configuration/configuration.module';
import { NewsletterSubscription } from './newsletter-subscription.schema';
import { NewsletterController } from './newsletter.controller';
import { NewsletterService } from './newsletter.service';
describe('NewsletterController', () => {
let newsletterController: NewsletterController;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
imports: [ConfigurationModule, HttpModule],
providers: [
NewsletterService,
{
provide: getModelToken('NewsletterSubscription'),
useValue: NewsletterSubscription,
},
],
controllers: [NewsletterController],
}).compile();
newsletterController = module.get<NewsletterController>(NewsletterController);
});
it('should be defined', () => {
expect(newsletterController).toBeDefined();
});
it('should subscribe user', async () => {
const result = { email: 'email@test.com', mailchimpId: 'test' };
jest
.spyOn(newsletterController, 'newsletterSubscribe')
.mockImplementation(async (): Promise<{ email; mailchimpId }> => result);
const email = { email: 'email@test.com', mailchimpId: 'test' };
expect(await newsletterController.newsletterSubscribe(email)).toBe(result);
});
it('should unsubscribe user', async () => {
const result = { email: 'email@test.com', mailchimpId: 'test' };
jest
.spyOn(newsletterController, 'newsletterUnsubscribe')
.mockImplementation(async (): Promise<{ email; mailchimpId }> => result);
const email = { email: 'email@test.com', mailchimpId: 'test' };
expect(await newsletterController.newsletterUnsubscribe(email)).toBe(result);