























@@ -25,6 +25,15 @@ function deferred() {
2525return { promise, resolve };
2626}
272728+function expectTrackerState(
29+state: TelegramUpdateTrackerState,
30+expected: Partial<TelegramUpdateTrackerState>,
31+) {
32+for (const [key, value] of Object.entries(expected)) {
33+expect(state[key as keyof TelegramUpdateTrackerState]).toEqual(value);
34+}
35+}
36+2837describe("createTelegramUpdateTracker", () => {
2938it("persists accepted offsets before earlier pending updates complete", async () => {
3039const onAcceptedUpdateId = vi.fn();
@@ -48,7 +57,7 @@ describe("createTelegramUpdateTracker", () => {
4857await flushTrackerMicrotasks();
49585059expect(onAcceptedUpdateId.mock.calls.map((call) => Number(call[0]))).toEqual([101, 102]);
51-expect(tracker.getState()).toMatchObject({
60+expectTrackerState(tracker.getState(), {
5261highestAcceptedUpdateId: 102,
5362highestPersistedAcceptedUpdateId: 102,
5463highestCompletedUpdateId: 102,
@@ -58,7 +67,7 @@ describe("createTelegramUpdateTracker", () => {
5867} satisfies Partial<TelegramUpdateTrackerState>);
59686069tracker.finishUpdate(update101.update, { completed: true });
61-expect(tracker.getState()).toMatchObject({
70+expectTrackerState(tracker.getState(), {
6271highestCompletedUpdateId: 102,
6372safeCompletedUpdateId: 102,
6473pendingUpdateIds: [],
@@ -83,7 +92,7 @@ describe("createTelegramUpdateTracker", () => {
8392tracker.finishUpdate(update101.update, { completed: false });
8493await flushTrackerMicrotasks();
8594expect(onAcceptedUpdateId).not.toHaveBeenCalled();
86-expect(tracker.getState()).toMatchObject({
95+expectTrackerState(tracker.getState(), {
8796failedUpdateIds: [101],
8897highestPersistedAcceptedUpdateId: 100,
8998} satisfies Partial<TelegramUpdateTrackerState>);
@@ -96,7 +105,7 @@ describe("createTelegramUpdateTracker", () => {
96105await flushTrackerMicrotasks();
9710698107expect(onAcceptedUpdateId).toHaveBeenCalledWith(101);
99-expect(tracker.getState()).toMatchObject({
108+expectTrackerState(tracker.getState(), {
100109failedUpdateIds: [],
101110highestPersistedAcceptedUpdateId: 101,
102111safeCompletedUpdateId: 101,
@@ -149,7 +158,7 @@ describe("createTelegramUpdateTracker", () => {
149158150159await flushTrackerMicrotasks();
151160expect(writes).toEqual([101]);
152-expect(tracker.getState()).toMatchObject({
161+expectTrackerState(tracker.getState(), {
153162highestAcceptedUpdateId: 103,
154163highestPersistedAcceptedUpdateId: 100,
155164} satisfies Partial<TelegramUpdateTrackerState>);
@@ -161,7 +170,7 @@ describe("createTelegramUpdateTracker", () => {
161170162171secondWrite.resolve();
163172await flushTrackerMicrotasks();
164-expect(tracker.getState()).toMatchObject({
173+expectTrackerState(tracker.getState(), {
165174highestPersistedAcceptedUpdateId: 103,
166175} satisfies Partial<TelegramUpdateTrackerState>);
167176});
@@ -174,7 +183,7 @@ describe("createTelegramUpdateTracker", () => {
174183}
175184tracker.finishUpdate(first.update, { completed: false });
176185177-expect(tracker.getState()).toMatchObject({
186+expectTrackerState(tracker.getState(), {
178187highestAcceptedUpdateId: 201,
179188highestCompletedUpdateId: 200,
180189safeCompletedUpdateId: 200,
@@ -187,7 +196,7 @@ describe("createTelegramUpdateTracker", () => {
187196}
188197tracker.finishUpdate(retry.update, { completed: true });
189198190-expect(tracker.getState()).toMatchObject({
199+expectTrackerState(tracker.getState(), {
191200highestAcceptedUpdateId: 201,
192201highestCompletedUpdateId: 201,
193202safeCompletedUpdateId: 201,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。