Refactor DashboardFilterBar to use props exclusively, eliminate dual state source
- DashboardFilterBar now requires all filter props (timeRange, onTimeRangeChange, originFilter, onOriginFilterChange) instead of falling back to context - Removed useDashboardFilters() hook dependency from DashboardFilterBar, BanTrendChart, and JailDistributionChart - Updated DashboardPage to explicitly pass all filter values and callbacks from context to components - Made props required on BanTrendChart and JailDistributionChart - Updated all tests to reflect new prop requirements - This eliminates the silent dual-source behavior that could lead to subtle bugs when components are used with different data sources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -4,9 +4,19 @@ import userEvent from "@testing-library/user-event";
|
||||
import { DashboardFilterBar } from "../../components/DashboardFilterBar";
|
||||
import { DashboardFilterProvider, useDashboardFilters } from "../DashboardFilterProvider";
|
||||
|
||||
function DashboardFilterSummary(): React.JSX.Element {
|
||||
const { timeRange, originFilter } = useDashboardFilters();
|
||||
return <div data-testid="dashboard-filters">{`${timeRange}-${originFilter}`}</div>;
|
||||
function DashboardFilterContent(): React.JSX.Element {
|
||||
const { timeRange, originFilter, setTimeRange, setOriginFilter } = useDashboardFilters();
|
||||
return (
|
||||
<>
|
||||
<DashboardFilterBar
|
||||
timeRange={timeRange}
|
||||
onTimeRangeChange={setTimeRange}
|
||||
originFilter={originFilter}
|
||||
onOriginFilterChange={setOriginFilter}
|
||||
/>
|
||||
<div data-testid="dashboard-filters">{`${timeRange}-${originFilter}`}</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
describe("DashboardFilterProvider", () => {
|
||||
@@ -15,8 +25,7 @@ describe("DashboardFilterProvider", () => {
|
||||
|
||||
render(
|
||||
<DashboardFilterProvider>
|
||||
<DashboardFilterBar />
|
||||
<DashboardFilterSummary />
|
||||
<DashboardFilterContent />
|
||||
</DashboardFilterProvider>,
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user