Spaces:
Paused
Paused
| import { describe, it, expect, beforeEach } from 'vitest'; | |
| import { http, HttpResponse } from 'msw'; | |
| import { server } from '../setup.js'; | |
| import { | |
| fetchIsrcFromDeezer, | |
| fetchIsrcFromItunes, | |
| fetchFromOdesli, | |
| } from '../../src/services/spotify/external.js'; | |
| import { | |
| getMetrics, | |
| resetMetrics, | |
| } from '../../src/utils/infra/metrics.util.js'; | |
| describe('per-source resolution failure metrics', () => { | |
| beforeEach(() => { | |
| resetMetrics(); | |
| }); | |
| it('labels a Deezer failure as resolve:deezer', async () => { | |
| server.use( | |
| http.get('https://api.deezer.com/search', () => HttpResponse.error()) | |
| ); | |
| expect(await fetchIsrcFromDeezer('Song', 'Artist')).toBeNull(); | |
| expect(getMetrics().failures['resolve:deezer']).toBe(1); | |
| }); | |
| it('labels an iTunes failure as resolve:itunes', async () => { | |
| server.use( | |
| http.get('https://itunes.apple.com/search', () => HttpResponse.error()) | |
| ); | |
| expect(await fetchIsrcFromItunes('Song', 'Artist')).toBeNull(); | |
| expect(getMetrics().failures['resolve:itunes']).toBe(1); | |
| }); | |
| it('labels an Odesli failure as resolve:odesli', async () => { | |
| server.use( | |
| http.get('https://api.odesli.co/v1-alpha.1/links', () => | |
| HttpResponse.error() | |
| ) | |
| ); | |
| const res = await fetchFromOdesli( | |
| 'https://open.spotify.com/track/1xwtOTVFN4MsGEKpGyKfIV' | |
| ); | |
| expect(res).toBeNull(); | |
| expect(getMetrics().failures['resolve:odesli']).toBe(1); | |
| }); | |
| }); | |