1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-07 22:46:13 +01:00
fab-manager/vendor/assets/components/angular-google-analytics/test/unit/route-reading.js
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

166 lines
6.0 KiB
JavaScript

/* global afterEach, before, beforeEach, describe, document, expect, inject, it, module, spyOn */
'use strict';
describe('Reading from $route service', 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
}));
it('should not activate $route reading', function() {
inject(function(Analytics) {
expect(Analytics.configuration.readFromRoute).toBe(false);
});
});
describe('without $route service available', function() {
beforeEach(module(function(AnalyticsProvider){
AnalyticsProvider.readFromRoute(true);
}));
it('should log warning if service is missing', function() {
inject(function($log) {
spyOn($log, 'warn');
inject(function(Analytics) {
expect($log.warn).toHaveBeenCalledWith('$route service is not available. Make sure you have included ng-route in your application dependencies.');
});
});
});
});
describe('after setting readFromRoute', function() {
beforeEach(module(function(AnalyticsProvider, $provide){
AnalyticsProvider.readFromRoute(true);
$provide.service('$route', function () {
this.routes = {
someroute: { pageTrack: '/some' },
otherroute: { }
};
});
}));
it('should activate $route reading', function(){
inject(function(Analytics){
expect(Analytics.configuration.readFromRoute).toBe(true);
});
});
it('should read \'/someroute\' from routes object', function(){
inject(function(Analytics, $route){
$route.current = $route.routes.someroute;
expect(Analytics.getUrl()).toBe('/some');
});
});
it('should fallback to url for \'/otherroute\' without \'pageTrack\' property', function(){
inject(function(Analytics, $route, $location){
$route.current = $route.routes.otherroute;
$location.url('/otherroute');
expect(Analytics.getUrl()).toBe('/otherroute');
});
});
it('should fallback to url for \'/undefinedroute\' which is not present in $route config', function(){
inject(function(Analytics, $location) {
$location.url('/undefinedroute');
expect(Analytics.getUrl()).toBe('/undefinedroute');
});
});
});
describe('after setting readFromRoute for classic analytics', function() {
beforeEach(module(function(AnalyticsProvider, $provide){
AnalyticsProvider.readFromRoute(true)
.useAnalytics(false);
$provide.service('$route', function () { });
}));
it('should not track undefined routes', function() {
inject(function(Analytics, $window, $rootScope) {
$window._gaq.length = 0; // clear queue
$rootScope.$broadcast('$routeChangeSuccess');
expect($window._gaq.length).toBe(0);
});
});
it('should not track routes without template', function() {
inject(function(Analytics, $window, $rootScope, $route) {
$route.current = { };
$window._gaq.length = 0; // clear queue
$rootScope.$broadcast('$routeChangeSuccess');
expect($window._gaq.length).toBe(0);
});
});
it('should not track routes with \'doNotTrack\' attribute', function() {
inject(function(Analytics, $window, $rootScope, $route) {
$route.current = { templateUrl: '/myTemplate', doNotTrack: true };
$window._gaq.length = 0; // clear queue
$rootScope.$broadcast('$routeChangeSuccess');
expect($window._gaq.length).toBe(0);
});
});
it('should track routes with a defined template (no redirect)', function() {
inject(function(Analytics, $window, $rootScope, $route) {
$route.current = { templateUrl: '/myTemplate', pageTrack: '/myTrack' };
$window._gaq.length = 0; // clear queue
$rootScope.$broadcast('$routeChangeSuccess');
expect($window._gaq.length).toBe(2);
expect($window._gaq[0]).toEqual(['_set', 'title', '']);
expect($window._gaq[1]).toEqual(['_trackPageview', '/myTrack']);
});
});
});
describe('after setting readFromRoute for universal analytics', function() {
beforeEach(module(function(AnalyticsProvider, $provide){
AnalyticsProvider.readFromRoute(true)
.useAnalytics(true);
$provide.service('$route', function () { });
}));
it('should not track undefined routes', function() {
inject(function(Analytics, $rootScope) {
Analytics.log.length = 0; // clear queue
$rootScope.$broadcast('$routeChangeSuccess');
expect(Analytics.log.length).toBe(0);
});
});
it('should not track routes without template', function() {
inject(function(Analytics, $rootScope, $route) {
$route.current = { };
Analytics.log.length = 0; // clear queue
$rootScope.$broadcast('$routeChangeSuccess');
expect(Analytics.log.length).toBe(0);
});
});
it('should not track routes with \'doNotTrack\' attribute', function() {
inject(function(Analytics, $rootScope, $route) {
$route.current = { templateUrl: '/myTemplate', doNotTrack: true };
Analytics.log.length = 0; // clear queue
$rootScope.$broadcast('$routeChangeSuccess');
expect(Analytics.log.length).toBe(0);
});
});
it('should track routes with a defined template (no redirect)', function() {
inject(function(Analytics, $window, $rootScope, $route) {
$route.current = { templateUrl: '/myTemplate', pageTrack: '/myTrack' };
Analytics.log.length = 0; // clear queue
$rootScope.$broadcast('$routeChangeSuccess');
expect(Analytics.log.length).toBe(1);
expect(Analytics.log[0]).toEqual(['send', 'pageview', { page: '/myTrack', title: '' }]);
});
});
});
});