Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/diffs/utils/queue_events_spec.js')
-rw-r--r--spec/frontend/diffs/utils/queue_events_spec.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/frontend/diffs/utils/queue_events_spec.js b/spec/frontend/diffs/utils/queue_events_spec.js
new file mode 100644
index 00000000000..007748d8b2c
--- /dev/null
+++ b/spec/frontend/diffs/utils/queue_events_spec.js
@@ -0,0 +1,36 @@
+import api from '~/api';
+import { DEFER_DURATION } from '~/diffs/constants';
+import { queueRedisHllEvents } from '~/diffs/utils/queue_events';
+
+jest.mock('~/api', () => ({
+ trackRedisHllUserEvent: jest.fn(),
+}));
+
+describe('diffs events queue', () => {
+ describe('queueRedisHllEvents', () => {
+ it('does not dispatch the event immediately', () => {
+ queueRedisHllEvents(['know_event']);
+ expect(api.trackRedisHllUserEvent).not.toHaveBeenCalled();
+ });
+
+ it('does dispatch the event after the defer duration', () => {
+ queueRedisHllEvents(['know_event']);
+ jest.advanceTimersByTime(DEFER_DURATION + 1);
+ expect(api.trackRedisHllUserEvent).toHaveBeenCalled();
+ });
+
+ it('increase defer duration based on the provided events count', () => {
+ let deferDuration = DEFER_DURATION + 1;
+ const events = ['know_event_a', 'know_event_b', 'know_event_c'];
+ queueRedisHllEvents(events);
+
+ expect(api.trackRedisHllUserEvent).not.toHaveBeenCalled();
+
+ events.forEach((event, index) => {
+ jest.advanceTimersByTime(deferDuration);
+ expect(api.trackRedisHllUserEvent).toHaveBeenLastCalledWith(event);
+ deferDuration *= index + 1;
+ });
+ });
+ });
+});