fix(splash): select the latest history message
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
|
|
||||||
|
import { Result } from "@/utils";
|
||||||
|
|
||||||
|
const getHistoryMock = vi.hoisted(() => vi.fn());
|
||||||
|
|
||||||
|
vi.mock("@/data/repositories/chat_repository", () => ({
|
||||||
|
getChatRepository: () => ({ getHistory: getHistoryMock }),
|
||||||
|
}));
|
||||||
|
|
||||||
|
import { fetchSplashLatestMessagePreview } from "../splash_latest_message";
|
||||||
|
|
||||||
|
describe("fetchSplashLatestMessagePreview", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
getHistoryMock.mockReset();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("uses the last message returned by history", async () => {
|
||||||
|
getHistoryMock.mockResolvedValue(
|
||||||
|
Result.ok({
|
||||||
|
messages: [
|
||||||
|
{ type: "text", content: "Older message" },
|
||||||
|
{ type: "text", content: "Latest message" },
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
const result = await fetchSplashLatestMessagePreview();
|
||||||
|
|
||||||
|
expect(getHistoryMock).toHaveBeenCalledWith(1, 0);
|
||||||
|
expect(Result.isOk(result) && result.data).toBe("Latest message");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns null when history is empty", async () => {
|
||||||
|
getHistoryMock.mockResolvedValue(Result.ok({ messages: [] }));
|
||||||
|
|
||||||
|
const result = await fetchSplashLatestMessagePreview();
|
||||||
|
|
||||||
|
expect(Result.isOk(result) && result.data).toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -11,6 +11,6 @@ export async function fetchSplashLatestMessagePreview(): Promise<
|
|||||||
const result = await getChatRepository().getHistory(1, 0);
|
const result = await getChatRepository().getHistory(1, 0);
|
||||||
if (Result.isErr(result)) return Result.err(result.error);
|
if (Result.isErr(result)) return Result.err(result.error);
|
||||||
|
|
||||||
const latestMessage = result.data.messages[1] ?? null;
|
const latestMessage = result.data.messages.at(-1) ?? null;
|
||||||
return Result.ok(getSplashLatestMessagePreview(latestMessage));
|
return Result.ok(getSplashLatestMessagePreview(latestMessage));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user