'Jest :TypeError: (intermediate value) is not iterable
I have 2 methods below.
searchCertificates() is a private method which is called inside findAll().
async findAll(queryCertificateDto: QueryCertificateDto): Promise<PaginatedResult> {
const { data, meta } = await this.searchCertificates(queryCertificateDto);
return {
data,
meta,
};
}
private async searchCertificates(
queryCertificateDto: QueryCertificateDto
): Promise<PaginatedResult> {
const {
page,
take,
certificateNo,
startDate,
endDate,
} = queryCertificateDto;
const query = this.certificateRepository.createQueryBuilder('certificate');
if (certificateNo) {
query.andWhere('certificate.certificateNo=:certificateNo', { certificateNo });
}
if (startDate && endDate) {
query.andWhere('CAST(certificate.createdAt as Date) BETWEEN :startDate AND :endDate', {
startDate,
endDate,
});
} else if (startDate) {
query.andWhere('CAST(certificate.startDate as Date)=:startDate', { startDate });
} else if (endDate) {
query.andWhere('CAST(certificate.endDate as Date)=:endDate', { endDate });
}
const [certificates, total] = await query
.orderBy('certificate.certificateNo', 'ASC')
.take(take)
.skip((page - 1) * take)
.getManyAndCount();
return {
data: certificates,
meta: {
total,
page,
last_page: Math.ceil(total / take),
},
};
}
I wrote below test case to cover startDate.
useValue: {
find: jest.fn().mockReturnValue(certificate),
createQueryBuilder: jest.fn(() => ({
andWhere: jest.fn().mockReturnValue(certificate),
getManyAndCount: jest.fn().mockReturnValueOnce(certificate),
orderBy: jest.fn().mockReturnThis(),
take: jest.fn().mockReturnThis(),
skip: jest.fn().mockReturnThis(),
page: jest.fn().mockReturnThis(),
})),
findOne: jest.fn().mockReturnValue(certificate),
save: jest.fn().mockReturnValue(new Certificate()),
softRemove: jest.fn().mockReturnValue(new Certificate()),
},
Below is the test case.
it('return the Certificate list for start date', async () => {
const queryCertificateDto = new QueryCertificateDto();
queryCertificateDto.startDate = '23-MAR-2019';
const result = await service.findAll(queryCertificateDto);
expect(result['startDate']).toEqual(certificate.startDate);
});
It is getting failing.
I don't know even the reason for it. Could you please help me to understand?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|

