View source
<?php
require_once 'facebook_tracking_pixel.helper.php';
class FacebookTrackingPixelTestTrackingCase extends FacebookTrackingPixelTestCase {
public static function getInfo() {
return [
'name' => 'Tracking Test',
'description' => 'Place tracking pixel onto a site and control events.',
'group' => 'Facebook Tracking Pixel',
];
}
public function testFacebookTrackingPixelBasePixel() {
$edit = [];
$edit['name'] = $this
->randomName(8);
$id1 = 12314512312;
$edit['fbid'] = $id1;
$edit['global'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/base_codes', $edit, t('Add'));
$this
->assertText(t('Facebook Base Tracking Code Added'), t('Add new base code through the admin UI'));
$edit['name'] = $this
->randomName(8);
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/base_codes', $edit, t('Add'));
$this
->assertText(t('You only need to add a base tracking code once.'), t('Add duplicate base code through the admin UI'));
$edit = [];
$edit['name'] = $this
->randomName(8);
$id2 = 789789789;
$edit['fbid'] = $id2;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/base_codes', $edit, t('Add'));
$this
->assertText(t('Facebook Base Tracking Code Added'), t('Add new base code through the admin UI'));
$fbHelper = new facebookTrackingPixel\FacebookTrackingPixelTestHelper();
$fbHelper
->enable_tracking_all_roles();
$this
->drupalGet('');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $id1 . '.js', t('Tracking Code 1 Found in Raw Source'), 'FBTrkPx');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $id2 . '.js', t('Tracking Code 2 Found in Raw Source'), 'FBTrkPx');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $this->baseCodeFBID . '.js', t('Setup Tracking Code Found in Raw Source'), 'FBTrkPx');
}
public function testFacebookTrackingPixelPathItemNodes() {
$edit = [];
$edit['event_name'] = $this
->randomName(8);
$edit['event_path'] = 'node/' . $this->nodeID;
$edit['event_base_code_id'] = $this->baseCodeID;
$edit['event_type[addtocart]'] = TRUE;
$edit['event_type[lead]'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/path/add', $edit, t('Save'));
$this
->assertText(t('Path tracking entry added.'), t('Path tracking text confirmation on page displayed after form submit. Path name %name added', [
'%name' => $edit['event_name'],
]), 'FBTrkPx');
$edit = [];
$edit['event_name'] = $this
->randomName(8);
$edit['event_path'] = $this->testFacebookTrackingPixelNodeAlias;
$edit['event_base_code_id'] = $this->baseCodeID;
$edit['event_type[search]'] = TRUE;
$edit['event_type[registration]'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/path/add', $edit, t('Save'));
$this
->assertText(t('The tracker event you are trying to add is the resolved path in Drupal as the event with name'), t('Adding path with same alias should fail. This test should pass.'), 'FBTrkPx');
$edit = [];
$edit['event_name'] = $this
->randomName(8);
$this
->assert(TRUE, 'Using Node ID ' . $this->nodeID, 'FBTrkPx');
$path = 'node/' . $this->nodeID;
$edit['event_path'] = $path;
$edit['event_base_code_id'] = $this->baseCodeID;
$edit['event_type[search]'] = TRUE;
$edit['event_type[registration]'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/path/add', $edit, t('Save'));
$this
->assertText(t('You cannot add a duplicate event to the same path and base code.'), t('Adding path with same system path should fail. This test should pass.'), 'FBTrkPx');
}
public function testFacebookTrackingPixelPathItemRouter() {
$edit = [];
$edit['event_name'] = $this
->randomName(8);
$edit['event_path'] = 'admin';
$edit['event_base_code_id'] = $this->baseCodeID;
$edit['event_type[addtocart]'] = TRUE;
$edit['event_type[lead]'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/path/add', $edit, t('Save'));
$this
->assertText(t('Path tracking entry added.'), t('Path tracking text confirmation on page displayed after form submit. Path name %name added', [
'%name' => $edit['event_name'],
]), 'FBTrkPx');
$edit = [];
$edit['event_name'] = $this
->randomName(8);
$edit['event_path'] = 'admin';
$edit['event_base_code_id'] = $this->baseCodeID;
$edit['event_type[search]'] = TRUE;
$edit['event_type[registration]'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/path/add', $edit, t('Save'));
$this
->assertText(t('You cannot add a duplicate event to the same path and base code.'), t('A duplicate menu router item was not allowed to be submitted'), 'FBTrkPx');
}
public function testFacebookTrackingPixelTrackPages() {
$testfbid = '890890890890';
db_insert('facebook_tracking_pixel_base_codes')
->fields([
'base_code_name' => 'Test Basecode',
'base_code_fbid' => $testfbid,
'base_code_global' => 0,
'weight' => 10,
])
->execute();
$testbasecodeid = db_select('facebook_tracking_pixel_base_codes', 'c')
->fields('c', [
'base_code_id',
])
->condition('base_code_fbid', $testfbid, '=')
->execute()
->fetchField();
$edit = [];
$edit['facebook_tracking_pixel_roles_administrator'] = TRUE;
$edit['facebook_tracking_pixel_roles_anonymous_user'] = TRUE;
$edit['facebook_tracking_pixel_roles_authenticated_user'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel', $edit, t('Save configuration'));
$this
->assertText(t('The configuration options have been saved.'), t('Save the settings to track all roles.'), 'FBTrkPx');
$this
->drupalGet('');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $this->baseCodeFBID . '.js', t('Global tracking code JS found in head.'), 'FBTrkPx');
$this
->assertNoRaw('facebook_tracking_pixel/fb_tkpx.890890890890.js', t('Non-global tracking code JS not found in head.'), 'FBTrkPx');
$this
->drupalGet('node/' . $this->nodeID);
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $this->baseCodeFBID . '.js', t('Global tracking code JS found in head for node system path.'), 'FBTrkPx');
$this
->assertNoRaw('facebook_tracking_pixel/fb_tkpx.890890890890.js', t('Non-global tracking code JS found in head for node system path.'), 'FBTrkPx');
$this
->drupalGet($this->testFacebookTrackingPixelNodeAlias);
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $this->baseCodeFBID . '.js', t('Global tracking code JS found in head for node alias path.'), 'FBTrkPx');
$this
->assertNoRaw('facebook_tracking_pixel/fb_tkpx.890890890890.js', t('Non-global tracking code JS found in head for node system path.'), 'FBTrkPx');
$node = $this
->drupalCreateNode();
$this
->assertTrue(!empty($node->nid), t('A basic page has been created with node ID %nid and title %title and path alias', [
'%nid' => $node->nid,
'%title' => $node->title,
]), t('FBTrkPx'));
$edit = [];
$edit['source'] = 'node/' . $node->nid;
$testpath = $edit['alias'] = 'pathtest';
$this
->drupalPost('admin/config/search/path/add', $edit, t('Save'));
cache_clear_all('*', 'cache_path', TRUE);
$this
->drupalGet($edit['source']);
$this
->assertTrue(cache_get($edit['source'], 'cache_path'), 'Cache entry was created.');
$edit = [];
$edit['event_name'] = $this
->randomName(8);
$edit['event_path'] = $testpath;
$edit['event_base_code_id'] = $testbasecodeid;
$edit['event_type[search]'] = TRUE;
$edit['event_type[registration]'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/path/add', $edit, t('Save'));
$this
->assertText(t('Path tracking entry added.'), t('Path tracking text confirmation on page displayed after form submit. Path name %name added', [
'%name' => $edit['event_name'],
]), 'FBTrkPx');
$testbasecodeuid = db_select('facebook_tracking_pixel_events_path', 'c')
->fields('c', [
'event_uid',
])
->condition('event_base_code_id', $testbasecodeid, '=')
->execute()
->fetchField();
$this
->drupalGet('node/' . $node->nid);
$this
->assertRaw('facebook_tracking_pixel/pathtracking/fb_trk.' . $testbasecodeuid . '.js', t('Path tracking code JS found in head.'), 'FBTrkPx');
$this
->drupalGet($testpath);
$this
->assertRaw('facebook_tracking_pixel/pathtracking/fb_trk.' . $testbasecodeuid . '.js', t('Path tracking code JS found in head.'), 'FBTrkPx');
}
public function testFacebookTrackingPixelDeleteNode() {
$node = $this
->drupalCreateNode();
$this
->assertTrue(!empty($node->nid), t('A basic page has been created with node ID %nid and title %title and path alias', [
'%nid' => $node->nid,
'%title' => $node->title,
]), t('FBTrkPx'));
$nid = $node->nid;
$edit = [];
$edit['event_name'] = $this
->randomName(8);
$edit['event_path'] = 'node/' . $node->nid;
$edit['event_base_code_id'] = $this->baseCodeID;
$edit['event_type[addtocart]'] = TRUE;
$edit['event_type[lead]'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/path/add', $edit, t('Save'));
$this
->assertText(t('Path tracking entry added.'), t('Path tracking text confirmation on page displayed after form submit. Path name %name added', [
'%name' => $edit['event_name'],
]), 'FBTrkPx');
$this
->drupalGet('node/' . $node->nid . '/edit');
$this
->drupalPost(NULL, NULL, t('Delete'));
$this
->drupalPost(NULL, NULL, t('Delete'));
$this
->assertText(t('Basic page @title has been deleted.', [
'@title' => $node->title,
]), t('Test node deleted'), 'FBTrkPx');
$result = db_select('facebook_tracking_pixel_events_path', 'c')
->fields('c', [
'event_path_system',
'event_enable',
'event_id',
'event_uid',
])
->condition('event_path_system', 'node/' . $nid, '=')
->execute()
->fetchAssoc();
$this
->assertEqual($result['event_enable'], 0, t('Tracking event is disabled in database after node delete'), 'FBTrkPx');
$this
->drupalGet('admin/config/system/facebook_tracking_pixel/path/edit/' . $result['event_id']);
$this
->assertText(t('This event is disabled because the path being tracked no longer exists. You may only update the path of this item to provide a new valid path.'), t('Tracking event is disabled in the UI after node delete.'), 'FBTrkPx');
$this
->drupalGet('');
$this
->assertNoRaw($result['event_uid'], t('Disabled tracking code does not appear on any page.'));
$node = $this
->drupalCreateNode();
$this
->assertTrue(!empty($node->nid), t('A basic page has been created with node ID %nid and title %title and path alias', [
'%nid' => $node->nid,
'%title' => $node->title,
]), t('FBTrkPx'));
$edit = [];
$edit['source'] = 'node/' . $node->nid;
$edit['alias'] = 'testernode';
$this
->drupalPost('admin/config/search/path/add', $edit, t('Save'));
$nid = $node->nid;
$edit = [];
$edit['event_name'] = $this
->randomName(8);
$edit['event_path'] = 'node/' . $node->nid;
$edit['event_base_code_id'] = $this->baseCodeID;
$edit['event_type[addtocart]'] = TRUE;
$edit['event_type[lead]'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/path/add', $edit, t('Save'));
$this
->assertText(t('Path tracking entry added.'), t('Path tracking text confirmation on page displayed after form submit. Path name %name added', [
'%name' => $edit['event_name'],
]), 'FBTrkPx');
$this
->drupalGet('node/' . $node->nid . '/edit');
$this
->drupalPost(NULL, NULL, t('Delete'));
$this
->drupalPost(NULL, NULL, t('Delete'));
$this
->assertText(t('Basic page @title has been deleted.', [
'@title' => $node->title,
]), t('Test node deleted'), 'FBTrkPx');
$result = db_select('facebook_tracking_pixel_events_path', 'c')
->fields('c', [
'event_path_system',
'event_enable',
'event_id',
'event_uid',
])
->condition('event_path_system', 'node/' . $nid, '=')
->execute()
->fetchAssoc();
$this
->assertEqual($result['event_enable'], 0, t('Tracking event is disabled in database after node delete'), 'FBTrkPx');
$this
->drupalGet('admin/config/system/facebook_tracking_pixel/path/edit/' . $result['event_id']);
$this
->assertText(t('This event is disabled because the path being tracked no longer exists. You may only update the path of this item to provide a new valid path.'), t('Tracking event is disabled in the UI after node delete.'), 'FBTrkPx');
$this
->drupalGet('');
$this
->assertNoRaw($result['event_uid'], t('Disabled tracking code does not appear on any page.'));
}
public function testFacebookTrackingPixelRoleVisibility() {
$fbHelper = new facebookTrackingPixel\FacebookTrackingPixelTestHelper();
$edit = [];
$edit['name'] = $this
->randomName(8);
$id1 = 3453453453;
$edit['fbid'] = $id1;
$edit['global'] = TRUE;
$this
->drupalPost('admin/config/system/facebook_tracking_pixel/base_codes', $edit, t('Add'));
$this
->assertText(t('Facebook Base Tracking Code Added'), t('Add new base code through the admin UI'));
$fbHelper
->enable_tracking_all_roles();
$this
->drupalGet('');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $id1 . '.js', t('Admin User - Tracking Code 1 Found in Raw Source'), 'FBTrkPx');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $this->baseCodeFBID . '.js', t('Admin User - Setup Tracking Code Found in Raw Source'), 'FBTrkPx');
$fbHelper
->delete_fb_tracking_role_variables();
$fbHelper
->enable_tracking_testing_role();
$this
->drupalLogout();
$this
->drupalLogin($this->webUser);
$this
->drupalGet('');
$this
->assertNoRaw('facebook_tracking_pixel/fb_tkpx.' . $id1 . '.js', t('Web User - Tracking Code NOT Found in Raw Source'), 'FBTrkPx');
$this
->assertNoRaw('facebook_tracking_pixel/fb_tkpx.' . $this->baseCodeFBID . '.js', t('Web User - Setup Tracking Code NOT Found in Raw Source'), 'FBTrkPx');
$fbHelper
->remove_role_from_user($this->webUser, 'fb pixel tester');
cache_clear_all('*', 'cache_page', TRUE);
$this
->drupalGet('');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $id1 . '.js', t('Web User - Tracking Code Found in Raw Source'), 'FBTrkPx');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $this->baseCodeFBID . '.js', t('Web User - Setup Tracking Code Found in Raw Source'), 'FBTrkPx');
$this
->drupalLogout();
$this
->drupalLogin($this->adminUser);
$this
->drupalGet('');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $id1 . '.js', t('Admin User - Tracking Code Found in Raw Source'), 'FBTrkPx');
$this
->assertRaw('facebook_tracking_pixel/fb_tkpx.' . $this->baseCodeFBID . '.js', t('Admin User - Setup Tracking Code Found in Raw Source'), 'FBTrkPx');
}
}