Skip to content
Snippets Groups Projects
newsletter.controller.spec.ts 1.87 KiB
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);