ismism/ismism.ts/tst/que.test.ts

93 lines
3.3 KiB
TypeScript
Raw Normal View History

2023-02-26 15:15:41 +08:00
import { assertEquals } from "https://deno.land/std@0.178.0/testing/asserts.ts"
import { coll, db } from "../src/db.ts"
import { agd_c, agd_u } from "../src/eid/agd.ts"
import { rec_c } from "../src/eid/rec.ts"
import { soc_c, soc_u } from "../src/eid/soc.ts"
import { usr_c } from "../src/eid/usr.ts"
import { Agd, que, Rec, Soc, Usr } from "../src/pra/que.ts"
await db("tst", true)
const utc = Date.now()
await Promise.all([
await usr_c("11111111111", "四川", "成都"),
await usr_c("11111111112", "广东", "汕头"),
await usr_c("11111111113", "江苏", "苏州"),
await soc_c("社团一", "四川", "成都"),
await soc_c("社团二", "江苏", "苏州"),
await soc_c("社团三", "江苏", "苏州"),
await agd_c("活动一", "四川", "成都"),
await agd_c("活动二", "江苏", "苏州"),
await agd_c("活动三", "江苏", "苏州"),
soc_u(1, { $set: { uid: [1, 2, 3] } }),
soc_u(2, { $set: { uid: [3] } }),
agd_u(1, { $set: { uid: [1, 2, 3] } }),
agd_u(2, { $set: { uid: [3] } }),
rec_c(coll.work, { _id: { uid: 1, aid: 1, utc }, rej: [], ref: [], work: "work", msg: "work" }),
rec_c(coll.work, { _id: { uid: 1, aid: 2, utc }, rej: [], ref: [], work: "work", msg: "work" }),
rec_c(coll.work, { _id: { uid: 2, aid: 1, utc: utc + 1 }, rej: [], ref: [], work: "video", nam: "nam", src: "src" }),
rec_c(coll.fund, { _id: { uid: 1, aid: 1, utc }, fund: 100, msg: "fund" }),
rec_c(coll.fund, { _id: { uid: 3, aid: 2, utc: utc + 1 }, fund: 100, msg: "fund" }),
])
export function p(
obj: {
c?: string,
uid?: number,
sid?: number,
aid?: number,
utc?: number,
adm1?: string,
adm2?: string,
}
) {
return new URLSearchParams(Object.entries(obj).map(([k, v]) => [k, `${v}`]))
}
Deno.test("nid", async () => {
assertEquals(await que("nid", p({})), {
adm1nsid: [["江苏", 2], ["四川", 1]],
adm2nsid: [["苏州", 2], ["成都", 1]],
adm1naid: [["江苏", 2], ["四川", 1]],
adm2naid: [["苏州", 2], ["成都", 1]]
})
})
Deno.test("usr", async () => {
const u = await que("usr", p({ uid: 1 })) as Usr
assertEquals(u!.nrec, { work: 2, fund: 1 })
})
Deno.test("soc", async () => {
const s = await que("soc", p({})) as Soc[]
assertEquals(s!.length, 3)
assertEquals(s[2]?.nrec, { work: 3, fund: 2 })
assertEquals(s[0]?.nrec, { work: 0, fund: 0 })
const s1 = await que("soc", p({ sid: s[2]?._id })) as Soc
assertEquals(s[2], s1)
})
Deno.test("agd", async () => {
const a = await que("agd", p({})) as Agd[]
assertEquals(a!.length, 3)
assertEquals(a[1]?.nrec, { work: 1, fund: 1 })
assertEquals(a[2]?.nrec, { work: 2, fund: 1 })
const a1 = await que("agd", p({ aid: a[2]?._id })) as Agd
assertEquals(a[2], a1)
})
Deno.test("rec", async () => {
const work = await que("rec", p({ c: "work", utc: 0 })) as Rec
const fund = await que("rec", p({ c: "fund", utc: 0 })) as Rec
assertEquals(work!.rec.length, 3)
assertEquals(fund!.rec.length, 2)
2023-03-06 20:19:40 +08:00
const work_utc = await que("rec", p({ c: "work", utc: work!.rec[0]._id.utc })) as Rec
const work_uid1 = await que("rec", p({ c: "work", utc: 0, uid: 1 })) as Rec
2023-02-26 15:15:41 +08:00
const fund_aid2 = await que("rec", p({ c: "fund", utc: 0, aid: 2 })) as Rec
const fund_sid2 = await que("rec", p({ c: "fund", utc: 0, sid: 2 })) as Rec
2023-03-06 20:19:40 +08:00
assertEquals(work?.rec.slice(1), work_utc?.rec)
assertEquals(work_utc, work_uid1)
assertEquals(fund?.rec.slice(0, 1), fund_aid2?.rec)
2023-02-26 15:15:41 +08:00
assertEquals(fund_aid2, fund_sid2)
})