adonis .ts unit test code coverage nyc still got uncovered line

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()

result code coverage

I want to reach 90% code coverage minimum

Upvotes: 0

Views: 32

Answers (0)

Related Questions