Skip to content

Commit 1d5a1e6

Browse files
authored
fix: bounded event queue splice behavior (#245)
1 parent c2c7937 commit 1d5a1e6

File tree

3 files changed

+31
-8
lines changed

3 files changed

+31
-8
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@eppo/js-client-sdk-common",
3-
"version": "4.14.0",
3+
"version": "4.14.1",
44
"description": "Common library for Eppo JavaScript SDKs (web, react native, and node)",
55
"main": "dist/index.js",
66
"files": [

src/events/bounded-event-queue.spec.ts

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,35 @@ describe('BoundedEventQueue', () => {
4949
spyLoggerWarn.mockRestore();
5050
});
5151

52-
it('splice should remove the specified number of events', () => {
53-
const queue = new BoundedEventQueue<string>('testQueue', [], maxSize);
54-
queue.push('event1', 'event2', 'event3');
55-
const removed = queue.splice(2);
56-
expect(removed).toEqual(['event3']);
57-
expect([...queue]).toEqual(['event1', 'event2']);
52+
describe('splice', () => {
53+
it('should remove the specified number of events', () => {
54+
const queue = new BoundedEventQueue<string>('testQueue', [], maxSize);
55+
queue.push('event1', 'event2', 'event3');
56+
const removed = queue.splice(2);
57+
expect(removed).toEqual(['event1', 'event2']);
58+
expect([...queue]).toEqual(['event3']);
59+
});
60+
61+
it('should remove all events if count is greater than the number of events', () => {
62+
const queue = new BoundedEventQueue<string>('testQueue', [], maxSize);
63+
queue.push('event1', 'event2', 'event3');
64+
const removed = queue.splice(10);
65+
expect(removed).toEqual(['event1', 'event2', 'event3']);
66+
expect(queue.isEmpty()).toBe(true);
67+
});
68+
69+
it('should return an empty array if the queue is empty', () => {
70+
const queue = new BoundedEventQueue<string>('testQueue', [], maxSize);
71+
const removed = queue.splice(10);
72+
expect(removed).toEqual([]);
73+
});
74+
75+
it('should return an empty array if count is 0', () => {
76+
const queue = new BoundedEventQueue<string>('testQueue', [], maxSize);
77+
queue.push('event1', 'event2', 'event3');
78+
const removed = queue.splice(0);
79+
expect(removed).toEqual([]);
80+
});
5881
});
5982

6083
it('flush should clear the queue and return all events', () => {

src/events/bounded-event-queue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export class BoundedEventQueue<T> implements NamedEventQueue<T> {
1616
}
1717

1818
splice(count: number): T[] {
19-
return this.queue.splice(count);
19+
return this.queue.splice(0, count);
2020
}
2121

2222
isEmpty(): boolean {

0 commit comments

Comments
 (0)