All files / pages/RequestType RequestTypeEditPage.jsx

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

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 70 71 72 73 74 75 76 771x 1x 1x 1x 1x 1x   1x 12x   12x 12x 12x 12x 12x 12x 12x 12x 12x 12x 12x 12x 12x 12x 12x     12x 1x 1x 1x 1x 1x 1x 1x 1x 1x   12x 1x 1x   1x   12x 12x 12x 12x 12x     12x   12x 1x 1x   12x 3x 3x   9x 9x 9x 9x 9x 12x 12x 12x 12x           12x  
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import { useParams } from "react-router";
import RequestTypeForm from "main/components/RequestType/RequestTypeForm";
import { Navigate } from "react-router";
import { useBackend, useBackendMutation } from "main/utils/useBackend";
import { toast } from "react-toastify";
 
export default function RequestTypeEditPage({ storybook = false }) {
  let { id } = useParams();
 
  const {
    data: requestTypes,
    _error,
    _status,
  } = useBackend(
    // Stryker disable next-line all : don't test internal caching of React Query
    [`/api/requesttypes?id=${id}`],
    {
      // Stryker disable next-line all : GET is the default, so changing this to "" doesn't introduce a bug
      method: "GET",
      url: `/api/requesttypes`,
      params: {
        id,
      },
    },
  );
 
  const objectToAxiosPutParams = (requestTypes) => ({
    url: "/api/requesttypes",
    method: "PUT",
    params: {
      id: requestTypes.id,
    },
    data: {
      requestType: requestTypes.requestType,
    },
  });
 
  const onSuccess = (requestTypes) => {
    toast(
      `RequestType Updated - id: ${requestTypes.id} request type: ${requestTypes.requestType}`,
    );
  };
 
  const mutation = useBackendMutation(
    objectToAxiosPutParams,
    { onSuccess },
    // Stryker disable next-line all : hard to set up test for caching
    [`/api/requesttypes?id=${id}`],
  );
 
  const { isSuccess } = mutation;
 
  const onSubmit = async (data) => {
    mutation.mutate(data);
  };
 
  if (isSuccess && !storybook) {
    return <Navigate to="/requesttypes/all" />;
  }
 
  return (
    <BasicLayout>
      <div className="pt-2">
        <h1>Edit RequestType</h1>
        {requestTypes && (
          <RequestTypeForm
            initialContents={requestTypes}
            submitAction={onSubmit}
            buttonLabel="Update"
          />
        )}
      </div>
    </BasicLayout>
  );
}