fix: include shareMedicationOverview in unsaved settings detection (#433)
Add shareMedicationOverview to the settingsChanged memo in AppContext so toggling the shared medication overview setting correctly triggers the unsaved-changes indicator. Includes regression test for the fix.
This commit is contained in:
@@ -793,6 +793,7 @@ export function AppProvider({ children }: { children: React.ReactNode }) {
|
|||||||
settings.maxNaggingReminders !== savedSettings.maxNaggingReminders ||
|
settings.maxNaggingReminders !== savedSettings.maxNaggingReminders ||
|
||||||
settings.stockCalculationMode !== savedSettings.stockCalculationMode ||
|
settings.stockCalculationMode !== savedSettings.stockCalculationMode ||
|
||||||
settings.shareStockStatus !== savedSettings.shareStockStatus ||
|
settings.shareStockStatus !== savedSettings.shareStockStatus ||
|
||||||
|
settings.shareMedicationOverview !== savedSettings.shareMedicationOverview ||
|
||||||
settings.upcomingTodayOnly !== savedSettings.upcomingTodayOnly ||
|
settings.upcomingTodayOnly !== savedSettings.upcomingTodayOnly ||
|
||||||
settings.shareScheduleTodayOnly !== savedSettings.shareScheduleTodayOnly ||
|
settings.shareScheduleTodayOnly !== savedSettings.shareScheduleTodayOnly ||
|
||||||
settings.expiryWarningDays !== savedSettings.expiryWarningDays
|
settings.expiryWarningDays !== savedSettings.expiryWarningDays
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ describe("useAppContext", () => {
|
|||||||
shoutrrrIntakeReminders: true,
|
shoutrrrIntakeReminders: true,
|
||||||
stockCalculationMode: "automatic",
|
stockCalculationMode: "automatic",
|
||||||
shareStockStatus: true,
|
shareStockStatus: true,
|
||||||
|
shareMedicationOverview: false,
|
||||||
expiryWarningDays: 30,
|
expiryWarningDays: 30,
|
||||||
},
|
},
|
||||||
setSettings: vi.fn(),
|
setSettings: vi.fn(),
|
||||||
@@ -171,6 +172,7 @@ describe("useAppContext", () => {
|
|||||||
shoutrrrIntakeReminders: true,
|
shoutrrrIntakeReminders: true,
|
||||||
stockCalculationMode: "automatic",
|
stockCalculationMode: "automatic",
|
||||||
shareStockStatus: true,
|
shareStockStatus: true,
|
||||||
|
shareMedicationOverview: false,
|
||||||
expiryWarningDays: 30,
|
expiryWarningDays: 30,
|
||||||
},
|
},
|
||||||
settingsLoading: false,
|
settingsLoading: false,
|
||||||
@@ -292,6 +294,27 @@ describe("useAppContext", () => {
|
|||||||
expect(result.current.settingsChanged).toBe(false);
|
expect(result.current.settingsChanged).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("marks settings as changed when shareMedicationOverview differs", async () => {
|
||||||
|
const settingsValue = mockUseSettings();
|
||||||
|
mockUseSettings.mockReturnValue({
|
||||||
|
...settingsValue,
|
||||||
|
settings: {
|
||||||
|
...settingsValue.settings,
|
||||||
|
shareMedicationOverview: true,
|
||||||
|
},
|
||||||
|
savedSettings: {
|
||||||
|
...settingsValue.savedSettings,
|
||||||
|
shareMedicationOverview: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const { result } = renderHook(() => useAppContext(), { wrapper });
|
||||||
|
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(result.current.settingsChanged).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it("exposes the settings load error from useSettings", async () => {
|
it("exposes the settings load error from useSettings", async () => {
|
||||||
const settingsValue = mockUseSettings();
|
const settingsValue = mockUseSettings();
|
||||||
mockUseSettings.mockReturnValue({
|
mockUseSettings.mockReturnValue({
|
||||||
|
|||||||
Reference in New Issue
Block a user