Skip to content

Commit

Permalink
Fix unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
obulat committed Jul 12, 2023
1 parent 04d0d10 commit 55a7379
Showing 1 changed file with 9 additions and 93 deletions.
102 changes: 9 additions & 93 deletions frontend/test/unit/specs/stores/media-store.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import { AxiosError } from "axios"

import { setActivePinia, createPinia } from "~~/test/unit/test-utils/pinia"

import { deepClone } from "~/utils/clone"
Expand Down Expand Up @@ -173,16 +171,19 @@ 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",
({ searchType, fetchState }) => {
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)
Expand All @@ -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,
Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit 55a7379

Please sign in to comment.