@aller/blink
Version:
A library for tracking user behaviour.
444 lines • 14.6 kB
JavaScript
"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