Reputation: 1
I have test using nyc and sinon mock
test('updateNewsletter - should update starredAt when status is "starred"', async ({ assert }) => {
const updateStub = sinon.stub().resolves(1)
sinon.stub(NewsLetterStarred, 'query').returns({
where: sinon.stub().returnsThis(),
query: sinon.stub().returnsThis(),
andWhere: sinon.stub().returnsThis(),
update: updateStub,
} as any)
const result = await NewsletterService.updateNewsletter(1, 'c1a0976e-8a4e-4baf-ba97-0a4e6e64c6c7', 'starred')
assert.isTrue(result)
sinon.assert.calledOnceWithExactly(updateStub, { starredAt: sinon.match.date })
})
**for my method **
public async updateNewsletter(newsletter_id: number, doctor_id: string, status: string | undefined) {
if (status === 'read') {
await NewsLetterStarred.query()
.where('newsletter_id', newsletter_id)
.andWhere('doctor_id', doctor_id)
.update({ readAt: new Date() })
} else if (status === 'starred') {
await NewsLetterStarred.query()
.where('newsletter_id', newsletter_id)
.andWhere('doctor_id', doctor_id)
.update({ starredAt: new Date() })
} else if (status === 'unstarred') {
await NewsLetterStarred.query()
.where('newsletter_id', newsletter_id)
.andWhere('doctor_id', doctor_id)
.update({ starredAt: null })
} else {
await NewsLetterStarred.query()
.where('newsletter_id', newsletter_id)
.andWhere('doctor_id', doctor_id)
.update({ showPopup: null })
}
return true
}
but when I run test code coverage, result not reach 90% code coverage, when I check sonar, there is uncovered line on
this line 76 - 79
.andWhere('doctor_id', doctor_id)
.update({ readAt: new Date() })
} else if (status === 'starred') {
await NewsLetterStarred.query()
I want to reach 90% code coverage minimum
Upvotes: 0
Views: 32