blob: ec128077dac2c76830b97490fb88c94c8c3c5c32 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License 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 {expect} from 'chai';
import 'global-jsdom/register'
import {createEnvFromFile, sleep} from './testUtils';
import {timeStampScale} from '../src/getInitialSettings.js';
describe('getInitialSettings', () => {
describe('timeStampScale', () => {
it('no event.timestamp', () => {
const e = {};
const ts = timeStampScale(e);
expect(ts(e.timeStamp)).to.be.closeTo(Date.now(), 50);
});
it('zero', () => {
const e = {timeStamp: 0};
const ts = timeStampScale(e);
expect(ts(e.timeStamp)).to.be.closeTo(Date.now(), 50);
});
it('epoch milliseconds', () => {
const e = {timeStamp: 1451606400000};
const ts = timeStampScale(e);
expect(ts(e.timeStamp)).to.equal(1451606400000);
});
it('epoch microseconds', () => {
const e = {timeStamp: 1451606400000000};
const ts = timeStampScale(e);
expect(ts(e.timeStamp)).to.equal(1451606400000);
});
// Currently unsupported in jsdom
// Chrome specific -- manual testing is clear;
it('performance navigation time', () => {
const terriblePolyfill = {timing: {navigationStart: Date.now()}};
const originalPerformance = global.performance;
global.performance = terriblePolyfill
const e = {timeStamp: 1};
const ts = timeStampScale(e);
expect(ts(e.timeStamp)).to.equal(performance.timing.navigationStart + e.timeStamp);
global.performance = originalPerformance;
});
});
describe('getInitialSettings', () => {
it('fetches all settings from a script tag', async () => {
const dom = await createEnvFromFile('getInitialSettings_fetchAll.html')
const config = dom.window.userale.options();
expect(config).to.have.property('autostart', true);
expect(config).to.have.property('url', 'http://test.com');
expect(config).to.have.property('transmitInterval', 100);
expect(config).to.have.property('logCountThreshold', 10);
expect(config).to.have.property('userId', 'testuser');
expect(config).to.have.property('version', '1.0.0');
expect(config).to.have.property('logDetails', false);
expect(config).to.have.property('resolution', 100);
expect(config).to.have.property('toolName', 'testtool');
dom.window.close()
});
it('grabs user id from params', async () => {
const dom = await createEnvFromFile('getInitialSettings_userParam.html', {
url: 'file://' + __dirname + '../' + '?user=fakeuser'
});
const config = dom.window.userale.options();
expect(config.userId).to.equal('fakeuser');
dom.window.close()
});
});
});