def test_middleware_given_incomplete_state_emits_set_colorbar(): store = redux.Store( colors.reducer, initial_state={"colorbar": {"low": -1}} ) action = {"kind": "ANY"} result = list(colors.palettes(store, action)) settings = {**colors.defaults(), **{"low": -1}} expect = [action, colors.set_colorbar(settings)] assert expect == result
def test_storage_middleware_on_load(store): label = "label" settings = {"key": "value"} storage = presets.Storage() storage.save(label, settings) middleware = presets.Middleware(storage) action = presets.on_load(label) result = list(middleware(store, action)) expect = [colors.set_colorbar(settings), action] assert expect == result
def __call__(self, store, action): kind = action["kind"] if kind == PRESET_ON_SAVE: label = action["payload"] settings = store.state.get("colorbar", {}) self.storage.save(label, settings) elif kind == PRESET_ON_LOAD: label = action["payload"] yield colors.set_colorbar(self.storage.load(label)) else: # Maintain label consistency between storage and state state_labels = Query(store.state).labels storage_labels = self.storage.labels() if len(set(state_labels) ^ set(storage_labels)) > 0: labels = list(set(state_labels) | set(storage_labels)) yield set_labels(labels) yield action
def test_middleware_given_empty_state_emits_set_colorbar(): store = redux.Store(colors.reducer) action = {"kind": "ANY"} result = list(colors.palettes(store, action)) expect = [action, colors.set_colorbar(colors.defaults())] assert expect == result
{}, colors.set_palette_name("Accent"), {"colorbar": {"name": "Accent"}}, ), ({}, colors.set_palette_number(3), {"colorbar": {"number": 3}}), ( {}, colors.set_palette_numbers([1, 2, 3]), {"colorbar": {"numbers": [1, 2, 3]}}, ), ({}, colors.set_user_high(100), {}), ({}, colors.set_user_low(0), {}), ({}, colors.set_source_limits(0, 100), {}), ( {}, colors.set_colorbar({"key": "value"}), {"colorbar": {"key": "value"}}, ), ( {}, colors.set_palette_names(["example"]), {"colorbar": {"names": ["example"]}}, ), ], ) def test_reducer(state, action, expect): result = colors.reducer(state, action) assert expect == result def test_limits_reducer_origin():