diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts new file mode 100644 index 0000000000..4274b633ec --- /dev/null +++ b/google.analytics/ga-tests.ts @@ -0,0 +1,76 @@ +/// +/// + +describe("tester Google Analytics Tracker _gat object", () => { + + it("can set ga script element", () => { + ga = document.createElement("script"); + }); + + it("can set aync to true", () => { + ga.async = true; + }); + + it("can set src to string url", () => { + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';; + }); + + it("can set type", () => { + ga.type = 'text/javascript'; + }); + + +}); + +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(); + }); +}); + + + diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts new file mode 100644 index 0000000000..b24bc6649e --- /dev/null +++ b/google.analytics/ga.d.ts @@ -0,0 +1,41 @@ +// Type definitions for Google Analytics +// Project: https://developers.google.com/analytics/devguides/collection/gajs/ +// Definitions by: Ronnie Haakon Hegelund +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +class Tracker { + _trackPageview(): void; + _getName(): string; + _getAccount(): string; + _getVersion(): string; + _getVisitorCustomVar(index: number); string; + _setAccount(): string; + _setCustomVar(index: number, name: string, value: string, opt_scope?: number): bool; + _setSampleRate(newRate: string): void; + _setSessionCookieTimeout(cookieTimeoutMillis: number): void; + _setSiteSpeedSampleRate(sampleRate: number): void; + _setVisitorCookieTimeout(milliseconds: number): void; + _trackPageLoadTime(): void; +} + +interface GoogleAnalyticsCode { + push(commandArray: string[]): void; + push(Function): void; +} + +interface GoogleAnalyticsTracker { + _getTracker(account: string): Tracker; + _createTracker(opt_account: string, opt_name?: string): Tracker; + _getTrackerByName(opt_name?: string): Tracker; + _anonymizeIp(): void; +} + +interface GoogleAnalytics { + type: string; + src: string; + async: bool; +} + +declare var ga: GoogleAnalytics; +declare var _gaq: GoogleAnalyticsCode; +declare var _gat: GoogleAnalyticsTracker;