Jest - testing sequelize with Nest.js

Viewed 1061

I'm testing a nest.js service, this method basically will receive a find method from sequelize:

...
import { Auth } from './../../modules/auth/entities/auth.entity';
import { Sequelize } from 'sequelize-typescript';
import { getModelToken } from '@nestjs/sequelize';

jest.mock('./../../modules/auth/auth.service');

const sequelize = new Sequelize({ validateOnly: true });
sequelize.addModels([Auth]);

const testAuth = new Auth({
  id_user: '1',
});

describe('AuthGuardService', () => {
  let service: AuthGuardService;
  let authService: AuthService;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [
        AuthGuardService,
        AuthService,
        {
          provide: getModelToken(Auth),
          useValue: { findOne: jest.fn(() => testAuth) },
        },
      ],
      imports: [HttpModule],
    }).compile();

    service = module.get<AuthGuardService>(AuthGuardService);
    authService = module.get<AuthService>(AuthService);
  });

...

    it('it should return true', async () => {
      expect(
        await authService.find({
          id: '1',
        })
      ).toEqual(testAuth);
    });

on my service I'm trying to test this exactly block:

      const user = await this.authService.find({
        id: value,
      });

     if(user.id === some_value) {
        return true;
     }

but I always get undefined when I tried to read user from my test.

TypeError: Cannot read property 'id' of undefined

0 Answers
Related