Fixing unit tests
This commit is contained in:
parent
c7e500ad6f
commit
6340a2328e
2 changed files with 43 additions and 9 deletions
13
test/config.ts
Normal file
13
test/config.ts
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
export default {
|
||||||
|
REDIS_HOST: 'localhost',
|
||||||
|
REDIS_PORT: '6379',
|
||||||
|
EMAIL_HOST: 'email_host.com',
|
||||||
|
EMAIL_USER: 'email@email_host.com',
|
||||||
|
EMAIL_PASSWORD: 'email_password',
|
||||||
|
EMAIL_MAILBOX: 'mailbox',
|
||||||
|
NTFY_HOST: 'host.ntfy.com',
|
||||||
|
NTFY_TOPIC: 'autobaan',
|
||||||
|
NTFY_TOKEN: 'tk_123',
|
||||||
|
BAANRESERVEREN_USERNAME: 'username',
|
||||||
|
BAANRESERVEREN_PASSWORD: 'password',
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { getQueueToken } from '@nestjs/bull'
|
||||||
import { ConfigModule } from '@nestjs/config'
|
import { ConfigModule } from '@nestjs/config'
|
||||||
import { Test, TestingModule } from '@nestjs/testing'
|
import { Test, TestingModule } from '@nestjs/testing'
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm'
|
import { TypeOrmModule } from '@nestjs/typeorm'
|
||||||
|
|
@ -6,12 +7,20 @@ import { LoggerModule } from '../../../src/logger/module'
|
||||||
import { LoggerService } from '../../../src/logger/service.logger'
|
import { LoggerService } from '../../../src/logger/service.logger'
|
||||||
import { NtfyModule } from '../../../src/ntfy/module'
|
import { NtfyModule } from '../../../src/ntfy/module'
|
||||||
import { NtfyProvider } from '../../../src/ntfy/provider'
|
import { NtfyProvider } from '../../../src/ntfy/provider'
|
||||||
import { ReservationsCronService } from '../../../src/reservations/cron'
|
import {
|
||||||
|
RESERVATIONS_QUEUE_NAME,
|
||||||
|
ReservationsQueue,
|
||||||
|
} from '../../../src/reservations/config'
|
||||||
|
import {
|
||||||
|
DAILY_RESERVATIONS_ATTEMPTS,
|
||||||
|
ReservationsCronService,
|
||||||
|
} from '../../../src/reservations/cron'
|
||||||
import { Reservation } from '../../../src/reservations/entity'
|
import { Reservation } from '../../../src/reservations/entity'
|
||||||
import { ReservationsModule } from '../../../src/reservations/module'
|
import { ReservationsModule } from '../../../src/reservations/module'
|
||||||
import { ReservationsService } from '../../../src/reservations/service'
|
import { ReservationsService } from '../../../src/reservations/service'
|
||||||
import { BaanReserverenService } from '../../../src/runner/baanreserveren/service'
|
import { BaanReserverenService } from '../../../src/runner/baanreserveren/service'
|
||||||
import { RunnerModule } from '../../../src/runner/module'
|
import { RunnerModule } from '../../../src/runner/module'
|
||||||
|
import config from '../../config'
|
||||||
|
|
||||||
describe('reservations.cron', () => {
|
describe('reservations.cron', () => {
|
||||||
let module: TestingModule
|
let module: TestingModule
|
||||||
|
|
@ -24,7 +33,12 @@ describe('reservations.cron', () => {
|
||||||
RunnerModule,
|
RunnerModule,
|
||||||
NtfyModule,
|
NtfyModule,
|
||||||
LoggerModule,
|
LoggerModule,
|
||||||
ConfigModule.forRoot({ isGlobal: true }),
|
ConfigModule.forRoot({
|
||||||
|
isGlobal: true,
|
||||||
|
ignoreEnvFile: true,
|
||||||
|
ignoreEnvVars: true,
|
||||||
|
load: [() => config],
|
||||||
|
}),
|
||||||
TypeOrmModule.forRoot({
|
TypeOrmModule.forRoot({
|
||||||
type: 'sqlite',
|
type: 'sqlite',
|
||||||
database: ':memory:',
|
database: ':memory:',
|
||||||
|
|
@ -55,7 +69,7 @@ describe('reservations.cron', () => {
|
||||||
describe('has scheduleable reservations', () => {
|
describe('has scheduleable reservations', () => {
|
||||||
const stubbedReservation = { id: 'abc-123' }
|
const stubbedReservation = { id: 'abc-123' }
|
||||||
let warmupSpy: jest.SpyInstance
|
let warmupSpy: jest.SpyInstance
|
||||||
let performReservationSpy: jest.SpyInstance
|
let reservationsQueueSpy: jest.SpyInstance
|
||||||
let loggerSpy: jest.SpyInstance
|
let loggerSpy: jest.SpyInstance
|
||||||
const loggerInvocationDates: { msg: string; timestamp: Date }[] = []
|
const loggerInvocationDates: { msg: string; timestamp: Date }[] = []
|
||||||
|
|
||||||
|
|
@ -75,15 +89,17 @@ describe('reservations.cron', () => {
|
||||||
)
|
)
|
||||||
.mockReturnValue(new Promise((res) => setTimeout(res, 1000)))
|
.mockReturnValue(new Promise((res) => setTimeout(res, 1000)))
|
||||||
|
|
||||||
performReservationSpy = jest
|
reservationsQueueSpy = jest
|
||||||
.spyOn(
|
.spyOn(
|
||||||
module.get<BaanReserverenService>(BaanReserverenService),
|
module.get<ReservationsQueue>(
|
||||||
'performReservation',
|
getQueueToken(RESERVATIONS_QUEUE_NAME),
|
||||||
|
),
|
||||||
|
'addBulk',
|
||||||
)
|
)
|
||||||
.mockResolvedValue()
|
.mockResolvedValue([]) // unused so empty array
|
||||||
|
|
||||||
loggerSpy = jest
|
loggerSpy = jest
|
||||||
.spyOn(module.get<LoggerService>(LoggerService), 'log')
|
.spyOn(module.get<LoggerService>(LoggerService), 'debug')
|
||||||
.mockImplementation((msg: string) => {
|
.mockImplementation((msg: string) => {
|
||||||
loggerInvocationDates.push({ msg, timestamp: new Date() })
|
loggerInvocationDates.push({ msg, timestamp: new Date() })
|
||||||
})
|
})
|
||||||
|
|
@ -114,7 +130,12 @@ describe('reservations.cron', () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should perform reservations', () => {
|
it('should perform reservations', () => {
|
||||||
expect(performReservationSpy).toHaveBeenCalledWith(stubbedReservation)
|
expect(reservationsQueueSpy).toHaveBeenCalledWith([
|
||||||
|
{
|
||||||
|
data: stubbedReservation,
|
||||||
|
opts: { attempts: DAILY_RESERVATIONS_ATTEMPTS },
|
||||||
|
},
|
||||||
|
])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue