-
Notifications
You must be signed in to change notification settings - Fork 108
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
41 changed files
with
504 additions
and
529 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
55 changes: 55 additions & 0 deletions
55
static/js/publisher/pages/SigningKeys/__tests__/CreateSigningKeyForm.test.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
import { BrowserRouter } from "react-router-dom"; | ||
import { RecoilRoot } from "recoil"; | ||
import { QueryClient, QueryClientProvider } from "react-query"; | ||
import { render, screen } from "@testing-library/react"; | ||
import userEvent from "@testing-library/user-event"; | ||
|
||
import "@testing-library/jest-dom"; | ||
|
||
import CreateSigningKeyForm from "../CreateSigningKeyForm"; | ||
|
||
const queryClient = new QueryClient({ | ||
defaultOptions: { | ||
queries: { | ||
refetchOnWindowFocus: false, | ||
refetchOnReconnect: false, | ||
}, | ||
}, | ||
}); | ||
|
||
const renderComponent = () => { | ||
return render( | ||
<RecoilRoot> | ||
<BrowserRouter> | ||
<QueryClientProvider client={queryClient}> | ||
<CreateSigningKeyForm | ||
setShowNotification={jest.fn()} | ||
setErrorMessage={jest.fn()} | ||
refetch={jest.fn()} | ||
/> | ||
</QueryClientProvider> | ||
</BrowserRouter> | ||
</RecoilRoot>, | ||
); | ||
}; | ||
|
||
describe("CreateSigningKeyForm", () => { | ||
it("disables 'Add signing key' button if no new signing key name", async () => { | ||
renderComponent(); | ||
expect( | ||
screen.getByRole("button", { name: "Add signing key" }), | ||
).toHaveAttribute("aria-disabled", "true"); | ||
}); | ||
|
||
it("enables 'Add signing key' button if there is a new signing key name", async () => { | ||
const user = userEvent.setup(); | ||
renderComponent(); | ||
await user.type( | ||
screen.getByRole("textbox", { name: "Signing key name" }), | ||
"test-signing key-name", | ||
); | ||
expect( | ||
screen.getByRole("button", { name: "Add signing key" }), | ||
).not.toBeDisabled(); | ||
}); | ||
}); |
49 changes: 49 additions & 0 deletions
49
static/js/publisher/pages/SigningKeys/__tests__/DeactivateSigningKeyModal.test.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import { BrowserRouter } from "react-router-dom"; | ||
import { RecoilRoot } from "recoil"; | ||
import { QueryClient, QueryClientProvider } from "react-query"; | ||
import { render, screen } from "@testing-library/react"; | ||
|
||
import "@testing-library/jest-dom"; | ||
|
||
import DeactivateSigningKeyModal from "../DeactivateSigningKeyModal"; | ||
|
||
const queryClient = new QueryClient({ | ||
defaultOptions: { | ||
queries: { | ||
refetchOnWindowFocus: false, | ||
refetchOnReconnect: false, | ||
}, | ||
}, | ||
}); | ||
|
||
const renderComponent = () => { | ||
return render( | ||
<RecoilRoot> | ||
<BrowserRouter> | ||
<QueryClientProvider client={queryClient}> | ||
<DeactivateSigningKeyModal | ||
setModalOpen={jest.fn()} | ||
handleDisable={jest.fn()} | ||
isDeleting={false} | ||
signingKey={{ | ||
name: "test-signing-key", | ||
"created-at": "2025-01-30", | ||
"modified-at": null, | ||
}} | ||
/> | ||
</QueryClientProvider> | ||
</BrowserRouter> | ||
</RecoilRoot>, | ||
); | ||
}; | ||
|
||
describe("DeactivateSigningKeyModal", () => { | ||
it("Displays correct key in confirmation message", async () => { | ||
renderComponent(); | ||
expect( | ||
screen.getByText( | ||
/This will permanently disable the signing key test-signing-key/, | ||
), | ||
).toBeInTheDocument(); | ||
}); | ||
}); |
72 changes: 72 additions & 0 deletions
72
static/js/publisher/pages/SigningKeys/__tests__/SigningKeys.test.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
import { BrowserRouter } from "react-router-dom"; | ||
import { RecoilRoot } from "recoil"; | ||
import { QueryClient, QueryClientProvider } from "react-query"; | ||
import { render, screen } from "@testing-library/react"; | ||
import userEvent from "@testing-library/user-event"; | ||
|
||
import "@testing-library/jest-dom"; | ||
|
||
import SigningKeys from "../SigningKeys"; | ||
|
||
const mockFilterQuery = "signing key-1"; | ||
|
||
jest.mock("react-router-dom", () => { | ||
return { | ||
...jest.requireActual("react-router-dom"), | ||
useSearchParams: () => [new URLSearchParams({ filter: mockFilterQuery })], | ||
}; | ||
}); | ||
|
||
const queryClient = new QueryClient({ | ||
defaultOptions: { | ||
queries: { | ||
refetchOnWindowFocus: false, | ||
refetchOnReconnect: false, | ||
}, | ||
}, | ||
}); | ||
|
||
function renderComponent() { | ||
return render( | ||
<RecoilRoot> | ||
<BrowserRouter> | ||
<QueryClientProvider client={queryClient}> | ||
<SigningKeys /> | ||
</QueryClientProvider> | ||
</BrowserRouter> | ||
</RecoilRoot>, | ||
); | ||
} | ||
|
||
describe("SigningKeys", () => { | ||
it("displays a link to create a new signing key", () => { | ||
renderComponent(); | ||
expect( | ||
screen.getByRole("link", { name: "Create new signing key" }), | ||
).toBeInTheDocument(); | ||
}); | ||
|
||
it("shows a create signing key form when 'Create new signing key' button clicked", async () => { | ||
const user = userEvent.setup(); | ||
renderComponent(); | ||
await user.click( | ||
screen.getByRole("link", { name: "Create new signing key" }), | ||
); | ||
expect( | ||
screen.getByRole("textbox", { name: "Signing key name" }), | ||
).toBeInTheDocument(); | ||
expect( | ||
screen.getByRole("button", { name: "Add signing key" }), | ||
).toBeInTheDocument(); | ||
}); | ||
|
||
it("displays a filter input", () => { | ||
renderComponent(); | ||
expect(screen.getByLabelText("Signing keys")).toBeInTheDocument(); | ||
}); | ||
|
||
it("populates filter with the filter query parameter", () => { | ||
renderComponent(); | ||
expect(screen.getByLabelText("Signing keys")).toHaveValue(mockFilterQuery); | ||
}); | ||
}); |
109 changes: 109 additions & 0 deletions
109
static/js/publisher/pages/SigningKeys/__tests__/SigningKeysTable.test.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
import { BrowserRouter } from "react-router-dom"; | ||
import { RecoilRoot } from "recoil"; | ||
import { render, screen } from "@testing-library/react"; | ||
import userEvent from "@testing-library/user-event"; | ||
import "@testing-library/jest-dom"; | ||
|
||
import SigningKeysTable from "../SigningKeysTable"; | ||
|
||
const renderComponent = () => { | ||
return render( | ||
<RecoilRoot> | ||
<BrowserRouter> | ||
<SigningKeysTable | ||
setShowDisableSuccessNotification={jest.fn()} | ||
enableTableActions={false} | ||
/> | ||
</BrowserRouter> | ||
</RecoilRoot>, | ||
); | ||
}; | ||
|
||
describe("SigningKeysTable", () => { | ||
it("renders", () => { | ||
renderComponent(); | ||
expect(screen.getByTestId("signing-keys-table")).toBeInTheDocument(); | ||
}); | ||
|
||
it("renders the correct columns", () => { | ||
renderComponent(); | ||
|
||
expect( | ||
screen.getByRole("columnheader", { name: /Name/ }), | ||
).toBeInTheDocument(); | ||
|
||
expect( | ||
screen.getByRole("columnheader", { name: "Policies" }), | ||
).toBeInTheDocument(); | ||
|
||
expect( | ||
screen.getByRole("columnheader", { name: "Models" }), | ||
).toBeInTheDocument(); | ||
|
||
expect( | ||
screen.getByRole("columnheader", { name: "Created date" }), | ||
).toBeInTheDocument(); | ||
|
||
expect( | ||
screen.getByRole("columnheader", { name: "fingerprint" }), | ||
).toBeInTheDocument(); | ||
}); | ||
|
||
it("sorts the 'Name' column when clicking the column header", async () => { | ||
renderComponent(); | ||
|
||
const user = userEvent.setup(); | ||
const columnHeader = screen.getByRole("columnheader", { name: /Name/ }); | ||
|
||
expect(columnHeader.getAttribute("aria-sort")).toBe("none"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("ascending"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("descending"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("none"); | ||
}); | ||
|
||
it("sorts the 'Created date' column when clicking the column header", async () => { | ||
renderComponent(); | ||
|
||
const user = userEvent.setup(); | ||
const columnHeader = screen.getByRole("columnheader", { | ||
name: "Created date", | ||
}); | ||
|
||
expect(columnHeader.getAttribute("aria-sort")).toBe("none"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("ascending"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("descending"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("none"); | ||
}); | ||
|
||
it("sorts the 'Created date' column when clicking the column header", async () => { | ||
renderComponent(); | ||
|
||
const user = userEvent.setup(); | ||
const columnHeader = screen.getByRole("columnheader", { | ||
name: "Created date", | ||
}); | ||
|
||
expect(columnHeader.getAttribute("aria-sort")).toBe("none"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("ascending"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("descending"); | ||
|
||
await user.click(columnHeader); | ||
expect(columnHeader.getAttribute("aria-sort")).toBe("none"); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.