diff --git a/bower.json b/bower.json index 6921f42..db260d5 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "bulbs-public-analytics-manager", - "version": "0.1.1", + "version": "0.1.2", "authors": [ "Andrew Kos ", "Chris Sprehe ", diff --git a/src/analytics-manager.js b/src/analytics-manager.js index 08bd6ce..a19fa4c 100644 --- a/src/analytics-manager.js +++ b/src/analytics-manager.js @@ -106,9 +106,24 @@ var AnalyticsManager = { return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); }, + getNodeHash: function(hash) { + if (hash) { + var re = RegExp('#\[A-Za-z0-9-]+'); + var results = hash.match(re); + if (results && hash.search(re) === 0) { + return results[0]; + } + } + }, + pathInfo: function () { var pathInfo; - var path = this.getWindowLocation().pathname; + var windowLocation = this.getWindowLocation(); + var path = windowLocation.pathname; + var hash = this.getNodeHash(windowLocation.hash); + if (hash) { + path += hash; + } var searchQuery = this.getParameterByName(this._settings.searchQueryParam); if (searchQuery.length) { pathInfo = path + '?' + this._settings.searchQueryParam + '=' + searchQuery; diff --git a/src/analytics-manager.spec.js b/src/analytics-manager.spec.js index 1cefea5..e0a01ac 100644 --- a/src/analytics-manager.spec.js +++ b/src/analytics-manager.spec.js @@ -324,7 +324,7 @@ describe("AnalyticsManager", function() { it("strips all parameters except the specified query parameter", function () { var pathName = '/search'; var queryParam = 'q'; - var searchQuery = 'depp' + var searchQuery = 'depp'; var goodQuery = queryParam + '=' + searchQuery; subject.init({ @@ -360,5 +360,66 @@ describe("AnalyticsManager", function() { expect(path).to.equal(pathName); }); + + it("should include any appended string formatted as a (#1) following the path preceding the query paramters", function() { + var pathName = '/clickventure'; + var hash = '#5'; + var queryParam = '?killme=kos'; + + subject.init({ + site: 'testsite', + searchQueryParam: queryParam + }); + + sandbox.stub(subject, 'getWindowLocation').returns({ + pathname: pathName, + search: pathName, + hash: hash + queryParam + }); + + var path = subject.pathInfo(); + expect(path).to.equal(pathName + hash); + }); + + it("should include any appended string formatted as a (#1) following the path preceding the query paramters", function() { + var pathName = '/clickventure'; + var hash = '#mambo-numba-5'; + var queryParam = '?killme=kos'; + + subject.init({ + site: 'testsite', + searchQueryParam: queryParam + }); + + sandbox.stub(subject, 'getWindowLocation').returns({ + pathname: pathName, + search: pathName, + hash: hash + queryParam + }); + + var path = subject.pathInfo(); + expect(path).to.equal(pathName + hash); + }); + + it("should exclude any appended string formatted as a (#1) following the path and follwing the query paramters", function() { + var pathName = '/clickventure'; + var queryParam = '?mygarbage=fun#5'; + + subject.init({ + site: 'testsite', + searchQueryParam: queryParam, + }); + + sandbox.stub(subject, 'getWindowLocation').returns({ + pathname: pathName, + search: pathName, + hash: queryParam + }); + + var path = subject.pathInfo(); + + expect(path).to.equal(pathName); + }); + }); });