Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/javascript/index.php')
-rw-r--r--tests/javascript/index.php267
1 files changed, 239 insertions, 28 deletions
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index 702233d622..60d7f11558 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -5,7 +5,14 @@
<meta charset="utf-8">
<title>piwik.js: Unit Tests</title>
<?php
-require_once(dirname(__FILE__).'/SQLite.php');
+$root = dirname(__FILE__) . '/../..';
+
+try {
+ $mysql = include_once $root . "/tests/PHPUnit/bootstrap.php";
+} catch (Exception $e) {
+ echo 'alert("' . $e->getMessage() . '")';
+ $mysql = false;
+}
if(file_exists("stub.tpl")) {
echo file_get_contents("stub.tpl");
@@ -22,17 +29,8 @@ function getHeartbeatToken() {
return "<?php $token = md5(uniqid(mt_rand(), true)); echo $token; ?>";
}
<?php
-$sqlite = false;
-if (file_exists("enable_sqlite")) {
- if (class_exists('SQLite')) {
- $sqlite = true;
- }
-}
-if(!$sqlite) {
- echo 'alert("WARNING: Javascript integration tests require sqlite, \n1) ensure this PHP extension is enabled to make sure you run all tests \napt-get install php5-sqlite \n2) Then please create an empty file enable_sqlite in tests/javascript/enable_sqlite \n3) Re-execute this page and make sure this popup does not display ");';
-}
-if ($sqlite) {
+if ($mysql) {
echo '
var _paq = _paq || [];
@@ -1930,7 +1928,7 @@ function PiwikTest() {
});
test("API methods", function() {
- expect(66);
+ expect(69);
equal( typeof Piwik.addPlugin, 'function', 'addPlugin' );
equal( typeof Piwik.getTracker, 'function', 'getTracker' );
@@ -1959,6 +1957,9 @@ function PiwikTest() {
equal( typeof tracker.setCustomData, 'function', 'setCustomData' );
equal( typeof tracker.getCustomData, 'function', 'getCustomData' );
equal( typeof tracker.setCustomRequestProcessing, 'function', 'setCustomRequestProcessing' );
+ equal( typeof tracker.setCustomDimension, 'function', 'setCustomDimension' );
+ equal( typeof tracker.getCustomDimension, 'function', 'getCustomDimension' );
+ equal( typeof tracker.deleteCustomDimension, 'function', 'deleteCustomDimension' );
equal( typeof tracker.setCustomVariable, 'function', 'setCustomVariable' );
equal( typeof tracker.getCustomVariable, 'function', 'getCustomVariable' );
equal( typeof tracker.deleteCustomVariable, 'function', 'deleteCustomVariable' );
@@ -2241,12 +2242,48 @@ function PiwikTest() {
}
});
- test("Tracker setDomains() and isSiteHostName()", function() {
- expect(13);
+ test("Tracker setDomains(), isSiteHostName(), isSiteHostPath(), findConfigCookiePathToUse() and getLinkIfShouldBeProcessed()", function() {
+ expect(117);
var tracker = Piwik.getTracker();
+ var initialDomains = tracker.getDomains();
+ var domainAlias = initialDomains[0];
equal( typeof tracker.hook.test._isSiteHostName, 'function', "isSiteHostName" );
+ equal( typeof tracker.hook.test._isSiteHostPath, 'function', "isSiteHostPath" );
+ equal( typeof tracker.hook.test._getLinkIfShouldBeProcessed, 'function', "getLinkIfShouldBeProcessed" );
+ equal( typeof tracker.hook.test._findConfigCookiePathToUse, 'function', "findConfigCookiePathToUse" );
+
+ var isSiteHostName = tracker.hook.test._isSiteHostName;
+ var isSiteHostPath = tracker.hook.test._isSiteHostPath;
+ var getLinkIfShouldBeProcessed = tracker.hook.test._getLinkIfShouldBeProcessed;
+ var findConfigCookiePathToUse = tracker.hook.test._findConfigCookiePathToUse;
+
+ // tracker.setDomain()
+
+ // test wildcards
+ tracker.setDomains( ['*.Example.com'] );
+ propEqual(["*.Example.com", domainAlias], tracker.getDomains()), 'should add domainAlias';
+
+ tracker.setDomains( '*.Example.org' );
+ propEqual(["*.Example.org", domainAlias], tracker.getDomains()), 'should handle a string';
+
+ tracker.setDomains( ['*.Example.com', '*.example.ORG'] );
+ propEqual(["*.Example.com", '*.example.ORG', domainAlias], tracker.getDomains()), 'should be able to set many domains';
+
+ tracker.setDomains( [] );
+ propEqual([domainAlias], tracker.getDomains()), 'setting an empty array should reset the list';
+
+ tracker.setDomains( ['*.Example.com', domainAlias + '/path', '*.example.ORG'] );
+ propEqual(['*.Example.com', domainAlias + '/path', '*.example.ORG'], tracker.getDomains()), 'if domain alias is already given should not add domainAlias';
+
+ tracker.setDomains( ['.' + domainAlias + '/path'] );
+ propEqual(['.' + domainAlias + '/path'], tracker.getDomains()), 'if domain alias with subdomain is already given should not add domainAlias';
+
+
+ /**
+ * isSiteHostName ()
+ */
// test wildcards
tracker.setDomains( ['*.Example.com'] );
@@ -2254,21 +2291,171 @@ function PiwikTest() {
// skip test if testing on localhost
ok( window.location.hostname != 'localhost' ? !tracker.hook.test._isSiteHostName('localhost') : true, '!isSiteHostName("localhost")' );
- ok( !tracker.hook.test._isSiteHostName('google.com'), '!isSiteHostName("google.com")' );
- ok( tracker.hook.test._isSiteHostName('example.com'), 'isSiteHostName("example.com")' );
- ok( tracker.hook.test._isSiteHostName('www.example.com'), 'isSiteHostName("www.example.com")' );
- ok( tracker.hook.test._isSiteHostName('www.sub.example.com'), 'isSiteHostName("www.sub.example.com")' );
+ ok( !isSiteHostName('google.com'), '!isSiteHostName("google.com")' );
+ ok( isSiteHostName('example.com'), 'isSiteHostName("example.com")' );
+ ok( isSiteHostName('www.example.com'), 'isSiteHostName("www.example.com")' );
+ ok( isSiteHostName('www.sub.example.com'), 'isSiteHostName("www.sub.example.com")' );
tracker.setDomains( 'dev.piwik.org' );
- ok( !tracker.hook.test._isSiteHostName('piwik.org'), '!isSiteHostName("piwik.org")' );
- ok( tracker.hook.test._isSiteHostName('dev.piwik.org'), 'isSiteHostName("dev.piwik.org")' );
- ok( !tracker.hook.test._isSiteHostName('piwik.example.org'), '!isSiteHostName("piwik.example.org")');
- ok( !tracker.hook.test._isSiteHostName('dev.piwik.org.com'), '!isSiteHostName("dev.piwik.org.com")');
+ ok( !isSiteHostName('piwik.org'), '!isSiteHostName("piwik.org")' );
+ ok( isSiteHostName('dev.piwik.org'), 'isSiteHostName("dev.piwik.org")' );
+ ok( !isSiteHostName('piwik.example.org'), '!isSiteHostName("piwik.example.org")');
+ ok( !isSiteHostName('dev.piwik.org.com'), '!isSiteHostName("dev.piwik.org.com")');
tracker.setDomains( '.piwik.org' );
- ok( tracker.hook.test._isSiteHostName('piwik.org'), 'isSiteHostName("piwik.org")' );
- ok( tracker.hook.test._isSiteHostName('dev.piwik.org'), 'isSiteHostName("dev.piwik.org")' );
- ok( !tracker.hook.test._isSiteHostName('piwik.org.com'), '!isSiteHostName("piwik.org.com")');
+ ok( isSiteHostName('piwik.org'), 'isSiteHostName("piwik.org")' );
+ ok( isSiteHostName('dev.piwik.org'), 'isSiteHostName("dev.piwik.org")' );
+ ok( !isSiteHostName('piwik.org.com'), '!isSiteHostName("piwik.org.com")');
+
+ /**
+ * isSiteHostPath ()
+ */
+
+ // with path
+ tracker.setDomains( '.piwik.org/path' );
+ ok( isSiteHostPath('piwik.org', '/path'), 'isSiteHostPath("piwik.org", "/path")' );
+ ok( isSiteHostPath('piwik.org', '/path/'), 'isSiteHostPath("piwik.org", "/path/")' );
+ ok( isSiteHostPath('piwik.org', '/path/test'), 'isSiteHostPath("piwik.org", "/path/test)' );
+ ok( isSiteHostPath('dev.piwik.org', '/path'), 'isSiteHostPath("dev.piwik.org", "/path")' );
+ ok( !isSiteHostPath('piwik.org', '/pat'), '!isSiteHostPath("piwik.org", "/pat")');
+ ok( !isSiteHostPath('piwik.org', '.com'), '!isSiteHostPath("piwik.org", ".com")');
+ ok( !isSiteHostPath('piwik.com', '/path'), '!isSiteHostPath("piwik.com", "/path")');
+ ok( !isSiteHostPath('piwik.com', '/path/test'), '!isSiteHostPath("piwik.com", "/path/test")');
+ ok( !isSiteHostPath('piwik.com', ''), '!isSiteHostPath("piwik.com", "/path/test")');
+
+ // no path
+ var domains = ['.piwik.org', 'piwik.org', '*.piwik.org', '.piwik.org/'];
+ for (var i in domains) {
+ var domain = domains[i];
+ tracker.setDomains( domain );
+ ok( isSiteHostPath('piwik.org', '/path'), 'isSiteHostPath("piwik.org", "/path"), domain: ' + domain );
+ ok( isSiteHostPath('piwik.org', '/path/'), 'isSiteHostPath("piwik.org", "/path/"), domain: ' + domain );
+ ok( isSiteHostPath('piwik.org', '/path/test'), 'isSiteHostPath("piwik.org", "/path/test), domain: ' + domain );
+
+ if (domain === 'piwik.org') {
+ ok( !isSiteHostPath('dev.piwik.org', '/path'), 'isSiteHostPath("dev.piwik.org", "/path"), domain: ' + domain );
+ } else {
+ ok( isSiteHostPath('dev.piwik.org', '/path'), 'isSiteHostPath("dev.piwik.org", "/path"), domain: ' + domain );
+ }
+ ok( isSiteHostPath('piwik.org', '/pat'), '!isSiteHostPath("piwik.org", "/pat"), domain: ' + domain );
+ ok( isSiteHostPath('piwik.org', '.com'), '!isSiteHostPath("piwik.org", ".com"), domain: ' + domain);
+ ok( isSiteHostPath('piwik.org', '/foo'), '!isSiteHostPath("piwik.com", "/foo"), domain: ' + domain);
+ ok( !isSiteHostPath('piwik.com', '/path'), '!isSiteHostPath("piwik.com", "/path"), domain: ' + domain);
+ ok( !isSiteHostPath('piwik.com', '/path/test'), '!isSiteHostPath("piwik.com", "/path/test"), domain: ' + domain);
+ ok( !isSiteHostPath('piwik.com', ''), '!isSiteHostPath("piwik.com", "/path/test"), domain: ' + domain);
+ }
+
+ // multiple paths / domains
+ tracker.setDomains( ['piwik.org/path', 'piwik.org/foo', 'piwik.org/bar/baz', '.piwik.pro/test'] );
+ ok( isSiteHostPath('piwik.pro', '/test/bar'), 'isSiteHostPath("piwik.pro", "/test/bar")' );
+ ok( !isSiteHostPath('piwik.org', '/foobar/'), 'isSiteHostPath("piwik.org", "/foobar/")' );
+ ok( isSiteHostPath('piwik.org', '/foo/bar'), 'isSiteHostPath("piwik.org", "/foo/bar")' );
+ ok( isSiteHostPath('piwik.org', '/bar/baz/foo'), 'isSiteHostPath("piwik.org", "/bar/baz/foo/")' );
+ ok( !isSiteHostPath('piwik.org', '/bar/ba'), 'isSiteHostPath("piwik.org", "/bar/ba")' );
+ ok( isSiteHostPath('piwik.org', '/path/test'), 'isSiteHostPath("piwik.org", "/path/test)' );
+ ok( isSiteHostPath('dev.piwik.pro', '/test'), 'isSiteHostPath("dev.piwik.pro", "/test")' );
+ ok( !isSiteHostPath('dev.piwik.pro', '/'), 'isSiteHostPath("dev.piwik.pro", "/")' );
+ ok( !isSiteHostPath('piwik.pro', '/'), 'isSiteHostPath("piwik.pro", "/")' );
+ ok( !isSiteHostPath('piwik.org', '/'), 'isSiteHostPath("piwik.org", "/")' );
+ ok( !isSiteHostPath('piwik.org', '/anythingelse'), 'isSiteHostPath("piwik.org", "/anythingelse")' );
+
+ // all is compared lower case
+ tracker.setDomains( '.piwik.oRg/PaTh' );
+ ok( isSiteHostPath('piwiK.org', '/pAth'), 'isSiteHostPath("piwik.org", "/path")' );
+ ok( isSiteHostPath('piwik.org', '/patH/'), 'isSiteHostPath("piwik.org", "/path/")' );
+ ok( isSiteHostPath('Piwik.ORG', '/PATH/TEST'), 'isSiteHostPath("piwik.org", "/path/test)' );
+
+ /**
+ * getLinkIfShouldBeProcessed ()
+ */
+ var getLinkIfShouldBeProcessed = tracker.hook.test._getLinkIfShouldBeProcessed;
+ function createLink(url) {
+ var link = document.createElement('a');
+ link.href = url;
+ return link;
+ }
+
+ tracker.setDomains( ['.piwik.org/path', '.piwik.org/foo', '.piwik.org/bar/baz', '.piwik.pro/test'] );
+
+ // they should not be detected as outlink as they match one of the domains
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/foo/bar')), 'getLinkIfShouldBeProcessed http://www.piwik.org/foo/bar matches .piwik.org/foo')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://piwik.org/foo/bar')), 'getLinkIfShouldBeProcessed http://piwik.org/foo/bar matches .piwik.org/foo')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('piwik.org/foo/bar')), 'getLinkIfShouldBeProcessed missing protocol only domain given')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('//piwik.org/foo/bar')), 'getLinkIfShouldBeProcessed no protcol but url starts with //')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/foo?x=1')), 'getLinkIfShouldBeProcessed url with query parameter should detect correct path')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/foo')), 'getLinkIfShouldBeProcessed path is same as allowed path')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/foo/')), 'getLinkIfShouldBeProcessed path is same as allowed path but with appended slash')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/bar/baz/')), 'getLinkIfShouldBeProcessed multiple directories with appended slash')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/bar/baz')), 'getLinkIfShouldBeProcessed multiple directories')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://WWW.PIWIK.ORG/BAR/BAZ')), 'getLinkIfShouldBeProcessed should test everything lowercase')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/bar/baz/x/y/z')), 'getLinkIfShouldBeProcessed many appended paths')
+ equal(undefined, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/bar/baz?test=1&foo=bar')), 'getLinkIfShouldBeProcessed another test with query parameter and multiple directories')
+ propEqual({
+ "href": "http://www.piwik.org/foo/download.apk",
+ "type": "download"
+ }, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/foo/download.apk')), 'getLinkIfShouldBeProcessed should detect download even if it is link to same domain')
+ propEqual({
+ "href": "http://www.piwik.org/foobar/download.apk",
+ "type": "download"
+ }, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/foobar/download.apk')), 'getLinkIfShouldBeProcessed should detect download even if it goes to different domain/path')
+ propEqual({
+ "href": "http://www.piwik.com/foobar/download.apk",
+ "type": "download"
+ }, getLinkIfShouldBeProcessed(createLink('http://www.piwik.com/foobar/download.apk')), 'getLinkIfShouldBeProcessed should detect download even if it goes to different domain')
+ propEqual({
+ "href": "http://www.piwik.pro/foo/",
+ "type": "link"
+ }, getLinkIfShouldBeProcessed(createLink('http://www.piwik.pro/foo/')), 'getLinkIfShouldBeProcessed path matches but domain not so outlink')
+ propEqual({
+ "href": "http://www.piwik.org/bar",
+ "type": "link"
+ }, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/bar')), 'getLinkIfShouldBeProcessed domain matches but path not so outlink')
+ propEqual({
+ "href": "http://www.piwik.org/footer",
+ "type": "link"
+ }, getLinkIfShouldBeProcessed(createLink('http://www.piwik.org/footer')), 'getLinkIfShouldBeProcessed http://www.piwik.org/footer and there is domain piwik.org/foo but it should be outlink as path is different')
+
+
+ /**
+ * findConfigCookiePathToUse ()
+ */
+
+ tracker.setDomains( ['.piwik.org', '.piwik.pro/foo/bar', '.piwik.pro/foo', '.piwik.com/test/foo', 'example.com/foo'] );
+
+ equal(null, findConfigCookiePathToUse('.piwik.org/test', 'http://piwik.org/test/two'), 'findConfigCookiePathToUse no cookiePath because there is a domain alias given allowing them all');
+ equal('/foo', findConfigCookiePathToUse('.piwik.pro/foo', 'http://piwik.pro/foo/bar/test'), 'findConfigCookiePathToUse should find a match');
+ equal('/foo', findConfigCookiePathToUse('.piwik.pro/foo/bar/test', 'http://piwik.pro/foo/bar/test'), 'findConfigCookiePathToUse should find a less restrictive path automatically');
+ equal('/foo', findConfigCookiePathToUse('.piwik.pro/foo/bar/test', 'http://piwik.pro/foo'), 'findConfigCookiePathToUse should find a less restrictive path automatically, urlPath===domainPath');
+ equal('/test/bar/test', findConfigCookiePathToUse('.piwik.com/test/bar/test', 'http://piwik.com/test/bar/test/'), 'findConfigCookiePathToUse should use exactly given path if no less restrictive version is available');
+ equal('/test/foo', findConfigCookiePathToUse('.piwik.com/test/foo/test', 'http://piwik.com/test/foo/test'), 'findConfigCookiePathToUse should find a less restrictive path automatically, configAlias === currentUrl');
+ equal('/test/foo', findConfigCookiePathToUse('.piwik.com/test/foo', 'http://piwik.com/test/foo/test'), 'findConfigCookiePathToUse should find a less restrictive path automatically');
+ equal(null, findConfigCookiePathToUse('.piwik.pro/foo', 'http://piwik.pro/test'), 'findConfigCookiePathToUse should not return a path when user is actually not on that path');
+ equal(null, findConfigCookiePathToUse('.piwik.pro/foo', 'http://piwik.pro'), 'findConfigCookiePathToUse when there is no path set we cannot use a configPath');
+
+ /**
+ * Test sets a good cookie path automatically
+ */
+ tracker.setCookiePath(null);
+ tracker.setDomains( ['.' + domainAlias + '/tests'] );
+ equal('/tests', tracker.getConfigCookiePath()), 'should set a cookie path automatically';
+
+ tracker.setCookiePath(null);
+ tracker.setDomains( ['.' + domainAlias + '/tests/javascript'] );
+ equal('/tests/javascript', tracker.getConfigCookiePath()), 'should set a cookie path automatically, multiple directories';
+
+ tracker.setCookiePath(null);
+ tracker.setDomains( ['.' + domainAlias + '/tests/javascript', '.' + domainAlias + '/tests'] );
+ equal('/tests', tracker.getConfigCookiePath()), 'should find shortest path for possible cookie path';
+
+ tracker.setCookiePath(null);
+ tracker.setDomains( ['.' + domainAlias + '/tests/javascript', '.example.com/tests'] );
+ equal('/tests/javascript', tracker.getConfigCookiePath()), 'should not find a shorter path when no other domain matches';
+
+ tracker.setCookiePath(null);
+ tracker.setDomains( ['.' + domainAlias + '/another/one', '.example.org/tests/javascript', '.example.com/tests'] );
+ equal(null, tracker.getConfigCookiePath()), 'should not set a path when no domain and no path matches';
+
+ tracker.setCookiePath(null);
});
test("Tracker getClassesRegExp()", function() {
@@ -2710,7 +2897,7 @@ function PiwikTest() {
});
<?php
-if ($sqlite) {
+if ($mysql) {
?>
module("request", {
@@ -2727,7 +2914,7 @@ if ($sqlite) {
});
test("tracking", function() {
- expect(102);
+ expect(114);
// Prevent Opera and HtmlUnit from performing the default action (i.e., load the href URL)
var stopEvent = function (evt) {
@@ -2783,6 +2970,21 @@ if ($sqlite) {
deepEqual( tracker.getCustomVariable(5), ["new name", ""], "getting a custom variable with no value" );
tracker.deleteCustomVariable(5);
+ equal(tracker.getCustomDimension(94), null, "if no custom dimension for this index is specified should return null");
+ equal(tracker.getCustomDimension(-1), null, "if custom dimension index is invalid should return null");
+ equal(tracker.getCustomDimension('not valid'), null, "if custom dimension index is invalid should return null");
+ tracker.setCustomDimension(1, 5);
+ equal(tracker.getCustomDimension(1), "5", "set custom dimension should convert any value to a string" );
+ tracker.setCustomDimension(1, "my custom value");
+ equal(tracker.getCustomDimension(1), "my custom value", "should get stored custom dimension value" );
+ tracker.setCustomDimension(2, undefined);
+ equal(tracker.getCustomDimension(2), "", "setCustomDimension should convert undefined to an empty string" );
+
+ tracker.setCustomDimension(3, 'my third value');
+ equal(tracker.getCustomDimension(3), "my third value", "deleteCustomDimension verify a value is set for this dimension" );
+ tracker.deleteCustomDimension(3);
+ equal(tracker.getCustomDimension(3), null, "deleteCustomDimension verify value was removed" );
+
tracker.setDocumentTitle("PiwikTest");
var referrerUrl = "http://referrer.example.com/page/sub?query=test&test2=test3";
@@ -2791,7 +2993,10 @@ if ($sqlite) {
referrerTimestamp = Math.round(new Date().getTime() / 1000);
tracker.trackPageView();
- tracker.trackPageView("CustomTitleTest");
+ equal(tracker.getCustomDimension(1), "my custom value", "custom dimensions should not be cleared after a tracked pageview");
+ equal(tracker.getCustomDimension(2), "", "custom dimensions should not be cleared after a tracked pageview");
+
+ tracker.trackPageView("CustomTitleTest", {dimension2: 'my new value', dimension5: 'another dimension'});
var customUrlShouldNotChangeCampaign = "http://localhost.localdomain/?utm_campaign=NONONONONONONO&utm_term=PLEASE NO!";
tracker.setCustomUrl(customUrl);
@@ -3056,6 +3261,12 @@ if ($sqlite) {
// Test Custom variables
ok( /SaveCustomVariableCookie.*&cvar=%7B%222%22%3A%5B%22cookiename2PAGE%22%2C%22cookievalue2PAGE%22%5D%7D.*&_cvar=%7B%221%22%3A%5B%22cookiename%22%2C%22cookievalue%22%5D%2C%222%22%3A%5B%22cookiename2%22%2C%22cookievalue2%22%5D%7D/.test(results), "test custom vars are set");
+ // Test CustomDimension (persistent ones across requests)
+ ok( /dimension1=my%20custom%20value&dimension2=&/.test(results), "test custom dimensions are set");
+
+ // send along a page view and ony valid for this pageview (dimension 2 overwrites another one)
+ ok( /dimension2=my%20new%20value&dimension5=another%20dimension&dimension1=my%20custom%20value&data=%7B%22token/.test( results ), "trackPageView(customTitle, customData)" );
+
// Test campaign parameters set
ok( /&_rcn=YEAH&_rck=RIGHT!/.test( results), "Test campaign parameters found");
ok( /&_ref=http%3A%2F%2Freferrer.example.com%2Fpage%2Fsub%3Fquery%3Dtest%26test2%3Dtest3/.test( results), "Test cookie Ref URL found ");