You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
1.6 KiB
JavaScript
23 lines
1.6 KiB
JavaScript
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const root = path.resolve(__dirname, "..");
|
|
const read = (file) => fs.readFileSync(path.join(root, file), "utf8");
|
|
const taskPage = read("src/views/teacherEnd/task/index.vue");
|
|
const sidebar = read("src/layout/components/Sidebar/index.vue");
|
|
const api = read("src/api/teacher.js");
|
|
|
|
assert(taskPage.includes("listClassTrainingTasks"), "task allocation must use training tasks as its data source");
|
|
assert(taskPage.includes("listClassTrainingTasks"), "task allocation must load training tasks for the selected teaching class");
|
|
assert(taskPage.includes("await listClassTrainingTasks(classId.value, { enabledOnly: false })"), "class task loading must request disabled and enabled tasks");
|
|
assert(taskPage.includes("tasks.value = [];\n const res = await listClassTrainingTasks"), "class task loading must clear prior class rows before requesting the selected class");
|
|
assert(taskPage.includes("getTaskPublication"), "task allocation must load the selected class publication state");
|
|
assert(taskPage.includes("tasks.value.map((task) => task.taskKey)"), "an unconfigured class must default to all tasks selected");
|
|
assert(taskPage.includes("保存发布配置"), "task allocation must require an explicit save");
|
|
assert(api.includes("selectTaskPublicationByClassId"), "publication API missing");
|
|
assert(sidebar.includes("filterStudentCourseNavigation"), "student menu must be filtered by published training tasks");
|
|
assert(sidebar.includes("publishedTaskKeys"), "student menu must retain published task keys");
|
|
|
|
console.log("task publication front-end contract passed");
|