Skip to content

Commit

Permalink
feat: added tests for file facets status (#264)
Browse files Browse the repository at this point in the history
  • Loading branch information
Fran McDade authored and Fran McDade committed Nov 19, 2024
1 parent 08e3359 commit 13c2a48
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 24 deletions.
26 changes: 3 additions & 23 deletions src/providers/fileManifestState.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,29 +28,9 @@ import { useFetchFilesFacets } from "../hooks/useFileManifest/useFetchFilesFacet
import { useFetchSummary } from "../hooks/useFileManifest/useFetchSummary";
import { useFileManifestURL } from "../hooks/useFileManifest/useFileManifestURL";
import { updateFileManifestAction } from "./fileManifestState/actions";
import { FILE_MANIFEST_STATE } from "./fileManifestState/constants";
import { getRequestFilters } from "./fileManifestState/utils";

// Default file manifest state.
export const DEFAULT_FILE_MANIFEST_STATE: FileManifestState = {
fileManifestFormat: undefined,
fileManifestType: undefined,
fileSummary: undefined,
fileSummaryFacetName: undefined,
fileSummaryFilters: [],
filesFacets: [],
filesFacetsStatus: FILES_FACETS_STATUS.NOT_STARTED,
filters: [],
isEnabled: false,
isFacetsLoading: false,
isFacetsSuccess: false,
isFileSummaryLoading: false,
isLoading: false,
isSummaryLoading: false,
requestParams: undefined,
requestURL: undefined,
summary: undefined,
};

/**
* File manifest state.
*/
Expand Down Expand Up @@ -86,7 +66,7 @@ export const FileManifestStateContext =
createContext<FileManifestStateContextProps>({
// eslint-disable-next-line @typescript-eslint/no-empty-function -- allow dummy function for default state.
fileManifestDispatch: () => {},
fileManifestState: DEFAULT_FILE_MANIFEST_STATE,
fileManifestState: FILE_MANIFEST_STATE,
});

export interface FileManifestStateProps {
Expand All @@ -106,7 +86,7 @@ export function FileManifestStateProvider({
const [fileManifestState, fileManifestDispatch] = useReducer(
(s: FileManifestState, a: FileManifestAction) =>
fileManifestReducer(s, a, { URL, catalog }),
DEFAULT_FILE_MANIFEST_STATE
FILE_MANIFEST_STATE
);

const { fileSummaryFacetName, fileSummaryFilters, filters, isEnabled } =
Expand Down
26 changes: 25 additions & 1 deletion src/providers/fileManifestState/constants.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,31 @@
import { FILE_MANIFEST_TYPE } from "../../hooks/useFileManifest/common/entities";
import {
FILE_MANIFEST_TYPE,
FILES_FACETS_STATUS,
} from "../../hooks/useFileManifest/common/entities";
import { FileManifestState } from "../fileManifestState";

export const ENTITIES_FILE_MANIFEST_TYPES: FILE_MANIFEST_TYPE[] = [
FILE_MANIFEST_TYPE.BULK_DOWNLOAD,
FILE_MANIFEST_TYPE.DOWNLOAD_MANIFEST,
FILE_MANIFEST_TYPE.EXPORT_TO_TERRA,
];

export const FILE_MANIFEST_STATE: FileManifestState = {
fileManifestFormat: undefined,
fileManifestType: undefined,
fileSummary: undefined,
fileSummaryFacetName: undefined,
fileSummaryFilters: [],
filesFacets: [],
filesFacetsStatus: FILES_FACETS_STATUS.NOT_STARTED,
filters: [],
isEnabled: false,
isFacetsLoading: false,
isFacetsSuccess: false,
isFileSummaryLoading: false,
isLoading: false,
isSummaryLoading: false,
requestParams: undefined,
requestURL: undefined,
summary: undefined,
};
84 changes: 84 additions & 0 deletions tests/updateFilesFacetsStatus.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import { FILES_FACETS_STATUS } from "../src/hooks/useFileManifest/common/entities";
import {
FileManifestState,
UpdateFileManifestPayload,
} from "../src/providers/fileManifestState";
import { FILE_MANIFEST_STATE } from "../src/providers/fileManifestState/constants";
import { updateFilesFacetsStatus } from "../src/providers/fileManifestState/utils";

const FILE_MANIFEST_STATE_NOT_STARTED: FileManifestState = {
...FILE_MANIFEST_STATE,
filesFacetsStatus: FILES_FACETS_STATUS.NOT_STARTED,
};

const FILE_MANIFEST_STATE_IN_PROGRESS: FileManifestState = {
...FILE_MANIFEST_STATE,
filesFacetsStatus: FILES_FACETS_STATUS.IN_PROGRESS,
};

const FILE_MANIFEST_STATE_COMPLETED: FileManifestState = {
...FILE_MANIFEST_STATE,
filesFacetsStatus: FILES_FACETS_STATUS.COMPLETED,
};

const UPDATE_FILE_MANIFEST_PAYLOAD_IDLE = {
isFacetsLoading: false,
isFacetsSuccess: false,
} as UpdateFileManifestPayload;

const UPDATE_FILE_MANIFEST_PAYLOAD_LOADING = {
isFacetsLoading: true,
isFacetsSuccess: false,
} as UpdateFileManifestPayload;

const UPDATE_FILE_MANIFEST_PAYLOAD_SUCCESS = {
isFacetsLoading: false,
isFacetsSuccess: true,
} as UpdateFileManifestPayload;

describe("updateFilesFacetsStatus", () => {
test("files facets NOT_STARTED, request is IDLE", () => {
expect(
updateFilesFacetsStatus(
FILE_MANIFEST_STATE_NOT_STARTED,
UPDATE_FILE_MANIFEST_PAYLOAD_IDLE
)
).toBe(FILES_FACETS_STATUS.NOT_STARTED);
});

test("files facets NOT_STARTED, request is LOADING", () => {
expect(
updateFilesFacetsStatus(
FILE_MANIFEST_STATE_NOT_STARTED,
UPDATE_FILE_MANIFEST_PAYLOAD_LOADING
)
).toBe(FILES_FACETS_STATUS.IN_PROGRESS);
});

test("files facets IN_PROGRESS, request is LOADING", () => {
expect(
updateFilesFacetsStatus(
FILE_MANIFEST_STATE_IN_PROGRESS,
UPDATE_FILE_MANIFEST_PAYLOAD_LOADING
)
).toBe(FILES_FACETS_STATUS.IN_PROGRESS);
});

test("files facets IN_PROGRESS, request is SUCCESS", () => {
expect(
updateFilesFacetsStatus(
FILE_MANIFEST_STATE_IN_PROGRESS,
UPDATE_FILE_MANIFEST_PAYLOAD_SUCCESS
)
).toBe(FILES_FACETS_STATUS.COMPLETED);
});

test("files facets COMPLETED, request is SUCCESS", () => {
expect(
updateFilesFacetsStatus(
FILE_MANIFEST_STATE_COMPLETED,
UPDATE_FILE_MANIFEST_PAYLOAD_SUCCESS
)
).toBe(FILES_FACETS_STATUS.COMPLETED);
});
});

0 comments on commit 13c2a48

Please sign in to comment.