diff --git a/frontend/test/unit/specs/stores/media-store.spec.js b/frontend/test/unit/specs/stores/media-store.spec.js index 31caeb8bc93..f27dcc785fa 100644 --- a/frontend/test/unit/specs/stores/media-store.spec.js +++ b/frontend/test/unit/specs/stores/media-store.spec.js @@ -1,5 +1,3 @@ -import { AxiosError } from "axios" - import { setActivePinia, createPinia } from "~~/test/unit/test-utils/pinia" import { deepClone } from "~/utils/clone" @@ -173,8 +171,8 @@ describe("Media Store", () => { it.each` searchType | fetchState - ${ALL_MEDIA} | ${{ fetchingError: null, hasStarted: true, isFetching: true, isFinished: false }} - ${AUDIO} | ${{ fetchingError: "Error", hasStarted: true, isFetching: false, isFinished: true }} + ${ALL_MEDIA} | ${{ fetchingError: { message: "All media fetching error", statusCode: 404 }, hasStarted: true, isFetching: true, isFinished: false }} + ${AUDIO} | ${{ fetchingError: { message: "Not found", statusCode: 404 }, hasStarted: true, isFetching: false, isFinished: true }} ${IMAGE} | ${{ fetchingError: null, hasStarted: true, isFetching: true, isFinished: false }} `( "fetchState for $searchType returns $fetchState", @@ -182,7 +180,10 @@ describe("Media Store", () => { const mediaStore = useMediaStore() const searchStore = useSearchStore() searchStore.setSearchType(searchType) - mediaStore._updateFetchState(AUDIO, "end", "Error") + mediaStore._updateFetchState(AUDIO, "end", { + message: "Not found", + statusCode: 404, + }) mediaStore._updateFetchState(IMAGE, "start") expect(mediaStore.fetchState).toEqual(fetchState) @@ -192,11 +193,11 @@ describe("Media Store", () => { const mediaStore = useMediaStore() const searchStore = useSearchStore() searchStore.setSearchType(ALL_MEDIA) - mediaStore._updateFetchState(AUDIO, "end", "Error") - mediaStore._updateFetchState(IMAGE, "end", "Error") + mediaStore._updateFetchState(AUDIO, "end", { message: "Error" }) + mediaStore._updateFetchState(IMAGE, "end", { message: "Error" }) expect(mediaStore.fetchState).toEqual({ - fetchingError: '{"image":"Error","audio":"Error"}', + fetchingError: { message: "All media fetching error", statusCode: 404 }, hasStarted: true, isFetching: false, isFinished: true, @@ -378,91 +379,6 @@ describe("Media Store", () => { }) }) - it("handleMediaError handles 500 error", () => { - const mediaType = AUDIO - const error = new AxiosError( - "500 server error", - "ERR_BAD_RESPONSE", - undefined, - { path: "/foo" }, - { status: 500 } - ) - const mediaStore = useMediaStore() - mediaStore.handleMediaError({ mediaType, error }) - expect(mediaStore.$nuxt.$sentry.captureEvent).toHaveBeenCalledWith({ - message: - "Error fetching audio from API. Request failed with status code: 500", - extra: { mediaType, error }, - }) - }) - - it("handleMediaError handles a 403 error", () => { - const mediaType = AUDIO - const error = new AxiosError( - "403 error", - "ERR_BAD_REQUEST", - undefined, - { path: "/foo" }, - { status: 403 } - ) - const mediaStore = useMediaStore() - mediaStore.handleMediaError({ mediaType, error }) - expect(mediaStore.$nuxt.$sentry.captureEvent).toHaveBeenCalledWith({ - message: - "Error fetching audio from API. Request failed with status code: 403", - extra: { mediaType, error }, - }) - expect(mediaStore.mediaFetchState.audio.fetchingError).toEqual( - "Error fetching audio from API. Request failed with status code: 403" - ) - expect(mediaStore.mediaFetchState.audio.isFetching).toEqual(false) - }) - - it("handleMediaError handles an error when server did not respond", async () => { - const mediaStore = useMediaStore() - const mediaType = AUDIO - const noResponseAxiosError = new AxiosError( - "Unknown error", - "ETIMEDOUT", - undefined, - { - path: "/foo", - } - ) - await mediaStore.handleMediaError({ - mediaType, - error: noResponseAxiosError, - }) - - const expectedErrorMessage = - "Error fetching audio from API. No response received from the server" - expect(mediaStore.mediaFetchState.audio.fetchingError).toEqual( - expectedErrorMessage - ) - expect(mediaStore.mediaFetchState.audio.isFetching).toEqual(false) - expect(mediaStore.$nuxt.$sentry.captureEvent).toHaveBeenCalledWith({ - message: expectedErrorMessage, - extra: { mediaType, error: noResponseAxiosError }, - }) - }) - - it("handleMediaError re-throws a non-Axios error", async () => { - const mediaStore = useMediaStore() - const nonAxiosError = new Error("non-Axios error") - - const expectedErrorMessage = - "Error fetching audio from API. Unknown error" - await expect( - mediaStore.handleMediaError({ - mediaType: AUDIO, - error: nonAxiosError, - }) - ).rejects.toThrow(expectedErrorMessage) - expect(mediaStore.mediaFetchState.audio.fetchingError).toEqual( - expectedErrorMessage - ) - }) - describe("setMediaProperties", () => { it("merges the existing media item together with the properties passed in allowing overwriting", () => { const mediaStore = useMediaStore()