All files / pages/Courses PSCourseCreatePage.js

100% Statements 19/19
100% Branches 8/8
100% Functions 5/5
100% Lines 18/18

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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113              14x                 14x 1x         14x             14x   14x 4x     4x 4x     14x 1x   13x   3x   3x 1x                                         1x                 2x                                                 10x                    
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import CourseForm from "main/components/Courses/CourseForm";
import { Navigate } from "react-router-dom";
import { useBackendMutation } from "main/utils/useBackend";
import { toast } from "react-toastify";
 
export default function CoursesCreatePage() {
  const objectToAxiosParams = (course) => ({
    url: "/api/courses/post",
    method: "POST",
    params: {
      enrollCd: course.enrollCd,
      psId: course.psId,
    },
  });
 
  const onSuccess = (course) => {
    toast(
      `New course Created - id: ${course[0].id} enrollCd: ${course[0].enrollCd}`,
    );
  };
 
  const mutation = useBackendMutation(
    objectToAxiosParams,
    { onSuccess },
    // Stryker disable next-line all : hard to set up test for caching
    ["/api/courses/user/all"],
  );
 
  const { isSuccess } = mutation;
 
  const onSubmit = async (data) => {
    const psId = {
      psId: localStorage["CourseForm-psId"],
    };
    const dataFinal = Object.assign(data, psId);
    mutation.mutate(dataFinal);
  };
 
  if (isSuccess) {
    return <Navigate to="/courses/list" />;
  }
  if (mutation.isError) {
    const errorMessage =
      mutation.error.response.data?.message || "Unknown error";
 
    if (errorMessage.includes("psId")) {
      return (
        <BasicLayout>
          <div className="pt-2">
            <h1>Create New Course</h1>
 
            <CourseForm submitAction={onSubmit} />
            <br />
            <p data-testid="PSCourseCreate-Error">
              Error: Schedule! Where is it?
            </p>
 
            <button
              style={{
                backgroundColor: "#34859b",
                color: "white",
                padding: "10px 20px",
                borderRadius: "5px",
                outline: "none",
                fontSize: "16px",
              }}
              onClick={() =>
                (window.location.href = "/personalschedules/create")
              }
            >
              Create Schedule
            </button>
          </div>
        </BasicLayout>
      );
    } else {
      return (
        <BasicLayout>
          <div className="pt-2">
            <h1>Create New Course</h1>
 
            <CourseForm submitAction={onSubmit} />
            <p data-testid="PSCourseCreate-Error">Error: {errorMessage}</p>
          </div>
        </BasicLayout>
      );
    }
 
    /* // return (
    //   <BasicLayout>
    //     <div className="pt-2">
    //       <h1>Create New Course</h1> */
 
    /* <CourseForm submitAction={onSubmit} />
          <p data-testid="PSCourseCreate-Error">
            Error: {mutation.error.response.data?.message}
          </p>
        </div>
      </BasicLayout>
    ); */
  }
  return (
    <BasicLayout>
      <div className="pt-2">
        <h1>Create New Course</h1>
 
        <CourseForm submitAction={onSubmit} />
      </div>
    </BasicLayout>
  );
}