diff --git a/src/api/methods/api-files.ts b/src/api/methods/api-files.ts index 1d70d8a..eb15c92 100644 --- a/src/api/methods/api-files.ts +++ b/src/api/methods/api-files.ts @@ -113,12 +113,17 @@ export class ApiFiles extends ApiBase { const { sinceEvent, ...rest } = request; const allKeys: Key[] = await this.listKeys({ ...rest, event: true }, config); + const keysWithEvent = allKeys.filter((key) => key.event !== undefined && key.event !== null); const maxEvent: number | null = - allKeys.length > 0 ? allKeys.reduce((max, key) => Math.max(max, key.event ?? 0), 0) : null; + keysWithEvent.length > 0 + ? keysWithEvent.reduce((max, key) => Math.max(max, key.event!), -Infinity) + : null; const keys: Key[] = sinceEvent !== null && sinceEvent !== undefined - ? allKeys.filter((key) => (key.event ?? 0) > sinceEvent) + ? allKeys.filter( + (key) => key.event !== undefined && key.event !== null && key.event > sinceEvent, + ) : allKeys; return { keys, maxEvent }; diff --git a/tests/fixtures/full-project/fileKeysWithEvents.json b/tests/fixtures/full-project/fileKeysWithEvents.json index 24e133d..48d7e4b 100644 --- a/tests/fixtures/full-project/fileKeysWithEvents.json +++ b/tests/fixtures/full-project/fileKeysWithEvents.json @@ -5,28 +5,28 @@ "key": ["app_title"], "value": "My Application", "vid": -7407901648464613000, - "event": 100 + "event": -6585819442721198000 }, { "id": "_a0000000000000000002", "key": ["welcome_message"], "value": "Welcome to My Application!", "vid": -7407901648464613000, - "event": 200 + "event": -6585819442721190000 }, { "id": "_a0000000000000000003", "key": ["login_button"], "value": "Log In", "vid": -7407901648464613000, - "event": 200 + "event": -6585819442721190000 }, { "id": "_a0000000000000000004", "key": ["headers", "role"], "value": "Project role", "vid": -7407781050279235000, - "event": 300 + "event": -6585819442721180000 } ] } diff --git a/tests/specs/files.spec.ts b/tests/specs/files.spec.ts index 2c6f559..8f0dab2 100644 --- a/tests/specs/files.spec.ts +++ b/tests/specs/files.spec.ts @@ -113,7 +113,7 @@ describe('Files', (): void => { }); expect(result.keys.length).toBe(4); - expect(result.maxEvent).toBe(300); + expect(result.maxEvent).toBe(-6585819442721180000); }); test('api.files.listKeysSinceEvent filters keys by sinceEvent', async (): Promise => { @@ -122,13 +122,13 @@ describe('Files', (): void => { project, file, lang: Locales.ENGLISH, - sinceEvent: 100, + sinceEvent: -6585819442721198000, }); - // Keys with event 200 and 300 (3 keys), excludes event 100 + // Keys with event > -6585819442721198000 (3 keys), excludes the oldest expect(result.keys.length).toBe(3); - expect(result.maxEvent).toBe(300); - expect(result.keys.every((k) => (k.event ?? 0) > 100)).toBe(true); + expect(result.maxEvent).toBe(-6585819442721180000); + expect(result.keys.every((k) => k.event! > -6585819442721198000)).toBe(true); }); test('api.files.listKeysSinceEvent returns empty keys when sinceEvent >= maxEvent', async (): Promise => { @@ -137,11 +137,11 @@ describe('Files', (): void => { project, file, lang: Locales.ENGLISH, - sinceEvent: 300, + sinceEvent: -6585819442721180000, }); expect(result.keys.length).toBe(0); - expect(result.maxEvent).toBe(300); + expect(result.maxEvent).toBe(-6585819442721180000); }); test('api.files.getContents', async (): Promise => {