From b2eabd187381dd62e2a9f9cf0464af8616902479 Mon Sep 17 00:00:00 2001 From: Pat Kujawa Date: Mon, 13 Oct 2014 14:28:08 -0600 Subject: [PATCH] Add tests and scope new universal analytics to its own module. Fix errors from npm test and include all top-level APIs. --- google.analytics/ga-tests.ts | 25 ++++++++++++++++++----- google.analytics/ga.d.ts | 39 +++++++++++++++++++++++------------- 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts index 23edc0fe8..4b5f200c4 100644 --- a/google.analytics/ga-tests.ts +++ b/google.analytics/ga-tests.ts @@ -1,15 +1,30 @@ /// /// -describe('UniversalGoogleAnalytics', () => { - it('should be a function', () => { - ga('create', 'UA-65432-1'); +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'); - }); - it('should have methods', () => { + 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", () => { diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index f711f894e..e58074bb4 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -1,6 +1,6 @@ -// Type definitions for Google Analytics +// Type definitions for Google Analytics (Classic and Universal) // Project: https://developers.google.com/analytics/devguides/collection/gajs/ -// Definitions by: Ronnie Haakon Hegelund +// Definitions by: Ronnie Haakon Hegelund , Pat Kujawa // Definitions: https://github.com/borisyankov/DefinitelyTyped declare class Tracker { @@ -30,19 +30,30 @@ interface GoogleAnalyticsTracker { _anonymizeIp(): void; } -interface UniversalGoogleAnalytics { - (command: string, trackingId:string, opt_configObject?: {}): UniversalTracker; - (command: string, ...rest): void; - getAll(): UniversalTracker[]; - getByName(trackerName: string): UniversalTracker; +declare module UniversalAnalytics { + // https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference + + interface ga { + (command: string, trackingId: string, opt_configObject?: {}): UniversalAnalytics.Tracker; + (command: string, trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; + (command: string, hitDetails: {}): void; + (command: string, hitType: 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; + } } -interface UniversalTracker { - get(...any): any; - send(...any): any; - set(...any): any; -} - -declare var ga: UniversalGoogleAnalytics; +declare var ga: UniversalAnalytics.ga; declare var _gaq: GoogleAnalyticsCode; declare var _gat: GoogleAnalyticsTracker;