describe('UsersService', () => {
let userService: UserService;
beforeEach(async () => {
const moduleRef = await Test.createTestingModule({
imports: [
MongooseModule.forFeature([
{ name: 'User', schema: UserSchema },
{ name: 'File', schema: FileSchema },
{ name: 'Org', schema: OrgSchema },
]),
forwardRef(() => OrgModule),
S3Module,
WallexModule,
],
providers: [
UserService,
{
provide: getModelToken('User'),
useValue: userModelMock,
},
{
provide: getModelToken('Org'),
useValue: orgModelMock,
},
{
provide: getModelToken('File'),
useValue: fileModelMock,
},
{
provide: getConnectionToken(),
useFactory: async (configService: ConfigService) => {
const mongod = new MongoMemoryServer();
const uri = await mongod.getUri();
return {
uri: uri,
};
},
inject: [ConfigService],
},
],
}).compile();
userService = moduleRef.get<UserService>(UserService);
userModelMock.create.mockResolvedValue(newUserMock);
});
afterEach(() => {
jest.clearAllMocks();
});
it('should create a new user and return the created user', async () => {
const createUserDto: CreateUserDto = {
firstName: 'testuser',
email: '[email protected]',
title: 'Mr',
lastName: 'testuser',
language: 'en',
phoneCode: '91',
accountType: AccountType.COMPANY,
mobileNumber: 1234567890,
orgName: 'testorg',
};
const result = await userService.create(createUserDto);
expect(userModelMock.create).toHaveBeenCalledWith(createUserDto);
expect(result).toEqual(newUserMock);
});
});