Skip to content
Snippets Groups Projects
newsletter.controller.spec.ts 2.05 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { HttpModule } from '@nestjs/axios';
    
    import { getModelToken } from '@nestjs/mongoose';
    
    import { Test } 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';
    
    import { UsersService } from '../users/services/users.service';
    
    describe('NewsletterController', () => {
    
      let newsletterController: NewsletterController;
    
      const mockUsersService = {
        find: jest.fn(),
      };
    
    
      beforeEach(async () => {
    
        const module = await Test.createTestingModule({
    
          imports: [ConfigurationModule, HttpModule],
          providers: [
            NewsletterService,
            {
              provide: getModelToken('NewsletterSubscription'),
              useValue: NewsletterSubscription,
            },
    
            {
              provide: UsersService,
              useValue: mockUsersService,
            },
    
          ],
          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);