UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

444 lines 14.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var video_event_time_1 = require("../video-event-time"); describe('calculateVideoEventTime', function () { it('should calculate the total (complex case)', function () { var times = [ { type: 'start', time: new Date(0, 0, 0, 0, 0), videoId: 'test-video-id', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, { type: 'stop', time: new Date(0, 0, 0, 0, 2), videoId: 'test-video-id', reason: 'complete', muted: true, position: 110, volume: 50, playerId: 'test-player-id', }, { type: 'start', time: new Date(0, 0, 0, 0, 3), videoId: 'test-video-id', reason: 'interaction', muted: false, position: 30, volume: 95, playerId: 'test-player-id', }, { type: 'stop', time: new Date(0, 0, 0, 0, 5), videoId: 'test-video-id', reason: 'pause', muted: true, position: 90, volume: 10, playerId: 'test-player-id', }, ]; var players = { 'test-player-id': [ { type: 'shown', reason: 'viewable', time: new Date(0, 0, 0, 0, 0), muted: true, position: 90, volume: 10, }, { type: 'hidden', time: new Date(0, 0, 0, 0, 1), reason: 'tabclose', muted: true, position: 90, volume: 10, }, { type: 'shown', reason: 'tabactive', time: new Date(0, 0, 0, 0, 4), muted: false, position: 90, volume: 10, }, ], }; var inscreen = video_event_time_1.calculateVideoEventTime(times, 'test-video-id', players, 'test-player-id'); var expected = [ { watchTime: 60000, startEvent: { type: 'start', videoId: 'test-video-id', reason: 'autostart', muted: true, position: 0, volume: 50, time: new Date(0, 0, 0, 0, 0), playerId: 'test-player-id', }, stopEvent: { type: 'hidden', time: new Date(0, 0, 0, 0, 1), reason: 'tabclose', muted: true, position: 90, volume: 10, }, }, { watchTime: 60000, startEvent: { type: 'shown', time: new Date(0, 0, 0, 0, 4), reason: 'tabactive', muted: false, position: 90, volume: 10, }, stopEvent: { type: 'stop', time: new Date(0, 0, 0, 0, 5), videoId: 'test-video-id', reason: 'pause', muted: true, position: 90, volume: 10, playerId: 'test-player-id', }, }, ]; expect(inscreen).toEqual(expected); }); it('multiple starts do not make any impact on calculation', function () { var times = [ { type: 'start', time: new Date(0, 0, 0, 0, 0), videoId: 'test-video-id', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, { type: 'start', time: new Date(0, 0, 0, 0, 1), videoId: 'test-video-id', reason: 'interaction', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, { type: 'stop', time: new Date(0, 0, 0, 0, 2), videoId: 'test-video-id', reason: 'pause', muted: true, position: 40, volume: 50, playerId: 'test-player-id', }, ]; var players = { 'test-player-id': [ { type: 'shown', reason: 'viewable', time: new Date(0, 0, 0, 0, 0), muted: true, position: 90, volume: 10, }, ], }; var inscreen = video_event_time_1.calculateVideoEventTime(times, 'test-video-id', players, 'test-player-id'); var expected = [ { watchTime: 120000, startEvent: { type: 'start', time: new Date(0, 0, 0, 0, 0), videoId: 'test-video-id', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, stopEvent: { type: 'stop', time: new Date(0, 0, 0, 0, 2), videoId: 'test-video-id', reason: 'pause', muted: true, position: 40, volume: 50, playerId: 'test-player-id', }, }, ]; expect(inscreen).toEqual(expected); }); it('should count different video ids as separate intervals', function () { var times = [ { type: 'start', time: new Date(0, 0, 0, 0, 1), videoId: 'vid-1', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, { type: 'start', time: new Date(0, 0, 0, 0, 1), videoId: 'vid-2', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, { type: 'stop', time: new Date(0, 0, 0, 0, 2), videoId: 'vid-1', reason: 'exit', muted: true, position: 49, volume: 50, playerId: 'test-player-id', }, { type: 'stop', time: new Date(0, 0, 0, 0, 3), videoId: 'vid-2', reason: 'exit', muted: true, position: 90, volume: 50, playerId: 'test-player-id', }, ]; var players = { 'test-player-id': [ { type: 'shown', reason: 'viewable', time: new Date(0, 0, 0, 0, 0), muted: true, position: 90, volume: 10, }, ], }; var inscreenVid1 = video_event_time_1.calculateVideoEventTime(times, 'vid-1', players, 'test-player-id'); var inscreenVid2 = video_event_time_1.calculateVideoEventTime(times, 'vid-2', players, 'test-player-id'); var expectedVid1 = [ { watchTime: 60000, startEvent: { type: 'start', time: new Date(0, 0, 0, 0, 1), videoId: 'vid-1', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, stopEvent: { type: 'stop', time: new Date(0, 0, 0, 0, 2), videoId: 'vid-1', reason: 'exit', muted: true, position: 49, volume: 50, playerId: 'test-player-id', }, }, ]; var expectedVid2 = [ { watchTime: 120000, startEvent: { type: 'start', time: new Date(0, 0, 0, 0, 1), videoId: 'vid-2', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, stopEvent: { type: 'stop', time: new Date(0, 0, 0, 0, 3), videoId: 'vid-2', reason: 'exit', muted: true, position: 90, volume: 50, playerId: 'test-player-id', }, }, ]; expect(inscreenVid1).toEqual(expectedVid1); expect(inscreenVid2).toEqual(expectedVid2); }); it('should not count stop at the start', function () { var times = [ { type: 'stop', time: new Date(0, 0, 0, 0, 0), videoId: 'test-video-id', reason: 'exit', muted: true, position: 90, volume: 50, playerId: 'test-player-id', }, ]; var players = { 'test-player-id': [], }; var inscreen = video_event_time_1.calculateVideoEventTime(times, 'test-video-id', players, 'test-player-id'); expect(inscreen).toEqual([]); }); it('should not count time if video is not shown', function () { var times = [ { type: 'start', time: new Date(0, 0, 0, 0, 0), videoId: 'vid-1', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, { type: 'stop', time: new Date(0, 0, 0, 0, 1), videoId: 'vid-1', reason: 'exit', muted: true, position: 49, volume: 50, playerId: 'test-player-id', }, ]; var players = { 'test-player-id': [], }; var inscreen = video_event_time_1.calculateVideoEventTime(times, 'vid-1', players, 'test-player-id'); expect(inscreen).toEqual([]); }); it('should not count time if shown but not started', function () { var times = [ { type: 'stop', time: new Date(0, 0, 0, 0, 1), videoId: 'vid-1', reason: 'exit', muted: true, position: 49, volume: 50, playerId: 'test-player-id', }, ]; var players = { 'test-player-id': [ { type: 'shown', reason: 'viewable', muted: true, time: new Date(0, 0, 0, 0, 0), position: 90, volume: 10, }, ], }; var inscreen = video_event_time_1.calculateVideoEventTime(times, 'vid-1', players, 'test-player-id'); expect(inscreen).toEqual([]); }); it('if video started but hidden, start from shown', function () { var times = [ { type: 'start', time: new Date(0, 0, 0, 0, 1), videoId: 'vid-1', reason: 'autostart', muted: true, position: 0, volume: 50, playerId: 'test-player-id', }, { type: 'stop', time: new Date(0, 0, 0, 0, 10), videoId: 'vid-1', reason: 'exit', muted: false, position: 49, volume: 50, playerId: 'test-player-id', }, ]; var players = { 'test-player-id': [ { type: 'shown', reason: 'viewable', time: new Date(0, 0, 0, 0, 5), muted: true, position: 90, volume: 10, }, ], }; var inscreen = video_event_time_1.calculateVideoEventTime(times, 'vid-1', players, 'test-player-id'); var expected = [ { watchTime: 300000, startEvent: { type: 'shown', time: new Date(0, 0, 0, 0, 5), reason: 'viewable', muted: true, position: 90, volume: 10, }, stopEvent: { type: 'stop', time: new Date(0, 0, 0, 0, 10), muted: false, position: 49, reason: 'exit', videoId: 'vid-1', volume: 50, playerId: 'test-player-id', }, }, ]; expect(inscreen).toEqual(expected); }); }); //# sourceMappingURL=video-event-time.test.js.map