82 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { describe, expect, it } from "vitest";
 | |
| import {
 | |
|     assignmentTitleRules,
 | |
|     classRules,
 | |
|     deadlineRules,
 | |
|     descriptionRules,
 | |
|     learningPathRules,
 | |
| } from "../../src/utils/assignment-rules";
 | |
| 
 | |
| describe("Validation Rules", () => {
 | |
|     describe("assignmentTitleRules", () => {
 | |
|         it("should return true for a valid title", () => {
 | |
|             const result = assignmentTitleRules[0]("Valid Title");
 | |
|             expect(result).toBe(true);
 | |
|         });
 | |
| 
 | |
|         it("should return an error message for an empty title", () => {
 | |
|             const result = assignmentTitleRules[0]("");
 | |
|             expect(result).toBe("Title cannot be empty.");
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     describe("learningPathRules", () => {
 | |
|         it("should return true for a valid learning path", () => {
 | |
|             const result = learningPathRules[0]({ hruid: "123", title: "Path Title" });
 | |
|             expect(result).toBe(true);
 | |
|         });
 | |
| 
 | |
|         it("should return an error message for an invalid learning path", () => {
 | |
|             const result = learningPathRules[0]({ hruid: "", title: "" });
 | |
|             expect(result).toBe("You must select a learning path.");
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     describe("classRules", () => {
 | |
|         it("should return true for a valid class", () => {
 | |
|             const result = classRules[0]("Class 1");
 | |
|             expect(result).toBe(true);
 | |
|         });
 | |
| 
 | |
|         it("should return an error message for an empty class", () => {
 | |
|             const result = classRules[0]("");
 | |
|             expect(result).toBe("You must select at least one class.");
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     describe("deadlineRules", () => {
 | |
|         it("should return true for a valid future deadline", () => {
 | |
|             const futureDate = new Date(Date.now() + 1000 * 60 * 60).toISOString();
 | |
|             const result = deadlineRules[0](futureDate);
 | |
|             expect(result).toBe(true);
 | |
|         });
 | |
| 
 | |
|         it("should return an error message for a past deadline", () => {
 | |
|             const pastDate = new Date(Date.now() - 1000 * 60 * 60).toISOString();
 | |
|             const result = deadlineRules[0](pastDate);
 | |
|             expect(result).toBe("The deadline must be in the future.");
 | |
|         });
 | |
| 
 | |
|         it("should return an error message for an invalid date", () => {
 | |
|             const result = deadlineRules[0]("invalid-date");
 | |
|             expect(result).toBe("Invalid date or time.");
 | |
|         });
 | |
| 
 | |
|         it("should return an error message for an empty deadline", () => {
 | |
|             const result = deadlineRules[0]("");
 | |
|             expect(result).toBe("You must set a deadline.");
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     describe("descriptionRules", () => {
 | |
|         it("should return true for a valid description", () => {
 | |
|             const result = descriptionRules[0]("This is a valid description.");
 | |
|             expect(result).toBe(true);
 | |
|         });
 | |
| 
 | |
|         it("should return an error message for an empty description", () => {
 | |
|             const result = descriptionRules[0]("");
 | |
|             expect(result).toBe("Description cannot be empty.");
 | |
|         });
 | |
|     });
 | |
| });
 | 
