diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts index 03d5c2ed5..ba4f80dea 100644 --- a/google.analytics/ga-tests.ts +++ b/google.analytics/ga-tests.ts @@ -2,24 +2,44 @@ /// describe("tester Google Analytics Tracker _gat object", () => { - it("can set ga script element", () => { - ga = document.createElement("script"); + gaClassic = document.createElement("script"); }); - it("can set aync to true", () => { - ga.async = true; - }); - + gaClassic.async = true; + }); it("can set src to string url", () => { - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';; + gaClassic.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; }); - it("can set type", () => { - ga.type = 'text/javascript'; + 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.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('aString'); + var aNumber: number = tracker.get('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", () => { @@ -27,7 +47,7 @@ describe("tester Google Analytics Tracker _gat object", () => { _gat._createTracker('UA-65432-1'); _gat._createTracker('UA-65432-2', 't2'); }); - + it("can create _getTrackerByName", () => { _gat._getTrackerByName(); _gat._getTrackerByName('t2'); @@ -36,7 +56,7 @@ describe("tester Google Analytics Tracker _gat object", () => { it("can create _anonymizeIp", () => { _gat._anonymizeIp(); }); - + }); describe("tester Google Analytics Code _gaq object", () => { @@ -50,12 +70,12 @@ describe("tester Google Analytics Code _gaq object", () => { tracker._trackPageview(); } ); - }); + }); }); describe("tester Google Analytics Code Tracker object", () => { - it("can create Tracker object and call methods", () => { + it("can create Tracker object and call methods", () => { var tracker = _gat._getTrackerByName('UA-65432-1'); tracker._trackPageview(); tracker._getName(); @@ -71,6 +91,3 @@ describe("tester Google Analytics Code Tracker object", () => { tracker._trackPageLoadTime(); }); }); - - - diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index 032e236ee..96ba12bf9 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -1,6 +1,6 @@ -// Type definitions for Google Analytics -// Project: https://developers.google.com/analytics/devguides/collection/gajs/ -// Definitions by: Ronnie Haakon Hegelund +// Type definitions for Google Analytics (Classic and Universal) +// Project: https://developers.google.com/analytics/devguides/collection/gajs/, https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference +// Definitions by: Ronnie Haakon Hegelund , Pat Kujawa // Definitions: https://github.com/borisyankov/DefinitelyTyped declare class Tracker { @@ -36,6 +36,30 @@ interface GoogleAnalytics { async: boolean; } -declare var ga: GoogleAnalytics; +declare module UniversalAnalytics { + // https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference + + interface ga { + (command: string, poly: string, opt_poly?: {}): UniversalAnalytics.Tracker; + (command: string, trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; + (command: string, hitDetails: {}): void; + create(trackingId: string, opt_configObject?: {}): UniversalAnalytics.Tracker; + create(trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; + getAll(): UniversalAnalytics.Tracker[]; + getByName(name: string): UniversalAnalytics.Tracker; + } + + interface Tracker { + get(fieldName: string): T; + send(hitType: string, opt_fieldObject?: {}): void; + set(fieldName: string, value: string): void; + set(fieldName: string, value: {}): void; + set(fieldName: string, value: number): void; + set(fieldName: string, value: boolean): void; + } +} + +declare var gaClassic: GoogleAnalytics; +declare var ga: UniversalAnalytics.ga; declare var _gaq: GoogleAnalyticsCode; declare var _gat: GoogleAnalyticsTracker;