feat: support shared pet care tasks and smooth daily page return
ci-cd / verify (push) Successful in 2m18s
ci-cd / deploy (push) Skipped

This commit is contained in:
2026-10-05 20:20:05 +08:00
parent fbc1eda561
commit 3175936266
16 changed files with 196 additions and 119 deletions
+39 -2
View File
@@ -88,13 +88,13 @@ test("缓存 token 过期时只重新登录一次,延迟的旧 401 不清除
assert.equal(r.logins.length, 1);
});
function home(login, secure) {
function home(login, secure, app = { login }) {
let definition;
const wx = { getStorageSync: () => [], navigateTo: () => {} };
vm.runInNewContext(fs.readFileSync("pets-fe/pages/home/home.js", "utf8"), {
wx,
Date,
getApp: () => ({ login }),
getApp: () => app,
Page: (value) => {
definition = value;
},
@@ -193,3 +193,40 @@ test("首页请求失败不显示空数据状态,刷新失败保留已有记
assert.equal(page.data.pets[0].id, "existing");
assert.equal(page.data.error, "网络异常");
});
test("从其他页面回到日常立即显示已有数据,后台刷新不清空内容", async () => {
const app = { login: async () => "token", globalData: { token: "token", user: { id: "user-1" } } };
const first = home(app.login, data, app);
await first.load();
first.setData({ pets: [{ id: "pet-1" }], tasks: [{ id: "task-1", completed: true }], undoneCount: 0 });
first.onUnload();
let finish;
const pending = new Promise((resolve) => { finish = resolve; });
const next = home(app.login, async (route) => { await pending; return data(route); }, app);
next.onLoad();
assert.equal(next.data.ready, true);
assert.equal(next.data.phase, "ready");
assert.equal(next.data.pets[0].id, "pet-1");
assert.equal(next.data.tasks[0].completed, true);
const refreshing = next.load();
await tick();
assert.equal(next.data.ready, true);
assert.equal(next.data.pets[0].id, "pet-1");
finish();
await refreshing;
assert.equal(next.data.loading, false);
});
test("日常缓存不跨账号、不显示上一天的任务", async () => {
const app = { login: async () => "token", globalData: { user: { id: "new-user" } }, homeSnapshot: {
account: "old-user", date: "2026-10-05", data: { pets: [{ id: "private" }] },
} };
const page = home(app.login, data, app);
page.onLoad();
assert.equal(page.data.ready, false);
assert.equal(page.data.pets.length, 0);
app.homeSnapshot.account = "new-user";
app.homeSnapshot.date = "2026-10-04";
page.onLoad();
assert.equal(page.data.ready, false);
});