fix: bug in assignment vertalingen
This commit is contained in:
		
							parent
							
								
									f67e3f5a1a
								
							
						
					
					
						commit
						0abe9b1bce
					
				
					 4 changed files with 37 additions and 119 deletions
				
			
		|  | @ -1,6 +1,5 @@ | |||
| <script setup lang="ts"> | ||||
|     import { ref, watch } from "vue"; | ||||
|     import { deadlineRules } from "@/utils/assignment-rules.ts"; | ||||
| 
 | ||||
|     const emit = defineEmits<(e: "update:deadline", value: Date | null) => void>(); | ||||
|     const props = defineProps<{ deadline: Date | null }>(); | ||||
|  | @ -19,6 +18,24 @@ | |||
|             emit("update:deadline", null); | ||||
|         } | ||||
|     }); | ||||
| 
 | ||||
|     const deadlineRules = [ | ||||
|         (value: string): string | boolean => { | ||||
| 
 | ||||
|             const selectedDateTime = new Date(value); | ||||
|             const now = new Date(); | ||||
| 
 | ||||
|             if (isNaN(selectedDateTime.getTime())) { | ||||
|                 return t("deadline-invalid"); | ||||
|             } | ||||
| 
 | ||||
|             if (selectedDateTime <= now) { | ||||
|                 return t("deadline-past"); | ||||
|             } | ||||
| 
 | ||||
|             return true; | ||||
|         }, | ||||
|     ]; | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|  |  | |||
|  | @ -1,20 +1,9 @@ | |||
| import {useI18n} from "vue-i18n"; | ||||
| 
 | ||||
| const { t } = useI18n(); | ||||
| 
 | ||||
| /** | ||||
|  * Validation rule for the assignment title. | ||||
|  * | ||||
|  * Ensures that the title is not empty. | ||||
|  */ | ||||
| export const assignmentTitleRules = [ | ||||
|     (value: string): string | boolean => { | ||||
|         if (value?.length >= 1) { | ||||
|             return true; | ||||
|         } // Title must not be empty
 | ||||
|         return t("title-required"); | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  | @ -22,34 +11,10 @@ export const assignmentTitleRules = [ | |||
|  * | ||||
|  * Ensures that at least one class is selected. | ||||
|  */ | ||||
| export const classRules = [ | ||||
|     (value: string): string | boolean => { | ||||
|         if (value) { | ||||
|             return true; | ||||
|         } | ||||
|         return t("class-required"); | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
| /** | ||||
|  * Validation rule for the deadline field. | ||||
|  * | ||||
|  * Ensures that a valid deadline is selected and is in the future. | ||||
|  */ | ||||
| export const deadlineRules = [ | ||||
|     (value: string): string | boolean => { | ||||
| 
 | ||||
|         const selectedDateTime = new Date(value); | ||||
|         const now = new Date(); | ||||
| 
 | ||||
|         if (isNaN(selectedDateTime.getTime())) { | ||||
|             return t("deadline-invalid"); | ||||
|         } | ||||
| 
 | ||||
|         if (selectedDateTime <= now) { | ||||
|             return t("deadline-past"); | ||||
|         } | ||||
| 
 | ||||
|         return true; | ||||
|     }, | ||||
| ]; | ||||
|  |  | |||
|  | @ -1,7 +1,6 @@ | |||
| <script setup lang="ts"> | ||||
| import { useI18n } from "vue-i18n"; | ||||
| import { computed, onMounted, ref, watch } from "vue"; | ||||
| import { assignmentTitleRules, classRules } from "@/utils/assignment-rules.ts"; | ||||
| import auth from "@/services/auth/auth-service.ts"; | ||||
| import { useTeacherClassesQuery } from "@/queries/teachers.ts"; | ||||
| import { useRouter, useRoute } from "vue-router"; | ||||
|  | @ -96,6 +95,25 @@ const learningPathRules = [ | |||
|     } | ||||
| ]; | ||||
| 
 | ||||
| const assignmentTitleRules = [ | ||||
|     (value: string): string | boolean => { | ||||
|         if (value?.length >= 1) { | ||||
|             return true; | ||||
|         } // Title must not be empty | ||||
|         return t("title-required"); | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
| const classRules = [ | ||||
|     (value: string): string | boolean => { | ||||
|         if (value) { | ||||
|             return true; | ||||
|         } | ||||
|         return t("class-required"); | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|  |  | |||
|  | @ -1,82 +0,0 @@ | |||
| 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."); | ||||
|         }); | ||||
|     }); | ||||
| }); | ||||
		Reference in a new issue
	
	 Joyelle Ndagijimana
						Joyelle Ndagijimana