All files / pages AdminCoursesCreatePage.jsx

100% Statements 29/29
100% Branches 6/6
100% Functions 4/4
100% Lines 29/29

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 391x 1x 1x 1x 1x   1x 5x 2x 2x 2x 2x   5x 1x 1x   5x 5x 5x   5x 1x 1x   5x 1x 1x   4x 4x 4x 4x 4x       4x  
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import CourseForm from "main/components/Courses/CourseForm";
import { useBackendMutation } from "main/utils/useBackend";
import { Navigate } from "react-router";
import { toast } from "react-toastify";
 
export default function AdminCoursesCreatePage() {
  const objectToAxiosParams = (newCourse) => ({
    url: "/api/course",
    method: "POST",
    data: newCourse,
  });
 
  const onSuccess = (course) => {
    toast(`Course created - id: ${course.id} code: ${course.code}`);
  };
 
  const mutation = useBackendMutation(objectToAxiosParams, { onSuccess }, [
    "/api/course/all",
  ]);
 
  const submitAction = async (data) => {
    mutation.mutate(data);
  };
 
  if (mutation.isSuccess) {
    return <Navigate to="/admin/listcourses" />;
  }
 
  return (
    <BasicLayout>
      <div className="pt-2">
        <h1>Create Course</h1>
        <CourseForm submitAction={submitAction} />
      </div>
    </BasicLayout>
  );
}