Skip to content
Snippets Groups Projects
admin.controller.spec.ts 3 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { HttpException, HttpModule, HttpStatus } from '@nestjs/common';
    
    import { getModelToken } from '@nestjs/mongoose';
    
    import { Test, TestingModule } from '@nestjs/testing';
    
    import { ConfigurationModule } from '../configuration/configuration.module';
    import { MailerService } from '../mailer/mailer.service';
    
    import { NewsletterSubscription } from '../newsletter/newsletter-subscription.schema';
    import { NewsletterService } from '../newsletter/newsletter.service';
    
    import { Structure } from '../structures/schemas/structure.schema';
    import { StructuresService } from '../structures/services/structures.service';
    import { User } from '../users/schemas/user.schema';
    import { UsersService } from '../users/users.service';
    
    import { AdminController } from './admin.controller';
    
    import { PendingStructureDto } from './dto/pending-structure.dto';
    
    
    describe('AdminController', () => {
      let controller: AdminController;
    
      beforeEach(async () => {
        const module: TestingModule = await Test.createTestingModule({
    
          imports: [ConfigurationModule, HttpModule],
          providers: [
            UsersService,
            StructuresService,
    
            NewsletterService,
    
            MailerService,
            {
              provide: getModelToken('User'),
              useValue: User,
            },
    
            {
              provide: getModelToken('NewsletterSubscription'),
              useValue: NewsletterSubscription,
            },
    
            {
              provide: getModelToken('Structure'),
              useValue: Structure,
            },
          ],
    
          controllers: [AdminController],
        }).compile();
    
        controller = module.get<AdminController>(AdminController);
      });
    
      it('should be defined', () => {
        expect(controller).toBeDefined();
      });
    
    
      it('should get pending attachments', async () => {
        const result = [{name: "MJC Route de vienne", address: "14 chemin des platanes"}, {name: "Mairie Lyon 7eme", address: "21 boulevard martin"}];
        jest.spyOn(controller, 'getPendingAttachments').mockImplementation(async (): Promise<any> => result);
        expect(await controller.getPendingAttachments()).toBe(result);
      });
    
      it('should validate pending structure', async () => {
        const result = [{name: "MJC Route de vienne", address: "14 chemin des platanes"}];
        const structure: PendingStructureDto = {userEmail:"martin@mjc.fr", structureId: "1", structureName:"MJC Route de vienne"};
        jest.spyOn(controller, 'validatePendingStructure').mockImplementation(async (): Promise<any> => result);
        expect(await controller.validatePendingStructure(structure)).toBe(result);
      });
    
      it('should refuse pending structure', async () => {
        const result = [{name: "MJC Route de vienne", address: "14 chemin des platanes"}, {name: "Mairie Lyon 7eme", address: "21 boulevard martin"}];
        const structure: PendingStructureDto = {userEmail:"martin@mjc.fr", structureId: "1", structureName:"MJC Route de vienne"};
        jest.spyOn(controller, 'refusePendingStructure').mockImplementation(async (): Promise<any> => result);
        expect(await controller.refusePendingStructure(structure)).toBe(result);
      });