// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import { fireEvent } from "@testing-library/react";
import { Auth } from "aws-amplify";
import React from "react";
import DashboardHeader from "../../../src/components/dashboardHeader";
import "@testing-library/jest-dom";
import { renderWithProviders } from "../../utils/test-utils";
import { setPath } from "../../../src/app/reducers/routeSlice";
import { setupStore } from "../../../src/app/store";
import { describe, jest, expect, afterEach, it } from "@jest/globals";
describe("NavBar component", () => {
const mockedSignOut = jest.spyOn(Auth, "signOut").mockImplementation(() => Promise.resolve());
afterEach(() => {
jest.clearAllMocks();
});
it("NavBar | success| renders", () => {
const { getByText } = renderWithProviders();
expect(getByText("Dashboard")).toBeDefined();
expect(getByText("Sign out")).toBeDefined();
});
it(" NavBar | success | sign out", async () => {
const { getByText } = renderWithProviders();
fireEvent.click(getByText("Sign out"));
expect(mockedSignOut).toHaveBeenCalled();
});
it("NavBar | failure | ", async () => {
jest.spyOn(global.console, "log").mockImplementation(() => {});
mockedSignOut.mockImplementation(() => Promise.reject("error"));
const store = setupStore();
store.dispatch(setPath("/test"));
const { getByText } = renderWithProviders(, { store });
expect(getByText("Test")).toBeDefined();
});
});