diff --git a/package.json b/package.json index a140c9b..b150c68 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eppo/js-client-sdk-common", - "version": "4.14.0", + "version": "4.14.1", "description": "Common library for Eppo JavaScript SDKs (web, react native, and node)", "main": "dist/index.js", "files": [ diff --git a/src/events/bounded-event-queue.spec.ts b/src/events/bounded-event-queue.spec.ts index b6b5707..838acbd 100644 --- a/src/events/bounded-event-queue.spec.ts +++ b/src/events/bounded-event-queue.spec.ts @@ -49,12 +49,35 @@ describe('BoundedEventQueue', () => { spyLoggerWarn.mockRestore(); }); - it('splice should remove the specified number of events', () => { - const queue = new BoundedEventQueue('testQueue', [], maxSize); - queue.push('event1', 'event2', 'event3'); - const removed = queue.splice(2); - expect(removed).toEqual(['event3']); - expect([...queue]).toEqual(['event1', 'event2']); + describe('splice', () => { + it('should remove the specified number of events', () => { + const queue = new BoundedEventQueue('testQueue', [], maxSize); + queue.push('event1', 'event2', 'event3'); + const removed = queue.splice(2); + expect(removed).toEqual(['event1', 'event2']); + expect([...queue]).toEqual(['event3']); + }); + + it('should remove all events if count is greater than the number of events', () => { + const queue = new BoundedEventQueue('testQueue', [], maxSize); + queue.push('event1', 'event2', 'event3'); + const removed = queue.splice(10); + expect(removed).toEqual(['event1', 'event2', 'event3']); + expect(queue.isEmpty()).toBe(true); + }); + + it('should return an empty array if the queue is empty', () => { + const queue = new BoundedEventQueue('testQueue', [], maxSize); + const removed = queue.splice(10); + expect(removed).toEqual([]); + }); + + it('should return an empty array if count is 0', () => { + const queue = new BoundedEventQueue('testQueue', [], maxSize); + queue.push('event1', 'event2', 'event3'); + const removed = queue.splice(0); + expect(removed).toEqual([]); + }); }); it('flush should clear the queue and return all events', () => { diff --git a/src/events/bounded-event-queue.ts b/src/events/bounded-event-queue.ts index 557758a..d03629a 100644 --- a/src/events/bounded-event-queue.ts +++ b/src/events/bounded-event-queue.ts @@ -16,7 +16,7 @@ export class BoundedEventQueue implements NamedEventQueue { } splice(count: number): T[] { - return this.queue.splice(count); + return this.queue.splice(0, count); } isEmpty(): boolean {