1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-02 22:52:21 +01:00
Sylvain 139d7d9f0f [bug] Google Analytics not loaded
- angular-google-analytics plugin update from 0.0.15 to 1.1.7
- google analytics config moved into secrets.yml/production
2016-05-24 14:53:07 +02:00

202 lines
6.9 KiB
JavaScript

/* global afterEach, before, beforeEach, describe, document, expect, inject, it, module, spyOn */
'use strict';
describe('offline mode', function () {
beforeEach(module('angular-google-analytics'));
beforeEach(module(function (AnalyticsProvider) {
AnalyticsProvider
.setAccount('UA-XXXXXX-xx')
.logAllCalls(true)
.enterTestMode();
}));
afterEach(inject(function (Analytics) {
Analytics.log.length = 0; // clear log
}));
describe('with universal analytics', function () {
beforeEach(module(function (AnalyticsProvider) {
AnalyticsProvider.useAnalytics(true);
}));
describe('at startup', function () {
beforeEach(module(function (AnalyticsProvider) {
AnalyticsProvider.startOffline(true);
}));
it('should have offline set to true', function () {
inject(function (Analytics) {
expect(Analytics.offline()).toBe(true);
});
});
it('should have delay script tag set to true', function () {
inject(function (Analytics) {
expect(Analytics.configuration.delayScriptTag).toBe(true);
});
});
it('should not have sent any commands while offline', function () {
inject(function (Analytics) {
Analytics.trackPage('/page/here');
expect(Analytics.log.length).toBe(0);
});
});
it('should send everything when script is added and reset to online', function () {
inject(function (Analytics, $window) {
Analytics.createAnalyticsScriptTag();
Analytics.offline(false);
expect(Analytics.log.length).toBe(3);
expect(Analytics.log[0]).toEqual(['inject', '//www.google-analytics.com/analytics.js']);
expect(Analytics.log[1]).toEqual(['create', 'UA-XXXXXX-xx', { cookieDomain: 'auto' }]);
expect(Analytics.log[2]).toEqual(['send', 'pageview', '']);
});
});
});
it('should be online by default', function () {
inject(function (Analytics) {
expect(Analytics.offline()).toBe(false);
});
});
it('should respect being set to offline', function () {
inject(function (Analytics) {
expect(Analytics.offline()).toBe(false);
Analytics.offline(true);
expect(Analytics.offline()).toBe(true);
});
});
it('should respect being reset to online', function () {
inject(function (Analytics) {
expect(Analytics.offline()).toBe(false);
Analytics.offline(true);
expect(Analytics.offline()).toBe(true);
Analytics.offline(false);
expect(Analytics.offline()).toBe(false);
});
});
it('should not send any commands while offline', function () {
inject(function (Analytics) {
Analytics.log.length = 0; // clear log
Analytics.offline(true);
Analytics.trackPage('/page/here');
expect(Analytics.log.length).toBe(0);
});
});
it('should send all queued commands when reset to online', function () {
inject(function (Analytics) {
Analytics.log.length = 0; // clear log
Analytics.offline(true);
Analytics.trackPage('/page/here');
expect(Analytics.log.length).toBe(0);
Analytics.offline(false);
expect(Analytics.log.length).toBe(1);
expect(Analytics.log[0]).toEqual(['send', 'pageview', { page : '/page/here', title : '' }]);
});
});
});
describe('with classic analytics', function () {
beforeEach(module(function (AnalyticsProvider) {
AnalyticsProvider.useAnalytics(false);
}));
describe('at startup', function () {
beforeEach(module(function (AnalyticsProvider) {
AnalyticsProvider.startOffline(true);
}));
it('should have offline set to true', function () {
inject(function (Analytics) {
expect(Analytics.offline()).toBe(true);
});
});
it('should have delay script tag set to true', function () {
inject(function (Analytics) {
expect(Analytics.configuration.delayScriptTag).toBe(true);
});
});
it('should not have sent any commands while offline', function () {
inject(function (Analytics, $window) {
$window._gaq.length = 0; // clear queue
Analytics.trackPage('/page/here');
expect($window._gaq.length).toBe(0);
});
});
it('should send everything when script is added and reset to online', function () {
inject(function (Analytics, $window) {
$window._gaq.length = 0; // clear queue
Analytics.createScriptTag();
Analytics.offline(false);
expect(Analytics.log.length).toBe(3);
expect(Analytics.log[0]).toEqual(['inject', 'http://www.google-analytics.com/ga.js']);
expect(Analytics.log[1]).toEqual(['_setAccount', 'UA-XXXXXX-xx']);
expect(Analytics.log[2]).toEqual(['_trackPageview']);
expect($window._gaq.length).toBe(Analytics.log.length - 1);
expect($window._gaq[0]).toEqual(Analytics.log[1]);
expect($window._gaq[1]).toEqual(Analytics.log[2]);
});
});
});
it('should be online by default', function () {
inject(function (Analytics) {
expect(Analytics.offline()).toBe(false);
});
});
it('should respect being set to offline', function () {
inject(function (Analytics) {
expect(Analytics.offline()).toBe(false);
Analytics.offline(true);
expect(Analytics.offline()).toBe(true);
});
});
it('should respect being reset to online', function () {
inject(function (Analytics) {
expect(Analytics.offline()).toBe(false);
Analytics.offline(true);
expect(Analytics.offline()).toBe(true);
Analytics.offline(false);
expect(Analytics.offline()).toBe(false);
});
});
it('should not send any commands while offline', function () {
inject(function (Analytics, $window) {
$window._gaq.length = 0; // clear queue
Analytics.offline(true);
Analytics.trackPage('/page/here');
expect($window._gaq.length).toBe(0);
});
});
it('should send all queued commands when reset to online', function () {
inject(function (Analytics, $window) {
Analytics.log.length = 0; // clear log
$window._gaq.length = 0; // clear queue
Analytics.offline(true);
Analytics.trackPage('/page/here');
expect(Analytics.log.length).toBe(0);
expect($window._gaq.length).toBe(0);
Analytics.offline(false);
expect(Analytics.log.length).toBe(2);
expect(Analytics.log[0]).toEqual(['_set', 'title', '']);
expect(Analytics.log[1]).toEqual(['_trackPageview', '/page/here']);
expect($window._gaq.length).toBe(Analytics.log.length);
expect($window._gaq[0]).toEqual(Analytics.log[0]);
expect($window._gaq[1]).toEqual(Analytics.log[1]);
});
});
});
});