DefinitelyTyped/google.analytics/google.analytics-tests.ts
Andy Hanson 9608cfb4ef Fix packages that used 'jasmine' for tests.
Jasmine requires TypeScript 2.1, but since these packages only use it for tests, they should stop depending on it and stay TS2.0 compatible.
Similar for 'react'.
2017-02-23 08:47:29 -08:00

104 lines
4.0 KiB
TypeScript

declare function describe(desc: string, fn: () => void): void;
declare function it(desc: string, fn: () => void): void;
describe("tester Google Analytics Tracker _gat object", () => {
it("can set ga script element", () => {
gaClassic = <HTMLScriptElement> document.createElement("script");
});
it("can set aync to true", () => {
gaClassic.async = true;
});
it("can set src to string url", () => {
gaClassic.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
});
it("can set type", () => {
gaClassic.type = 'text/javascript';
});
});
describe('UniversalAnalytics', () => {
it('should exercise all ga APIs', () => {
ga('create', 'UA-65432-1', 'auto');
ga('create', 'UA-65432-1', {some: 'config'});
ga('create', 'UA-65432-1', 'auto', {some: 'config'});
ga('send', 'pageview');
ga('send', 'pageview', {some: 'details'});
ga('send', 'event', 'Videos', 'play', 'Fall Campaign');
ga('send', {hitType: 'event', eventCategory: 'Videos', eventAction: 'play', eventLabel: 'Fall Campaign'});
ga('send', 'event', 'Videos', 'play', 'Fall Campaign', {nonInteraction: true});
ga('send', 'pageview', '/page');
ga('send', 'social', {socialNetwork: 'facebook', socialAction: 'like', socialTarget: 'http://foo.com'});
ga('send', 'social', {socialNetwork: 'google+', socialAction: 'plus', socialTarget: 'http://foo.com'});
ga('send', 'timing', {timingCategory: 'category', timingVar: 'lookup', timingValue: 123});
ga('send', 'timing', {timingCategory: 'category', timingVar: 'lookup', timingValue: 123, timingLabel: 'label'});
ga('trackerName.send', 'event', 'load');
ga.create('UA-65432-1', 'auto');
ga.create('UA-65432-1', {some: 'config'});
ga.create('UA-65432-1', 'auto', {some: 'config'});
ga.getAll();
ga.getByName('aNamedTracker');
});
it('should excercise Tracker APIs', () => {
var tracker: UniversalAnalytics.Tracker = ga.create('UA-65432-1', 'auto');
var aString: string = tracker.get<string>('aString');
var aNumber: number = tracker.get<number>('aNumber');
var anObject: {} = tracker.get<{}>('anObject');
tracker.send('pageview');
tracker.send('pageview', {some: 'details'});
tracker.set('aString', aString);
tracker.set('aNumber', aNumber);
tracker.set('anObject', anObject);
});
});
describe("tester Google Analytics Tracker _gat object", () => {
it("can create _createTracker", () => {
_gat._createTracker('UA-65432-1');
_gat._createTracker('UA-65432-2', 't2');
});
it("can create _getTrackerByName", () => {
_gat._getTrackerByName();
_gat._getTrackerByName('t2');
});
it("can create _anonymizeIp", () => {
_gat._anonymizeIp();
});
});
describe("tester Google Analytics Code _gaq object", () => {
it("can create _push", () => {
_gaq.push(['_setAccount', 'UA-XXXXXXX-YY']);
_gaq.push(['_gat._anonymizeIp']);
_gaq.push(['_trackPageview']);
_gaq.push(() => {
var tracker = _gat._getTrackerByName('UA-65432-1');
tracker._trackPageview();
}
);
});
});
describe("tester Google Analytics Code Tracker object", () => {
it("can create Tracker object and call methods", () => {
var tracker = _gat._getTrackerByName('UA-65432-1');
tracker._trackPageview();
tracker._getName();
tracker._getAccount();
tracker._getVersion();
tracker._getVisitorCustomVar(0);
tracker._setAccount();
tracker._setCustomVar(0, "name", "value", 1);
tracker._setSampleRate("80");
tracker._setSessionCookieTimeout(1800000);
tracker._setSiteSpeedSampleRate(5);
tracker._setVisitorCookieTimeout(63072000000);
tracker._trackPageLoadTime();
});
});