PageRenderTime 32ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/Google/Api/Ads/AdWords/v201101/ConversionTrackerServiceTest.php

http://google-api-adwords-php.googlecode.com/
PHP | 197 lines | 110 code | 25 blank | 62 comment | 0 complexity | b196d3d1328eb3e4aa647b9d28ab238b MD5 | raw file
Possible License(s): Apache-2.0, MIT
  1. <?php
  2. /**
  3. * Functional tests for ConversionTrackerService.
  4. *
  5. * PHP version 5
  6. *
  7. * Copyright 2011, Google Inc. All Rights Reserved.
  8. *
  9. * Licensed under the Apache License, Version 2.0 (the 'License');
  10. * you may not use this file except in compliance with the License.
  11. * You may obtain a copy of the License at
  12. *
  13. * http://www.apache.org/licenses/LICENSE-2.0
  14. *
  15. * Unless required by applicable law or agreed to in writing, software
  16. * distributed under the License is distributed on an 'AS IS' BASIS,
  17. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18. * See the License for the specific language governing permissions and
  19. * limitations under the License.
  20. *
  21. * @package GoogleApiAdsAdWords
  22. * @subpackage v201101
  23. * @category WebServices
  24. * @copyright 2011, Google Inc. All Rights Reserved.
  25. * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License,
  26. * Version 2.0
  27. * @author Eric Koleda <api.ekoleda@gmail.com>
  28. */
  29. error_reporting(E_STRICT | E_ALL);
  30. $path = dirname(__FILE__) . '/../../../../../../src';
  31. set_include_path(get_include_path() . PATH_SEPARATOR . $path);
  32. require_once dirname(__FILE__) . '/../AdWordsTestSuite.php';
  33. require_once dirname(__FILE__) . '/../../Common/AdsTestCase.php';
  34. require_once 'Google/Api/Ads/AdWords/v201101/CampaignService.php';
  35. /**
  36. * Functional tests for ConversionTrackerService.
  37. */
  38. class ConversionTrackerServiceTest extends AdsTestCase {
  39. private $service;
  40. private $testUtils;
  41. private $conversionTrackerId;
  42. /**
  43. * Create the test suite.
  44. */
  45. public static function suite() {
  46. $suite = new AdWordsTestSuite(__CLASS__);
  47. $suite->SetVersion('v201101');
  48. return $suite;
  49. }
  50. /**
  51. * Set up the test fixtures.
  52. */
  53. protected function setUp() {
  54. $user = $this->sharedFixture['user'];
  55. $this->service = $user->GetService('ConversionTrackerService');
  56. $this->testUtils = $this->sharedFixture['testUtils'];
  57. $this->conversionTrackerId = $this->testUtils->CreateConversionTracker();
  58. }
  59. /**
  60. * Test adding a conversion tracker.
  61. * @covers ConversionTrackerService::mutate
  62. */
  63. public function testAdd() {
  64. $conversionTracker = new AdWordsConversionTracker();
  65. $conversionTracker->name = 'Interplanetary Cruise Conversion #' . uniqid();
  66. $conversionTracker->category = 'DEFAULT';
  67. $conversionTracker->viewthroughLookbackWindow = 30;
  68. $conversionTracker->isProductAdsChargeable = TRUE;
  69. $conversionTracker->productAdsChargeableConversionWindow = 30;
  70. $conversionTracker->markupLanguage = 'HTML';
  71. $conversionTracker->httpProtocol = 'HTTP';
  72. $conversionTracker->textFormat = 'HIDDEN';
  73. $conversionTracker->conversionPageLanguage = 'en';
  74. $conversionTracker->backgroundColor = 'ffffff';
  75. $conversionTracker->userRevenueValue = 5;
  76. $operation = new ConversionTrackerOperation($conversionTracker, 'ADD');
  77. $testConversionTracker =
  78. $this->service->mutate(array($operation))->value[0];
  79. // Exclude generated fields.
  80. $excludeFields = array('id', 'status', 'ConversionTrackerType', 'snippet');
  81. $this->assertEqualsWithExclusions($conversionTracker,
  82. $testConversionTracker, $excludeFields);
  83. }
  84. /**
  85. * Test updating a conversion tracker.
  86. * @covers ConversionTrackerService::mutate
  87. */
  88. public function testUpdate() {
  89. $conversionTracker = new AdWordsConversionTracker();
  90. $conversionTracker->id = $this->conversionTrackerId;
  91. $conversionTracker->name = 'New Name ' . uniqid();
  92. $operation = new ConversionTrackerOperation($conversionTracker, 'SET');
  93. $testConversionTracker =
  94. $this->service->mutate(array($operation))->value[0];
  95. $this->assertEquals($conversionTracker->name, $testConversionTracker->name);
  96. }
  97. /**
  98. * Test deleting a conversion tracker.
  99. * @covers ConversionTrackerService::mutate
  100. */
  101. public function testDelete() {
  102. $conversionTracker = new AdWordsConversionTracker();
  103. $conversionTracker->id = $this->conversionTrackerId;
  104. $conversionTracker->status = 'DISABLED';
  105. $operation = new ConversionTrackerOperation($conversionTracker, 'SET');
  106. $testConversionTracker =
  107. $this->service->mutate(array($operation))->value[0];
  108. $this->assertEquals($conversionTracker->status,
  109. $testConversionTracker->status);
  110. }
  111. /**
  112. * Test getting a conversion tracker.
  113. * @covers ConversionTrackerService::get
  114. */
  115. public function testGet() {
  116. $selector = new Selector();
  117. $selector->fields = $this->getAllFields();
  118. $selector->predicates[] =
  119. new Predicate('Id', 'IN', array($this->conversionTrackerId));
  120. $selector->dateRange = new DateRange(date('Ym01'), date('Ymd'));
  121. $page = $this->service->get($selector);
  122. $this->assertNotNull($page);
  123. $this->assertEquals(1, sizeof($page->entries));
  124. $this->assertNotNull($page->entries[0]->stats);
  125. }
  126. /**
  127. * Test getting all conversion trackers.
  128. * @covers ConversionTrackerService::get
  129. */
  130. public function testGetAll() {
  131. $selector = new Selector();
  132. $selector->fields = $this->getAllFields();
  133. $selector->paging = new Paging(0, 100);
  134. $selector->ordering = array(new OrderBy('Id', 'ASCENDING'));
  135. $page = $this->service->get($selector);
  136. $this->assertNotNull($page);
  137. $this->assertGreaterThanOrEqual(1, sizeof($page->entries));
  138. $this->assertLessThanOrEqual(100, sizeof($page->entries));
  139. // Assert that the order is correct.
  140. $lastId = 0;
  141. foreach($page->entries as $conversionTracker) {
  142. $this->assertGreaterThanOrEqual($lastId, $conversionTracker->id);
  143. $lastId = $conversionTracker->id;
  144. }
  145. }
  146. /**
  147. * Returns all the selectable fields for the service.
  148. * @return array the selectable fields available
  149. */
  150. function getAllFields() {
  151. return array(
  152. 'BackgroundColor',
  153. 'Category',
  154. 'ConversionPageLanguage',
  155. 'ConversionValue',
  156. 'HttpProtocol',
  157. 'Id',
  158. 'IsProductAdsChargeable',
  159. 'MarkupLanguage',
  160. 'MostRecentConversionDate',
  161. 'Name',
  162. 'NumConversionEvents',
  163. 'NumConvertedClicks',
  164. 'ProductAdsChargeableConversionWindow',
  165. 'Status',
  166. 'TextFormat',
  167. 'UserRevenueValue',
  168. 'ViewthroughConversionDeDupSearch',
  169. 'ViewthroughLookbackWindow'
  170. );
  171. }
  172. }