桌面下载端改用共享核心包,并修两处已知缺陷
- store 改由 createGalleryStore 生成:totalGalleryTask 成为唯一任务源, 收藏/下载/分类/搜索结果全部由 getter 派生,不再维护三份互相引用的数组 - 排序不再原地修改分类数组;本地搜索记住关键词,任务刷新后结果仍在 - 本地搜索结果补齐翻页入口:此前匹配 25 项却只显示 10 项,其余无法看到 - 取消收藏不再因本地找不到 gid 抛 TypeError - 删除重复的 taskSocket/progressiveImages/validate/thumbnail,改从共享包导入 - 远端搜索改用共享 fetchGalleries,关键词交给 axios 序列化,翻页按游标转发 - main.js 按需注册 Element Plus,入口 JS 由约 1.14MB 降到约 494KB - 依赖新增 file:../lionwebsite-frontend-shared 测试:14 项通过;构建成功,入口仍为 /asserts/index/index.js|css。
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import test from "node:test"
|
||||
import assert from "node:assert/strict"
|
||||
import {buildSearchParams, fetchGalleries, readResponse} from "lionwebsite-frontend-shared"
|
||||
|
||||
test("keyword request never hand-builds the query string", () => {
|
||||
assert.deepEqual(buildSearchParams({keyword: "cat girl"}), {keyword: "cat girl"})
|
||||
})
|
||||
|
||||
test("next page forwards the upstream cursor instead of the keyword", () => {
|
||||
const params = buildSearchParams({
|
||||
keyword: "cat girl", direction: "next",
|
||||
href: "https://exhentai.org/?f_search=cat+girl&next=777",
|
||||
})
|
||||
assert.equal(params.next, "777")
|
||||
assert.equal(params.keyword, "cat girl")
|
||||
})
|
||||
|
||||
test("fetchGalleries decodes object and JSON-string payloads identically", async () => {
|
||||
const asObject = {get: async () => ({data: {result: "success", data: [{gid: 1}], next: "n1"}})}
|
||||
const asString = {get: async () => ({data: {result: "success", data: '[{"gid":1}]', next: "n1"}})}
|
||||
const one = await fetchGalleries(asObject, {keyword: "k"})
|
||||
const two = await fetchGalleries(asString, {keyword: "k"})
|
||||
assert.deepEqual(one.galleries, two.galleries)
|
||||
assert.equal(one.pagination.next, "n1")
|
||||
})
|
||||
|
||||
test("fetchGalleries surfaces the backend message on failure", async () => {
|
||||
const http = {get: async () => ({data: {result: "failure", data: "没有搜索到结果"}})}
|
||||
await assert.rejects(() => fetchGalleries(http, {keyword: "k"}),
|
||||
error => error.payload === "没有搜索到结果")
|
||||
})
|
||||
|
||||
test("readResponse keeps all four pagination cursors", () => {
|
||||
const parsed = readResponse({data: {result: "success", data: "[]",
|
||||
first: "f", previous: "p", next: "n", last: "l"}})
|
||||
assert.deepEqual(parsed.pagination, {first: "f", previous: "p", next: "n", last: "l"})
|
||||
})
|
||||
Reference in New Issue
Block a user