/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
import React from "react";
import { render, act, screen } from "@testing-library/react";
import { useSettings, usePublicSettings } from "../settings-hooks";
import SettingsProvider from "../../context/SettingsProvider";
describe("useSettings", () => {
interface Props {
refetch?: boolean;
}
const FooComponent = (props: Props) => {
const { settings } = useSettings(props.refetch);
return (
{settings?.contactUsContent}
);
};
test("should reload the settings", async () => {
const modifiedSettings: any = { contactUsContent: "contact us" };
const mockReloadSettings = jest.fn();
const mockUseContext = jest.fn().mockImplementation(() => ({
reloadSettings: mockReloadSettings,
settings: modifiedSettings,
}));
React.useContext = mockUseContext;
await act(async () => {
render();
});
expect(mockReloadSettings).toHaveBeenCalled();
expect(screen.getByText(modifiedSettings.contactUsContent)).toBeInTheDocument();
});
});
describe("usePublicSettings", () => {
interface Props {
refetch?: boolean;
}
const FooComponent = (props: Props) => {
const { settings } = usePublicSettings(props.refetch);
return (
{settings?.contactUsContent}
);
};
test("should reload the settings", async () => {
const modifiedSettings: any = { contactUsContent: "contact us" };
const mockReloadSettings = jest.fn();
const mockUseContext = jest.fn().mockImplementation(() => ({
reloadSettings: mockReloadSettings,
settings: modifiedSettings,
}));
React.useContext = mockUseContext;
await act(async () => {
render();
});
expect(mockReloadSettings).toHaveBeenCalled();
expect(screen.getByText(modifiedSettings.contactUsContent)).toBeInTheDocument();
});
});