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.
dianshang-qianduan/tests/ai-learning-analysis.static...

36 lines
1.8 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

const fs = require("node:fs");
const path = require("node:path");
const test = require("node:test");
const assert = require("node:assert/strict");
const root = path.resolve(__dirname, "..");
const apiSource = fs.readFileSync(path.join(root, "src/api/AI.js"), "utf8");
const analysisSource = fs.readFileSync(path.join(root, "src/views/analysis-of-students/analysis.vue"), "utf8");
const dialogueSource = fs.readFileSync(path.join(root, "src/views/analysis-of-students/dialogue.vue"), "utf8");
test("learning analysis request does not send the commerce login token", () => {
const requestBlock = apiSource.match(/export function getLearningAnalysis[\s\S]*?\n}/)?.[0] || "";
assert.match(requestBlock, /headers:\s*\{\s*isToken:\s*false\s*}/);
assert.match(requestBlock, /params:\s*\{\s*stuNeed\s*}/);
});
test("learning analysis page sends current training scores and learning activity data", () => {
assert.match(analysisSource, /暂无成绩数据,暂时无法进行AI学情分析/);
assert.match(analysisSource, /getCurrentExperimentReport/);
assert.match(analysisSource, /getStudyTime/);
assert.match(analysisSource, /getUserVisitCount/);
assert.match(analysisSource, /trainingScores/);
assert.match(analysisSource, /learningData/);
assert.match(analysisSource, /learningAnalysisData/);
assert.doesNotMatch(analysisSource, /getStuModuleDetail/);
assert.match(analysisSource, /completedTaskCount/);
assert.match(analysisSource, /if \(!hasScoreData\.value\)/);
assert.match(analysisSource, /finally\s*\{\s*scoreLoaded\.value = true/);
});
test("AI analysis failure always closes the loading overlay", () => {
assert.match(dialogueSource, /learningAnalysisData/);
assert.match(dialogueSource, /AI学情分析暂时不可用,请稍后重试/);
assert.match(dialogueSource, /finally\s*\{\s*loading\.value = false/);
});