





























@@ -3,9 +3,8 @@ import { describe, expect, it } from "vitest";
33import {
44applyQueueDropPolicy,
55applyQueueRuntimeSettings,
6-buildQueueSummaryPrompt,
76clearQueueSummaryState,
8-drainCollectItemIfNeeded,
7+drainCollectQueueStep,
98drainNextQueueItem,
109hasCrossChannelItems,
1110previewQueueSummaryPrompt,
@@ -85,26 +84,6 @@ describe("queue summary helpers", () => {
8584});
8685});
878688-it("buildQueueSummaryPrompt clears state after rendering", () => {
89-const state = {
90-dropPolicy: "summarize" as const,
91-droppedCount: 1,
92-summaryLines: ["line"],
93-};
94-95-const prompt = buildQueueSummaryPrompt({
96- state,
97-noun: "announce",
98-});
99-100-expect(prompt).toContain("[Queue overflow] Dropped 1 announce due to cap.");
101-expect(state).toEqual({
102-dropPolicy: "summarize",
103-droppedCount: 0,
104-summaryLines: [],
105-});
106-});
107-10887it("clearQueueSummaryState resets summary counters", () => {
10988const state = {
11089dropPolicy: "summarize" as const,
@@ -117,13 +96,14 @@ describe("queue summary helpers", () => {
11796});
11897});
11998120-describe("drainCollectItemIfNeeded", () => {
99+describe("drainCollectQueueStep", () => {
121100it("skips when neither force mode nor cross-channel routing is active", async () => {
122101const seen: number[] = [];
123102const items = [1];
103+const collectState = { forceIndividualCollect: false };
124104125-const result = await drainCollectItemIfNeeded({
126-forceIndividualCollect: false,
105+const result = await drainCollectQueueStep({
106+collectState,
127107isCrossChannel: false,
128108 items,
129109run: async (item) => {
@@ -139,9 +119,10 @@ describe("drainCollectItemIfNeeded", () => {
139119it("drains one item in force mode", async () => {
140120const seen: number[] = [];
141121const items = [1, 2];
122+const collectState = { forceIndividualCollect: true };
142123143-const result = await drainCollectItemIfNeeded({
144-forceIndividualCollect: true,
124+const result = await drainCollectQueueStep({
125+collectState,
145126isCrossChannel: false,
146127 items,
147128run: async (item) => {
@@ -155,20 +136,17 @@ describe("drainCollectItemIfNeeded", () => {
155136});
156137157138it("switches to force mode and returns empty when cross-channel with no queued item", async () => {
158-let forced = false;
139+const collectState = { forceIndividualCollect: false };
159140160-const result = await drainCollectItemIfNeeded({
161-forceIndividualCollect: false,
141+const result = await drainCollectQueueStep({
142+collectState,
162143isCrossChannel: true,
163-setForceIndividualCollect: (next) => {
164-forced = next;
165-},
166144items: [],
167145run: async () => {},
168146});
169147170148expect(result).toBe("empty");
171-expect(forced).toBe(true);
149+expect(collectState.forceIndividualCollect).toBe(true);
172150});
173151});
174152此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。