zhangjie 3 жил өмнө
parent
commit
8cd6620e6e

+ 1 - 0
.eslintrc.js

@@ -45,6 +45,7 @@ module.exports = {
     ".eslintrc.js",
     "vite.config.ts",
     "src/test",
+    "test",
     "prebuild.mjs",
   ],
   overrides: [

+ 4 - 1
package.json

@@ -11,7 +11,8 @@
     "typecheck": "vue-tsc --noEmit --skipLibCheck",
     "serve": "vite preview",
     "lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --fix src",
-    "format": "prettier --ignore-path .gitignore .  --write"
+    "format": "prettier --ignore-path .gitignore .  --write",
+    "test": "vitest"
   },
   "dependencies": {
     "@chenfengyuan/vue-qrcode": "^2.0.0",
@@ -47,12 +48,14 @@
     "eslint": "^8.12.0",
     "eslint-config-prettier": "^8.5.0",
     "eslint-plugin-vue": "^8.5.0",
+    "happy-dom": "^2.55.0",
     "postcss": "^8.4.12",
     "prettier": "^2.6.1",
     "typescript": "^4.6.3",
     "unplugin-auto-import": "^0.6.9",
     "unplugin-vue-components": "^0.18.5",
     "vite": "^2.9.1",
+    "vitest": "^0.9.0",
     "vue-eslint-parser": "^8.3.0",
     "vue-tsc": "^0.33.9"
   }

+ 2 - 2
src/components/MainLayout/MainLayout.vue

@@ -68,7 +68,7 @@ async function getMenus() {
       };
     });
 }
-function swithMenu(menu: MenuOption) {
+function switchMenu(menu: MenuOption) {
   console.log(menu.routeName);
   void router.push({ name: menu.routeName });
 }
@@ -203,7 +203,7 @@ watch(
               'home-menu-content',
               { 'is-active': curMenu === menu.routeName },
             ]"
-            @click="swithMenu(menu)"
+            @click="switchMenu(menu)"
           >
             <span>{{ menu.name }}</span>
             <n-badge

+ 3 - 4
src/features/OnlinePractice/OnlinePractice.vue

@@ -30,7 +30,6 @@ async function getExamList() {
 }
 
 // course-list
-let nowTime = $ref(Date.now() + store.sysTime.difference);
 let enterButtonClicked = $ref(false);
 let courseList = $ref<PracticeExam[]>([]);
 async function getCourseList() {
@@ -74,16 +73,16 @@ function weekDayNameTransfer(week: number): string {
   return WEEKDAY_NAMES[week] ? `周${WEEKDAY_NAMES[week]}` : "";
 }
 function courseInBetween(course: PracticeExam) {
-  return moment(nowTime).isBetween(
+  return moment(store.getTimeStamp).isBetween(
     moment(course.startTime),
     moment(course.endTime)
   );
 }
 function courseInCycle(course: PracticeExam) {
   if (!course.examCycleEnabled) return true;
-  const weekday = moment(nowTime).isoWeekday();
+  const weekday = moment(store.getTimeStamp).isoWeekday();
   if (!course.examCycleWeek.includes(weekday)) return false;
-  const HHmm = moment(nowTime).format("HH:mm");
+  const HHmm = moment(store.getTimeStamp).format("HH:mm");
   return course.examCycleTimeRange.some((range) =>
     range.timeRange.some((v) => HHmm >= v[0] && HHmm <= v[1])
   );

+ 1 - 1
src/utils/utils.ts

@@ -34,7 +34,7 @@ export function showLogout(cause: string) {
  * @returns 汉字数字
  */
 export function toChineseNumber(num: number) {
-  let ret;
+  let ret = "";
   if (num < 10) {
     ret = num.toLocaleString("zh-u-nu-hanidec");
   } else if (num === 10) {

+ 21 - 0
test/moment.test.ts

@@ -0,0 +1,21 @@
+import { describe, expect, it } from "vitest";
+import moment from "moment";
+
+function timeFormat(time: any) {
+  return moment(time).format("YYYY-MM-DD HH:mm:ss");
+}
+
+describe("momentTest", () => {
+  it("test moment format", () => {
+    const date = {
+      timestampt: 1649302583396,
+      timeString: "2022-04-07 11:36:23",
+      dateObj: new Date(1649302583396),
+    };
+    const eqTimeStr = "2022-04-07 11:36:23";
+
+    expect(timeFormat(date.timestampt)).toEqual(eqTimeStr);
+    expect(timeFormat(date.timeString)).toEqual(eqTimeStr);
+    expect(timeFormat(date.dateObj)).toEqual(eqTimeStr);
+  });
+});

+ 29 - 0
test/numToChar.test.ts

@@ -0,0 +1,29 @@
+import { describe, expect, it } from "vitest";
+
+function toChineseNumber(num: number) {
+  let ret = "";
+  if (num < 10) {
+    ret = num.toLocaleString("zh-u-nu-hanidec");
+  } else if (num === 10) {
+    ret = "十";
+  } else if (num > 10 && num < 20) {
+    ret = "十" + (num % 10).toLocaleString("zh-u-nu-hanidec");
+  } else if (num >= 20 && num < 100) {
+    const s = num
+      .toLocaleString("zh-u-nu-hanidec", { useGrouping: false })
+      .split("");
+    s.splice(1, 0, "十");
+    ret = s.join("").replace("〇", "");
+  } else {
+    ret = num.toLocaleString("zh-u-nu-hanidec");
+  }
+
+  return ret;
+}
+
+describe("toChineseNumber", () => {
+  it("test number to chinese", () => {
+    expect(toChineseNumber(12)).toEqual("十二");
+    // expect(toChineseNumber(13)).toEqual("一十三");
+  });
+});

+ 10 - 0
vitest.config.ts

@@ -0,0 +1,10 @@
+import { defineConfig } from "vite";
+
+export default defineConfig({
+  test: {
+    coverage: {
+      reporter: ["text", "lcovonly"],
+    },
+    environment: "happy-dom",
+  },
+});