/tests/cases/test/GroupTest.php

https://github.com/mackstar/lithium · PHP · 223 lines · 178 code · 39 blank · 6 comment · 0 complexity · d3cfc99061cba810c7de9f8bab34d8e7 MD5 · raw file

  1. <?php
  2. /**
  3. * Lithium: the most rad php framework
  4. *
  5. * @copyright Copyright 2012, Union of RAD (http://union-of-rad.org)
  6. * @license http://opensource.org/licenses/bsd-license.php The BSD License
  7. */
  8. namespace lithium\tests\cases\test;
  9. use lithium\test\Group;
  10. use lithium\util\Collection;
  11. use lithium\core\Libraries;
  12. class GroupTest extends \lithium\test\Unit {
  13. public function testAdd() {
  14. $group = new Group();
  15. $expected = new Collection();
  16. $result = $group->tests();
  17. $this->assertEqual($expected, $result);
  18. }
  19. public function testAddCaseThroughConstructor() {
  20. $data = (array) "\lithium\\tests\mocks\\test";
  21. $group = new Group(compact('data'));
  22. $expected = new Collection(array(
  23. 'data' => array(
  24. new \lithium\tests\mocks\test\cases\MockSkipThrowsException(),
  25. new \lithium\tests\mocks\test\cases\MockTest(),
  26. new \lithium\tests\mocks\test\cases\MockTestErrorHandling()
  27. )
  28. ));
  29. $result = $group->tests();
  30. $this->assertEqual($expected, $result);
  31. }
  32. public function testAddEmpty() {
  33. $group = new Group();
  34. $group->add('');
  35. $group->add('\\');
  36. $group->add('foobar');
  37. $this->assertFalse($group->items());
  38. }
  39. public function testAddByString() {
  40. $group = new Group();
  41. $result = $group->add('lithium\tests\cases\g11n');
  42. $expected = array(
  43. 'lithium\tests\cases\g11n\CatalogTest',
  44. 'lithium\tests\cases\g11n\LocaleTest',
  45. 'lithium\tests\cases\g11n\MessageTest',
  46. 'lithium\tests\cases\g11n\catalog\AdapterTest',
  47. 'lithium\tests\cases\g11n\catalog\adapter\CodeTest',
  48. 'lithium\tests\cases\g11n\catalog\adapter\GettextTest',
  49. 'lithium\tests\cases\g11n\catalog\adapter\MemoryTest',
  50. 'lithium\tests\cases\g11n\catalog\adapter\PhpTest'
  51. );
  52. $this->assertEqual($expected, $result);
  53. $result = $group->add('lithium\tests\cases\data\ModelTest');
  54. $expected = array(
  55. 'lithium\tests\cases\g11n\CatalogTest',
  56. 'lithium\tests\cases\g11n\LocaleTest',
  57. 'lithium\tests\cases\g11n\MessageTest',
  58. 'lithium\tests\cases\g11n\catalog\AdapterTest',
  59. 'lithium\tests\cases\g11n\catalog\adapter\CodeTest',
  60. 'lithium\tests\cases\g11n\catalog\adapter\GettextTest',
  61. 'lithium\tests\cases\g11n\catalog\adapter\MemoryTest',
  62. 'lithium\tests\cases\g11n\catalog\adapter\PhpTest',
  63. 'lithium\tests\cases\data\ModelTest'
  64. );
  65. $this->assertEqual($expected, $result);
  66. }
  67. public function testAddByMixedThroughConstructor() {
  68. $group = new Group(array('data' => array(
  69. 'lithium\tests\cases\data\ModelTest',
  70. new \lithium\tests\cases\core\ObjectTest()
  71. )));
  72. $expected = new Collection(array('data' => array(
  73. new \lithium\tests\cases\data\ModelTest(),
  74. new \lithium\tests\cases\core\ObjectTest()
  75. )));
  76. $result = $group->tests();
  77. $this->assertEqual($expected, $result);
  78. }
  79. public function testTests() {
  80. $group = new Group();
  81. $expected = array(
  82. 'lithium\tests\cases\g11n\CatalogTest'
  83. );
  84. $result = $group->add('lithium\tests\cases\g11n\CatalogTest');
  85. $this->assertEqual($expected, $result);
  86. $results = $group->tests();
  87. $this->assertTrue(is_a($results, '\lithium\util\Collection'));
  88. $results = $group->tests();
  89. $this->assertTrue(is_a($results->current(), 'lithium\tests\cases\g11n\CatalogTest'));
  90. }
  91. public function testAddEmptyTestsRun() {
  92. $group = new Group();
  93. $result = $group->add('lithium\tests\mocks\test\MockUnitTest');
  94. $expected = array('lithium\tests\mocks\test\MockUnitTest');
  95. $this->assertEqual($expected, $result);
  96. $results = $group->tests();
  97. $this->assertTrue(is_a($results, 'lithium\util\Collection'));
  98. $this->assertTrue(is_a($results->current(), 'lithium\tests\mocks\test\MockUnitTest'));
  99. $results = $group->tests()->run();
  100. $expected = 'pass';
  101. $result = $results[0][0]['result'];
  102. $this->assertEqual($expected, $result);
  103. $expected = 'testNothing';
  104. $result = $results[0][0]['method'];
  105. $this->assertEqual($expected, $result);
  106. $expected = 'lithium\tests\mocks\test\MockUnitTest';
  107. $result = $results[0][0]['class'];
  108. $this->assertEqual($expected, $result);
  109. $expected = str_replace('\\', '/', LITHIUM_LIBRARY_PATH);
  110. $expected = realpath($expected . '/lithium/tests/mocks/test/MockUnitTest.php');
  111. $result = $results[0][0]['file'];
  112. $this->assertEqual($expected, str_replace('\\', '/', $result));
  113. }
  114. public function testGroupAllForLithium() {
  115. Libraries::cache(false);
  116. $result = Group::all(array('library' => 'lithium'));
  117. $this->assertTrue(count($result) >= 60);
  118. }
  119. public function testAddTestAppGroup() {
  120. $test_app = Libraries::get(true, 'resources') . '/tmp/tests/test_app';
  121. mkdir($test_app);
  122. Libraries::add('test_app', array('path' => $test_app));
  123. mkdir($test_app . '/tests/cases/models', 0777, true);
  124. file_put_contents($test_app . '/tests/cases/models/UserTest.php',
  125. "<?php namespace test_app\\tests\\cases\\models;\n
  126. class UserTest extends \\lithium\\test\\Unit { public function testMe() {
  127. \$this->assertTrue(true);
  128. }}"
  129. );
  130. Libraries::cache(false);
  131. $expected = (array) Libraries::find('test_app', array(
  132. 'recursive' => true,
  133. 'path' => '/tests',
  134. 'filter' => '/cases|integration|functional/'
  135. ));
  136. Libraries::cache(false);
  137. $group = new Group();
  138. $result = $group->add('test_app');
  139. $this->assertEqual($expected, $result);
  140. Libraries::cache(false);
  141. $this->_cleanUp();
  142. }
  143. public function testRunGroupAllForTestApp() {
  144. $test_app = Libraries::get(true, 'resources') . '/tmp/tests/test_app';
  145. mkdir($test_app);
  146. Libraries::add('test_app', array('path' => $test_app));
  147. mkdir($test_app . '/tests/cases/models', 0777, true);
  148. file_put_contents($test_app . '/tests/cases/models/UserTest.php',
  149. "<?php namespace test_app\\tests\\cases\\models;\n
  150. class UserTest extends \\lithium\\test\\Unit { public function testMe() {
  151. \$this->assertTrue(true);
  152. }}"
  153. );
  154. Libraries::cache(false);
  155. $expected = array('test_app\\tests\\cases\\models\\UserTest');
  156. $result = Group::all(array('library' => 'test_app'));
  157. $this->assertEqual($expected, $result);
  158. Libraries::cache(false);
  159. $this->_cleanUp();
  160. }
  161. public function testRunGroupForTestAppModel() {
  162. $test_app = Libraries::get(true, 'resources') . '/tmp/tests/test_app';
  163. mkdir($test_app);
  164. Libraries::add('test_app', array('path' => $test_app));
  165. mkdir($test_app . '/tests/cases/models', 0777, true);
  166. file_put_contents($test_app . '/tests/cases/models/UserTest.php',
  167. "<?php namespace test_app\\tests\\cases\\models;\n
  168. class UserTest extends \\lithium\\test\\Unit { public function testMe() {
  169. \$this->assertTrue(true);
  170. }}"
  171. );
  172. Libraries::cache(false);
  173. $group = new Group(array('data' => array('\\test_app\\tests\\cases')));
  174. $expected = array('test_app\\tests\\cases\\models\\UserTest');
  175. $result = $group->to('array');
  176. $this->assertEqual($expected, $result);
  177. $expected = 'pass';
  178. $result = $group->tests()->run();
  179. $this->assertEqual($expected, $result[0][0]['result']);
  180. Libraries::cache(false);
  181. $this->_cleanUp();
  182. }
  183. }
  184. ?>