/tests/system/webdriver/tests/users/UserManager0002Test.php

https://github.com/dextercowley/joomla-cms · PHP · 187 lines · 145 code · 21 blank · 21 comment · 0 complexity · a9f4d4686bf353691622189e2a2830e5 MD5 · raw file

  1. <?php
  2. require_once 'JoomlaWebdriverTestCase.php';
  3. use SeleniumClient\By;
  4. use SeleniumClient\SelectElement;
  5. use SeleniumClient\WebDriver;
  6. use SeleniumClient\WebDriverWait;
  7. use SeleniumClient\DesiredCapabilities;
  8. /**
  9. * This class tests the User Manager: Add / Edit User Screen
  10. * @author Mark
  11. *
  12. */
  13. class UserManager0002Test extends JoomlaWebdriverTestCase
  14. {
  15. /**
  16. *
  17. * @var UserManagerPage
  18. */
  19. protected $userManagerPage = null; // Global configuration page
  20. public function setUp()
  21. {
  22. parent::setUp();
  23. $cpPage = $this->doAdminLogin();
  24. $this->userManagerPage = $cpPage->clickMenu('User Manager', 'UserManagerPage');
  25. }
  26. public function tearDown()
  27. {
  28. $this->doAdminLogout();
  29. parent::tearDown();
  30. }
  31. /**
  32. * @test
  33. */
  34. public function getFilters_GetListOfFilters_ShouldMatchExpected()
  35. {
  36. $actualIds = $this->userManagerPage->getFilters();
  37. $expectedIds = array_values($this->userManagerPage->filters);
  38. $this->assertEquals($expectedIds, $actualIds, 'Filter ids should match expected');
  39. }
  40. /**
  41. * @test
  42. */
  43. public function setFilter_SetFilterValues_ShouldExecuteFilter()
  44. {
  45. $this->assertEquals(1, $this->userManagerPage->getRowNumber('Super User'), 'Super user should be in row 1');
  46. $test = $this->userManagerPage->setFilter('filter_state', 'Disabled');
  47. $this->userManagerPage = $this->getPageObject('UserManagerPage');
  48. $this->assertFalse($this->userManagerPage->getRowNumber('Super User'), 'Super user should not show');
  49. $test = $this->userManagerPage->setFilter('State', 'State');
  50. $this->assertEquals(1, $this->userManagerPage->getRowNumber('Super User'), 'Super user should be in row 1');
  51. }
  52. /**
  53. * @test
  54. */
  55. public function setFilter_TestFilters_ShouldFilterUsers()
  56. {
  57. $this->userManagerPage->addUser('Test User1', 'login1', 'password1', 'user1@test.com', array('Registered'));
  58. $this->userManagerPage->addUser('Test User2', 'login2', 'password2', 'user2@test.com', array('Manager'));
  59. $this->userManagerPage->addUser('Test User3', 'login3', 'password3', 'user3@test.com', array('Registered', 'Manager'));
  60. $this->assertTrue($this->userManagerPage->getRowNumber('Test User1') > 0, 'Test User1 should be present');
  61. $this->assertTrue($this->userManagerPage->getRowNumber('Test User2') > 0, 'Test User2 should be present');
  62. $this->assertTrue($this->userManagerPage->getRowNumber('Test User3') > 0, 'Test User3 should be present');
  63. $this->userManagerPage->changeUserState('Test User1', 'unpublished');
  64. $this->userManagerPage->editUser('Test User2', array('Block this User' => 'Yes'));
  65. $this->userManagerPage->setFilter('State', 'Disabled');
  66. $this->assertTrue($this->userManagerPage->getRowNumber('Test User1') > 0, 'Test User1 should be present');
  67. $this->assertTrue($this->userManagerPage->getRowNumber('Test User2') > 0, 'Test User2 should be present');
  68. $this->assertFalse($this->userManagerPage->getRowNumber('Test User3') > 0, 'Test User3 should not be present');
  69. $this->userManagerPage->setFilter('State', 'State');
  70. $this->userManagerPage->setFilter('Active', 'Unactivated');
  71. $this->assertFalse($this->userManagerPage->getRowNumber('Test User1') > 0, 'Test User1 should not be present');
  72. $this->assertFalse($this->userManagerPage->getRowNumber('Test User2') > 0, 'Test User2 should not be present');
  73. $this->assertFalse($this->userManagerPage->getRowNumber('Test User3') > 0, 'Test User3 should not be present');
  74. $this->userManagerPage->setFilter('Active', 'Active');
  75. $this->userManagerPage->setFilter('Group', 'Manager');
  76. $this->assertFalse($this->userManagerPage->getRowNumber('Test User1') > 0, 'Test User1 should not be present');
  77. $this->assertTrue($this->userManagerPage->getRowNumber('Test User2') > 0, 'Test User2 should be present');
  78. $this->assertTrue($this->userManagerPage->getRowNumber('Test User3') > 0, 'Test User3 should be present');
  79. $this->userManagerPage->searchFor();
  80. $this->userManagerPage->delete('Test User');
  81. $this->assertFalse($this->userManagerPage->getRowNumber('Test User1') > 0, 'Test User1 should not be present');
  82. $this->assertFalse($this->userManagerPage->getRowNumber('Test User2') > 0, 'Test User2 should not be present');
  83. $this->assertFalse($this->userManagerPage->getRowNumber('Test User3') > 0, 'Test User3 should not be present');
  84. }
  85. /**
  86. * @test
  87. */
  88. public function setFilter_TestOrdering_ShouldOrderUsers()
  89. {
  90. $this->userManagerPage->addUser('Test User1', 'login2', 'password1', 'user1@test.com', array('Registered'));
  91. $this->userManagerPage->addUser('Test User3', 'login3', 'password3', 'user2@test.com', array('Registered', 'Manager'));
  92. $this->userManagerPage->addUser('Test User2', 'login1', 'password2', 'user3@test.com', array('Manager'));
  93. $this->assertTrue($this->userManagerPage->getRowNumber('Test User1') > 0, 'Test User1 should be present');
  94. $this->assertTrue($this->userManagerPage->getRowNumber('Test User2') > 0, 'Test User2 should be present');
  95. $this->assertTrue($this->userManagerPage->getRowNumber('Test User3') > 0, 'Test User3 should be present');
  96. $this->userManagerPage->changeUserState('Test User1', 'unpublished');
  97. $this->userManagerPage->editUser('Test User2', array('Block this User' => 'Yes'));
  98. $orderings = array('Name', 'Username', 'Enabled', 'Activated', 'Email', 'Last visit date', 'Registration date', 'ID');
  99. $rows = array('Super User', 'Test User1', 'Test User2', 'Test User3');
  100. $actualRowNumbers = $this->userManagerPage->orderAndGetRowNumbers($orderings, $rows);
  101. $userNames = array($this->cfg->username, 'login2', 'login1', 'login3');
  102. $userNamesSorted = $userNames;
  103. sort($userNamesSorted, SORT_STRING);
  104. $userNamesReversed = array_reverse($userNamesSorted);
  105. $emails = array($this->cfg->admin_email, 'user1@test.com', 'user3@test.com', 'user2@test.com');
  106. $emailsSorted = $emails;
  107. sort($emailsSorted, SORT_STRING);
  108. $emailsReversed = array_reverse($emailsSorted);
  109. $expectedRowNumbers = array(
  110. 'Name' => array('ascending' => array(1, 2, 3, 4), 'descending' => array(4, 3, 2, 1)),
  111. 'Username' => array(
  112. 'ascending' => array(
  113. array_search($userNames[0], $userNamesSorted) + 1,
  114. array_search($userNames[1], $userNamesSorted) + 1,
  115. array_search($userNames[2], $userNamesSorted) + 1,
  116. array_search($userNames[3], $userNamesSorted) + 1,
  117. ),
  118. 'descending' => array(
  119. array_search($userNames[0], $userNamesReversed) + 1,
  120. array_search($userNames[1], $userNamesReversed) + 1,
  121. array_search($userNames[2], $userNamesReversed) + 1,
  122. array_search($userNames[3], $userNamesReversed) + 1,
  123. )
  124. ),
  125. 'Enabled' => array('ascending' => array(1, 3, 4, 2), 'descending' => array(3, 1, 2, 4)),
  126. 'Activated' => array('ascending' => array(4, 1, 3, 2), 'descending' => array(1, 2, 4, 3)),
  127. 'Email' => array(
  128. 'ascending' => array(
  129. array_search($emails[0], $emailsSorted) + 1,
  130. array_search($emails[1], $emailsSorted) + 1,
  131. array_search($emails[2], $emailsSorted) + 1,
  132. array_search($emails[3], $emailsSorted) + 1,
  133. ),
  134. 'descending' => array(
  135. array_search($emails[0], $emailsReversed) + 1,
  136. array_search($emails[1], $emailsReversed) + 1,
  137. array_search($emails[2], $emailsReversed) + 1,
  138. array_search($emails[3], $emailsReversed) + 1,
  139. )
  140. ),
  141. 'Last visit date' => array('ascending' => array(4, 1, 3, 2), 'descending' => array(1, 2, 4, 3)),
  142. 'Registration date' => array('ascending' => array(1, 2, 4, 3), 'descending' => array(4, 3, 1, 2)),
  143. 'ID' => array('ascending' => array(1, 2, 4, 3), 'descending' => array(4, 3, 1, 2))
  144. );
  145. foreach ($actualRowNumbers as $ordering => $orderingRowNumbers)
  146. {
  147. foreach ($orderingRowNumbers as $order => $rowNumbers)
  148. {
  149. foreach ($rowNumbers as $key => $rowNumber)
  150. {
  151. $this->assertEquals(
  152. $expectedRowNumbers[$ordering][$order][$key],
  153. $rowNumber,
  154. 'When the table is sorted by ' . strtolower($ordering) . ' in the ' . $order . ' order '
  155. . $rows[$key] . ' should be in row ' . $expectedRowNumbers[$ordering][$order][$key]
  156. );
  157. }
  158. }
  159. }
  160. $this->userManagerPage->searchFor();
  161. $this->userManagerPage->delete('Test User');
  162. $this->assertFalse($this->userManagerPage->getRowNumber('Test User1') > 0, 'Test User1 should not be present');
  163. $this->assertFalse($this->userManagerPage->getRowNumber('Test User2') > 0, 'Test User2 should not be present');
  164. $this->assertFalse($this->userManagerPage->getRowNumber('Test User3') > 0, 'Test User3 should not be present');
  165. }
  166. }