nexstream-api / backend /tests /api /resolve_failure_metrics.test.ts
nexstream-deploy
deploy: nexstream backend (experiment)
2276d59
Raw
History Blame Contribute Delete
1.45 kB
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);
});
});