Skip to content

Commit 2a23519

Browse files
committed
refactor: Fixed unit tests, removed dependence on BackdropSlice from DatasetSlice
1 parent 243c6f0 commit 2a23519

File tree

5 files changed

+11
-14
lines changed

5 files changed

+11
-14
lines changed

src/components/Tabs/SettingsTab.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export default function SettingsTab(): ReactElement {
8383
<SelectionDropdown
8484
selected={selectedBackdropKey}
8585
items={backdropOptions}
86-
onChange={(key) => dataset && setBackdropKey(dataset, key)}
86+
onChange={(key) => dataset && setBackdropKey(key)}
8787
disabled={isBackdropOptionsDisabled}
8888
/>
8989
</SettingsItem>

src/state/ViewerState.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { StateCreator } from "zustand";
33
import { subscribeWithSelector } from "zustand/middleware";
44

55
import { Spread } from "../colorizer/utils/type_utils";
6-
import { BackdropSlice, createBackdropSlice } from "./slices/backdrop_slice";
6+
import { addBackdropDerivedStateSubscribers, BackdropSlice, createBackdropSlice } from "./slices/backdrop_slice";
77
import { CollectionSlice, createCollectionSlice } from "./slices/collection_slice";
88
import { addColorRampDerivedStateSubscribers, ColorRampSlice, createColorRampSlice } from "./slices/color_ramp_slice";
99
import { ConfigSlice, createConfigSlice } from "./slices/config_slice";
@@ -91,6 +91,7 @@ export const useViewerStateStore: SubscribableStore<ViewerState> = create<Viewer
9191
subscribeWithSelector(viewerStateStoreCreator)
9292
);
9393

94+
addBackdropDerivedStateSubscribers(useViewerStateStore);
9495
addColorRampDerivedStateSubscribers(useViewerStateStore);
9596
addScatterPlotSliceDerivedStateSubscribers(useViewerStateStore);
9697
addThresholdDerivedStateSubscribers(useViewerStateStore);

src/state/slices/backdrop_slice.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,6 @@ export const addBackdropDerivedStateSubscribers = (store: SubscribableStore<Back
7575
// Hide backdrop when backdrop key is null
7676
store.subscribe(
7777
(state) => state.backdropKey,
78-
(backdropKey) => store.setState({ backdropVisible: backdropKey !== null })
78+
(backdropKey) => store.setState({ backdropVisible: store.getState().backdropVisible && backdropKey !== null })
7979
);
8080
};

src/state/slices/dataset_slice.ts

+3-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { StateCreator } from "zustand";
22

33
import { Track } from "../../colorizer";
4-
import { BackdropSlice } from "./backdrop_slice";
54
import { CollectionSlice } from "./collection_slice";
65

76
import Dataset from "../../colorizer/Dataset";
@@ -41,10 +40,7 @@ type DatasetSliceActions = {
4140

4241
export type DatasetSlice = DatasetSliceState & DatasetSliceActions;
4342

44-
export const createDatasetSlice: StateCreator<CollectionSlice & DatasetSlice & BackdropSlice, [], [], DatasetSlice> = (
45-
set,
46-
get
47-
) => ({
43+
export const createDatasetSlice: StateCreator<CollectionSlice & DatasetSlice, [], [], DatasetSlice> = (set, get) => ({
4844
datasetKey: null,
4945
dataset: null,
5046
featureKey: null,
@@ -104,12 +100,10 @@ export const createDatasetSlice: StateCreator<CollectionSlice & DatasetSlice & B
104100
if (backdropKey === null || !dataset.hasBackdrop(backdropKey)) {
105101
backdropKey = dataset.getDefaultBackdropKey();
106102
}
107-
const backdropVisible = get().backdropVisible && backdropKey !== null;
108103

109104
// TODO: Dispose of old dataset?
110-
set({ datasetKey: key, dataset, track: null, featureKey, backdropKey, backdropVisible });
105+
set({ datasetKey: key, dataset, track: null, featureKey, backdropKey });
111106
},
112107

113-
clearDataset: () =>
114-
set({ datasetKey: null, dataset: null, track: null, featureKey: null, backdropKey: null, backdropVisible: false }),
108+
clearDataset: () => set({ datasetKey: null, dataset: null, track: null, featureKey: null, backdropKey: null }),
115109
});

tests/state/ViewerState/backdrop_slice.test.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
BACKDROP_SATURATION_MIN,
1111
} from "../../../src/constants";
1212
import { ANY_ERROR } from "../../test_utils";
13-
import { MOCK_DATASET, MOCK_DATASET_WITHOUT_BACKDROP, MockBackdropKeys } from "./constants";
13+
import { MOCK_DATASET, MockBackdropKeys } from "./constants";
1414
import { setDatasetAsync } from "./utils";
1515

1616
import { useViewerStateStore } from "../../../src/state/ViewerState";
@@ -99,7 +99,9 @@ describe("useViewerStateStore: BackdropSlice", () => {
9999
});
100100
expect(result.current.backdropVisible).toBe(true);
101101

102-
await setDatasetAsync(result, MOCK_DATASET_WITHOUT_BACKDROP);
102+
act(() => {
103+
useViewerStateStore.setState({ backdropKey: null });
104+
});
103105
expect(result.current.backdropVisible).toBe(false);
104106
});
105107
});

0 commit comments

Comments
 (0)