-
-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Food hygiene rating scheme #179
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @Dlurak, thanks for another great PR. 👋
]; | ||
|
||
fhrsIds.forEach(async (id) => { | ||
const rating = await getEstablishmentRatingValue(parseInt(id, 10)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please mock the fetchJson
to return an example response?
jest
.spyOn(fetch, 'fetchJson')
.mockResolvedValue(`{ response json ... }`);
Also If the response format is usally the same, one example is enough.
We write unit tests to test our conversion functions. Your test would check if API is working correctly, but if it was down it would block our pipeline. Good rule is "unit tests must work offline".
It could be good to know if shape of their API changed, but this is not role of unit tests. We could have perhaps some "3rd party service status page" checking that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So I changed it now, but I am not sure if it is right to have the entire API response or if it would be right to just have the relevant parts of the response.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that is perfect. We call it fixtures, and its fine to have long JSONs in tests. This test isn't that much useful, but at least we know what other info is in that api call - for future reference.
✅
src/components/FeaturePanel/renderers/FoodHygieneRatingScheme.tsx
Outdated
Show resolved
Hide resolved
const fhrsId = '269382'; | ||
const rating = await getEstablishmentRatingValue(parseInt(fhrsId, 10)); | ||
|
||
if (Number.isNaN(rating)) { | ||
expect(rating).toBeNaN(); | ||
return; | ||
} | ||
expect(rating).toBeGreaterThanOrEqual(0); | ||
expect(rating).toBeLessThanOrEqual(5); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be enough:
const fhrsId = '269382'; | |
const rating = await getEstablishmentRatingValue(parseInt(fhrsId, 10)); | |
if (Number.isNaN(rating)) { | |
expect(rating).toBeNaN(); | |
return; | |
} | |
expect(rating).toBeGreaterThanOrEqual(0); | |
expect(rating).toBeLessThanOrEqual(5); | |
const rating = await getEstablishmentRatingValue(423824); | |
expect(rating).toBe(5); |
This PR would fix #110. I‘ve implemented it as stars and a as a featured tag just like the website or phone number.
Example: https://osmapp.org/way/193321876