All files / pages/UCSBOrganization UCSBOrganizationEditPage.jsx

100% Statements 52/52
100% Branches 7/7
100% Functions 4/4
100% Lines 52/52

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 701x 1x 1x 1x 1x   1x 7x   7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x     7x 2x 2x 2x 2x 2x 2x 2x 2x 2x   7x 2x 2x   2x   7x 7x 7x     7x   7x 2x 2x   7x 2x 2x   5x 5x 5x 5x 5x 7x 7x 7x 7x           7x  
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import { useParams, Navigate } from "react-router";
import UCSBOrganizationForm from "main/components/UCSBOrganization/UCSBOrganizationForm";
import { useBackend, useBackendMutation } from "main/utils/useBackend";
import { toast } from "react-toastify";
 
export default function UCSBOrganizationEditPage({ storybook = false }) {
  const { orgCode } = useParams();
 
  const {
    data: organization,
  } = useBackend(
    // Stryker disable next-line all : don't test internal caching of React Query
    [`/api/ucsborganization?orgCode=${orgCode}`],
    {
      // Stryker disable next-line all : GET is the default, so mutating this to "" doesn't introduce a bug
      method: "GET",
      url: `/api/ucsborganization`,
      params: { orgCode },
    }
  );
 
  const objectToAxiosPutParams = (organization) => ({
    url: "/api/ucsborganization",
    method: "PUT",
    params: { orgCode: organization.orgCode },
    data: {
      orgTranslationShort: organization.orgTranslationShort,
      orgTranslation: organization.orgTranslation,
      inactive: organization.inactive,
    },
  });
 
  const onSuccess = (organization) => {
    toast(
      `UCSB Organization Updated - orgCode: ${organization.orgCode} orgTranslationShort: ${organization.orgTranslationShort}`
    );
  };
 
  const mutation = useBackendMutation(objectToAxiosPutParams, { onSuccess },
    // Stryker disable next-line all : hard to set up test for caching
    [`/api/ucsborganization?orgCode=${orgCode}`]
  );
 
  const { isSuccess } = mutation;
 
  const onSubmit = async (data) => {
    mutation.mutate(data);
  };
 
  if (isSuccess && !storybook) {
    return <Navigate to="/ucsborganization" />;
  }
 
  return (
    <BasicLayout>
      <div className="pt-2">
        <h1>Edit UCSB Organization</h1>
        {organization && (
          <UCSBOrganizationForm
            submitAction={onSubmit}
            buttonLabel="Update"
            initialContents={organization}
          />
        )}
      </div>
    </BasicLayout>
  );
}