diff --git a/packages/analytics/__tests__/Analytics-unit-test.ts b/packages/analytics/__tests__/Analytics.test.ts similarity index 100% rename from packages/analytics/__tests__/Analytics-unit-test.ts rename to packages/analytics/__tests__/Analytics.test.ts diff --git a/packages/analytics/__tests__/Providers/AWSKinesisFirehoseProvider-unit-test.ts b/packages/analytics/__tests__/Providers/AWSKinesisFirehoseProvider.test.ts similarity index 100% rename from packages/analytics/__tests__/Providers/AWSKinesisFirehoseProvider-unit-test.ts rename to packages/analytics/__tests__/Providers/AWSKinesisFirehoseProvider.test.ts diff --git a/packages/analytics/__tests__/Providers/AWSKinesisProvider-unit-test.ts b/packages/analytics/__tests__/Providers/AWSKinesisProvider.test.ts similarity index 100% rename from packages/analytics/__tests__/Providers/AWSKinesisProvider-unit-test.ts rename to packages/analytics/__tests__/Providers/AWSKinesisProvider.test.ts diff --git a/packages/analytics/__tests__/Providers/AWSPinpointProvider-unit-test.ts b/packages/analytics/__tests__/Providers/AWSPinpointProvider.test.ts similarity index 100% rename from packages/analytics/__tests__/Providers/AWSPinpointProvider-unit-test.ts rename to packages/analytics/__tests__/Providers/AWSPinpointProvider.test.ts diff --git a/packages/analytics/__tests__/Providers/AmazonPersonalizeProvider-unit-test.ts b/packages/analytics/__tests__/Providers/AmazonPersonalizeProvider.test.ts similarity index 100% rename from packages/analytics/__tests__/Providers/AmazonPersonalizeProvider-unit-test.ts rename to packages/analytics/__tests__/Providers/AmazonPersonalizeProvider.test.ts diff --git a/packages/analytics/__tests__/Providers/EventBuffer.test.ts b/packages/analytics/__tests__/Providers/EventBuffer.test.ts new file mode 100644 index 00000000000..537ebe8a06d --- /dev/null +++ b/packages/analytics/__tests__/Providers/EventBuffer.test.ts @@ -0,0 +1,67 @@ +/* + * Copyright 2017-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +import EventBuffer from '../../src/Providers/EventBuffer'; + +const DEFAULT_CONFIG = { + bufferSize: 1000, + flushSize: 100, + flushInterval: 5 * 1000, // 5s + resendLimit: 5, +}; + +const EVENT_OBJECT = { + params: { + event: { + eventId: 'event-id', + name: 'name', + attributes: 'attributes', + metrics: 'metrics', + session: {}, + immediate: false, + }, + timestamp: '2022-06-22T17:24:58Z', + config: { + appId: 'app-id', + endpointId: 'endpoint-id', + region: 'region', + resendLimit: 5, + }, + credentials: {}, + resendLimit: 5, + }, + handlers: { + resolve: jest.fn(), + reject: jest.fn(), + }, +}; + +describe('EventBuffer', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('can be constructed', () => { + const buffer = new EventBuffer({}, DEFAULT_CONFIG); + expect(buffer).toBeDefined(); + }); + + test('does not allow buffer size to be exceeded', () => { + const config = { ...DEFAULT_CONFIG, bufferSize: 1 }; + const buffer = new EventBuffer({}, config); + buffer.push(EVENT_OBJECT); + buffer.push(EVENT_OBJECT); + expect(EVENT_OBJECT.handlers.reject).toBeCalledWith( + Error('Exceeded the size of analytics events buffer') + ); + }); +}); diff --git a/packages/analytics/__tests__/trackers/EventTracker-test.ts b/packages/analytics/__tests__/trackers/EventTracker.test.ts similarity index 100% rename from packages/analytics/__tests__/trackers/EventTracker-test.ts rename to packages/analytics/__tests__/trackers/EventTracker.test.ts diff --git a/packages/analytics/__tests__/trackers/PageViewTracker-test.ts b/packages/analytics/__tests__/trackers/PageViewTracker.test.ts similarity index 100% rename from packages/analytics/__tests__/trackers/PageViewTracker-test.ts rename to packages/analytics/__tests__/trackers/PageViewTracker.test.ts diff --git a/packages/analytics/__tests__/trackers/SessionTracker-rn-test.ts b/packages/analytics/__tests__/trackers/SessionTracker-rn.test.ts similarity index 100% rename from packages/analytics/__tests__/trackers/SessionTracker-rn-test.ts rename to packages/analytics/__tests__/trackers/SessionTracker-rn.test.ts diff --git a/packages/analytics/__tests__/trackers/SessionTracker-test.ts b/packages/analytics/__tests__/trackers/SessionTracker.test.ts similarity index 100% rename from packages/analytics/__tests__/trackers/SessionTracker-test.ts rename to packages/analytics/__tests__/trackers/SessionTracker.test.ts diff --git a/packages/analytics/__tests__/utils-test.ts b/packages/analytics/__tests__/utils.test.ts similarity index 100% rename from packages/analytics/__tests__/utils-test.ts rename to packages/analytics/__tests__/utils.test.ts diff --git a/packages/analytics/src/Providers/EventBuffer.ts b/packages/analytics/src/Providers/EventBuffer.ts index 3f058209ee5..8b9363525f7 100644 --- a/packages/analytics/src/Providers/EventBuffer.ts +++ b/packages/analytics/src/Providers/EventBuffer.ts @@ -43,7 +43,8 @@ export default class EventsBuffer { } public push(event: EventObject) { - if (this._buffer > this._config.bufferSize) { + // if the buffer is currently at the configured limit, pushing would exceed it + if (this._buffer.length >= this._config.bufferSize) { logger.debug('Exceeded analytics events buffer size'); return event.handlers.reject( new Error('Exceeded the size of analytics events buffer')