sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #06711
Re: [Merge] ~jonesogolo/maas-site-manager:1526-add-empty-states-to-regions-table into maas-site-manager:main
Looks good, just a few comments below that would be good to address.
Diff comments:
> diff --git a/frontend/src/components/NoRegions/NoRegions.test.tsx b/frontend/src/components/NoRegions/NoRegions.test.tsx
> new file mode 100644
> index 0000000..2824a99
> --- /dev/null
> +++ b/frontend/src/components/NoRegions/NoRegions.test.tsx
> @@ -0,0 +1,90 @@
> +import NoRegions from "./NoRegions";
> +
> +import urls from "@/api/urls";
> +import { enrollmentRequestFactory } from "@/mocks/factories";
> +import { createMockGetEnrollmentRequestsResolver } from "@/mocks/resolvers";
> +import { createMockGetServer } from "@/mocks/server";
> +import { renderWithMemoryRouter, screen, waitFor } from "@/test-utils";
> +
> +describe("open enrollment requests available", () => {
This is missing a test that the correct number of enrollment requests is displayed.
> + const enrollmentRequests = enrollmentRequestFactory.buildList(2);
> + const mockServer = createMockGetServer(
> + urls.enrollmentRequests,
> + createMockGetEnrollmentRequestsResolver(enrollmentRequests),
> + );
> +
> + beforeAll(() => {
> + mockServer.listen();
> + });
> + afterEach(() => {
> + mockServer.resetHandlers();
> + });
> + afterAll(() => {
> + mockServer.close();
> + });
> +
> + it("should display 'no enrolled regions' text", () => {
> + renderWithMemoryRouter(<NoRegions />);
> +
> + expect(screen.getByText(/no enroled maas regions/i)).toBeInTheDocument();
> + });
> + it("should display link to enrollment docs", () => {
> + renderWithMemoryRouter(<NoRegions />);
> +
> + expect(
> + screen.getByRole("link", { name: /learn more about the enrolment process in the documentation\./i }),
> + ).toBeInTheDocument();
> + });
> +
> + it("should display a link to the request page if there are open requests", async () => {
> + renderWithMemoryRouter(<NoRegions />);
> +
> + await waitFor(() =>
> + expect(
> + screen.getByRole("link", {
> + name: /go to requests page/i,
> + }),
> + ).toBeInTheDocument(),
> + );
> + });
> +});
> +
> +describe("no open enrollment requests available", () => {
> + const enrollmentRequests = enrollmentRequestFactory.buildList(0);
> + const mockServer = createMockGetServer(
> + urls.enrollmentRequests,
> + createMockGetEnrollmentRequestsResolver(enrollmentRequests),
> + );
> +
> + beforeAll(() => {
> + mockServer.listen();
> + });
> + afterEach(() => {
> + mockServer.resetHandlers();
> + });
> + afterAll(() => {
> + mockServer.close();
> + });
> +
> + it("should display a link to the tokens page", async () => {
> + renderWithMemoryRouter(<NoRegions />);
> +
> + await waitFor(() =>
> + expect(
> + screen.getByRole("link", {
> + name: /go to tokens page/i,
> + }),
> + ).toBeInTheDocument(),
> + );
> + });
> +
> + it("should display a link to enrollment process docs", () => {
> + renderWithMemoryRouter(<NoRegions />);
> +
> + expect(
> + screen.getByRole("link", {
> + name: new RegExp("Learn more about the enrolment process in the documentation.", "i"),
> + }),
> + ).toBeInTheDocument();
> + });
> +});
> diff --git a/frontend/src/components/NoRegions/NoRegions.tsx b/frontend/src/components/NoRegions/NoRegions.tsx
> new file mode 100644
> index 0000000..40e4741
> --- /dev/null
> +++ b/frontend/src/components/NoRegions/NoRegions.tsx
> @@ -0,0 +1,54 @@
> +import { useState } from "react";
> +
> +import { Link } from "react-router-dom";
> +
> +import ExternalLink from "../ExternalLink";
> +import TableCaption from "../TableCaption";
> +
> +import docsUrls from "@/base/docsUrls";
> +import { useRequestsQuery } from "@/hooks/api";
> +
> +const NoRegions = () => {
> + const [size] = useState(50);
> + const [page] = useState(0);
There's no need to use state here, these values will never change. Could you please inline values in useRequestsQuery instead.
You could also create a new hook named useRequestsCountQuery to abstract this away, it can be slightly unclear otherwise (optional).
> + const { data, isLoading } = useRequestsQuery({ page: `${page}`, size: `${size}` });
> +
> + return (
> + <TableCaption>
> + <TableCaption.Title>No enroled MAAS regions</TableCaption.Title>
> + {!isLoading && data!.total > 0 ? (
> + <>
> + <TableCaption.Description>
> + You have <strong>{data?.total} open enrolment requests, </strong>inspect them in the Requests page.
> + <br />
> + <ExternalLink to={docsUrls.enrollmentRequest}>
> + Learn more about the enrolment process in the documentation.
> + </ExternalLink>
> + </TableCaption.Description>
> + <TableCaption.Description>
> + <Link className="p-button--positive" to="/requests">
> + Go to Requests Page
> + </Link>
> + </TableCaption.Description>
> + </>
> + ) : (
> + <>
> + <TableCaption.Description>
> + To enrol follow the steps in the Tokens page.
> + <br />
> + <ExternalLink to={docsUrls.enrollmentRequest}>
> + Learn more about the enrolment process in the documentation.
> + </ExternalLink>
> + </TableCaption.Description>
> + <TableCaption.Description>
> + <Link className="p-button--positive" to="/tokens">
> + Go to Tokens page
> + </Link>
> + </TableCaption.Description>
> + </>
> + )}
> + </TableCaption>
> + );
> +};
> +
> +export default NoRegions;
--
https://code.launchpad.net/~jonesogolo/maas-site-manager/+git/maas-site-manager/+merge/440258
Your team MAAS Committers is requested to review the proposed merge of ~jonesogolo/maas-site-manager:1526-add-empty-states-to-regions-table into maas-site-manager:main.