PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/Gitty/DefaultAdapterTest.php

https://github.com/fabiang/gitty
PHP | 276 lines | 203 code | 30 blank | 43 comment | 0 complexity | 56fa3ff1cac37c29a88c3d605fb0b9ab MD5 | raw file
Possible License(s): GPL-3.0
  1. <?php
  2. namespace Gitty\Tests\Gitty;
  3. use \Gitty as Gitty;
  4. require_once 'PHPUnit/Framework.php';
  5. require_once 'PHPUnit/Framework/TestCase.php';
  6. require_once \dirname(__FILE__).'/../../library/Gitty/Config.php';
  7. require_once \dirname(__FILE__).'/../../library/Gitty/Config/Ini.php';
  8. require_once \dirname(__FILE__).'/../../library/Gitty/Repositories/Exception.php';
  9. require_once \dirname(__FILE__).'/../../library/Gitty/Remote/Exception.php';
  10. require_once \dirname(__FILE__).'/../../library/Gitty/Repositories.php';
  11. require_once \dirname(__FILE__).'/../../library/Gitty/Remote.php';
  12. class DefaultAdapterTest extends \PHPUnit_Framework_TestCase
  13. {
  14. protected $repoDefaultAdapter = null;
  15. protected $remoteDefaultAdapter = null;
  16. protected $includePath = null;
  17. public function setUp()
  18. {
  19. $this->repoDefaultAdapter = Gitty\Repositories::getDefaultAdapter();
  20. $this->remoteDefaultAdapter = Gitty\Remote::getDefaultAdapter();
  21. $this->includePath = \get_include_path();
  22. \set_include_path(
  23. $this->includePath . \PATH_SEPARATOR . \dirname(__FILE__) . '/../data/'
  24. );
  25. }
  26. public function tearDown()
  27. {
  28. Gitty\Repositories::setDefaultAdapter($this->repoDefaultAdapter);
  29. Gitty\Remote::setDefaultAdapter($this->remoteDefaultAdapter);
  30. \set_include_path($this->includePath);
  31. }
  32. /**
  33. * @dataProvider provideDefaultAdapters
  34. * @covers Gitty\Remote::setDefaultAdapter
  35. * @covers Gitty\Remote::getDefaultAdapter
  36. * @covers Gitty\Repositories::setDefaultAdapter
  37. * @covers Gitty\Repositories::getDefaultAdapter
  38. */
  39. public function testSetDefaultAdapter($class, $adapter)
  40. {
  41. $class::setDefaultAdapter($adapter);
  42. $this->assertEquals($adapter, $class::getDefaultAdapter());
  43. }
  44. /**
  45. * @dataProvider provideDefaultAdapterClassInvalidData
  46. * @covers Gitty\Remote::__construct
  47. * @covers Gitty\Remote\Exception
  48. * @covers Gitty\Repositories::__construct
  49. * @covers Gitty\Repositories\Exception
  50. */
  51. public function testDefaultAdapterClassNotFound($class, $unkown_class, $config, $exception)
  52. {
  53. $this->setExpectedException($exception);
  54. $class::setDefaultAdapter($unkown_class);
  55. $myClass = new $class($config);
  56. }
  57. /**
  58. * @dataProvider provideDefaultAdapterClassInvalidData
  59. * @covers Gitty\Remote::__construct
  60. * @covers Gitty\Remote\Exception
  61. * @covers Gitty\Repositories::__construct
  62. * @covers Gitty\Repositories\Exception
  63. */
  64. public function testDefaultAdapterClassInvalid($class, $invalid_class, $config, $exception)
  65. {
  66. $this->setExpectedException($exception);
  67. $class::setDefaultAdapter($invalid_class);
  68. $myClass = new $class($config);
  69. }
  70. /**
  71. * @dataProvider provideDefaultAdapterLoadingData
  72. * @covers Gitty\Remote::__construct
  73. * @covers Gitty\Repositories::__construct
  74. */
  75. public function testDefaultAdapterLoading($class, $config, $getadapter)
  76. {
  77. $myClass = new $class($config);
  78. $default_adapter = $class::getDefaultAdapter();
  79. $this->assertEquals(\get_class($getadapter()), $default_adapter);
  80. }
  81. /**
  82. * @dataProvider provideUnknownAdapterData
  83. * @covers Gitty\Remote::__construct
  84. * @covers Gitty\Remote\Exception
  85. * @covers Gitty\Repositories::__construct
  86. * @covers Gitty\Repositories\Exception
  87. */
  88. public function testUnknownAdapter($class, $config, $exception)
  89. {
  90. $this->setExpectedException($exception);
  91. $class::setDefaultAdapter('MyNamespace\\Test\\Foo');
  92. $myClass = new $class($config);
  93. }
  94. /**
  95. * @dataProvider provideInvalidAdapterData
  96. * @covers Gitty\Remote::__construct
  97. * @covers Gitty\Remote\Exception
  98. * @covers Gitty\Repositories::__construct
  99. * @covers Gitty\Repositories\Exception
  100. */
  101. public function testInvalidAdapter($class, $namespace, $config, $exception)
  102. {
  103. $this->setExpectedException($exception);
  104. $class::registerAdapterNamespace($namespace);
  105. try {
  106. $myClass = new $class($config);
  107. } catch(\Exception $e) {
  108. $class::unregisterAdapterNamespace($namespace);
  109. throw $e;
  110. }
  111. $class::unregisterAdapterNamespace($namespace);
  112. }
  113. /**
  114. * data providers
  115. */
  116. public static function provideDefaultAdapters()
  117. {
  118. return array(
  119. array('Gitty\\Remote', 'Gitty\\Remote\\Adapter\\Foobar'),
  120. array('Gitty\\Repositories', 'Gitty\\Repositories\\Adapter\\Foobar')
  121. );
  122. }
  123. public static function provideDefaultAdapterClassNotFoundData()
  124. {
  125. $remote_config = new Gitty\Config\Ini(
  126. \dirname(__FILE__).'/../data/remoteUnknownAdapter.ini'
  127. );
  128. $remote_config = $remote_config->projects->myproject->deployment->hostnamecom;
  129. $repo_config = new Gitty\Config\Ini(
  130. \dirname(__FILE__).'/../data/unknownAdapter.ini'
  131. );
  132. return array(
  133. array(
  134. 'Gitty\\Remote',
  135. 'Gitty\Version'.\uniqid(),
  136. $remote_config,
  137. 'Gitty\\Remote\\Exception'
  138. ),
  139. array(
  140. 'Gitty\\Repositories',
  141. 'Gitty\Version'.\uniqid(),
  142. $repo_config,
  143. 'Gitty\\Repositories\\Exception'
  144. )
  145. );
  146. }
  147. public static function provideDefaultAdapterClassInvalidData()
  148. {
  149. $remote_config = new Gitty\Config\Ini(
  150. \dirname(__FILE__).'/../data/remoteUnknownAdapter.ini'
  151. );
  152. $remote_config = $remote_config->projects->myproject->deployment->hostnamecom;
  153. $repo_config = new Gitty\Config\Ini(
  154. \dirname(__FILE__).'/../data/unknownAdapter.ini'
  155. );
  156. return array(
  157. array(
  158. 'Gitty\\Remote',
  159. 'ExampleNamespace\\Gitty\\Remote\\Adapter\\Invalid',
  160. $remote_config,
  161. 'Gitty\\Remote\\Exception'
  162. ),
  163. array(
  164. 'Gitty\\Repositories',
  165. 'ExampleNamespace\\Gitty\\Repositories\\Adapter\\Invalid',
  166. $repo_config,
  167. 'Gitty\\Repositories\\Exception'
  168. )
  169. );
  170. }
  171. public static function provideDefaultAdapterLoadingData()
  172. {
  173. $remote_config = new Gitty\Config\Ini(
  174. \dirname(__FILE__).'/../data/emptyAdapter.ini'
  175. );
  176. $remote_config = $remote_config->projects->myproject->deployment->hostnamecom;
  177. $repo_config = new Gitty\Config\Ini(
  178. \dirname(__FILE__).'/../data/emptyAdapter.ini'
  179. );
  180. return array(
  181. array(
  182. 'Gitty\\Remote',
  183. $remote_config,
  184. function () use($remote_config) {
  185. $r = new Gitty\Remote($remote_config);
  186. return $r->getAdapter();
  187. }
  188. ),
  189. array(
  190. 'Gitty\\Repositories',
  191. $repo_config,
  192. function () use($repo_config) {
  193. $r = new Gitty\Repositories($repo_config);
  194. $repos = $r->getRepositories();
  195. return $repos[0];
  196. }
  197. )
  198. );
  199. }
  200. public static function provideUnknownAdapterData()
  201. {
  202. $remote_config = new Gitty\Config\Ini(
  203. \dirname(__FILE__).'/../data/emptyAdapter.ini'
  204. );
  205. $remote_config = $remote_config->projects->myproject->deployment->hostnamecom;
  206. $repo_config = new Gitty\Config\Ini(
  207. \dirname(__FILE__).'/../data/emptyAdapter.ini'
  208. );
  209. return array(
  210. array(
  211. 'Gitty\\Remote',
  212. $remote_config,
  213. 'Gitty\\Remote\\Exception'
  214. ),
  215. array(
  216. 'Gitty\\Repositories',
  217. $repo_config,
  218. 'Gitty\\Repositories\\Exception'
  219. ),
  220. );
  221. }
  222. public static function provideInvalidAdapterData()
  223. {
  224. $remote_config = new Gitty\Config\Ini(
  225. \dirname(__FILE__).'/../data/invalidAdapter.ini'
  226. );
  227. $remote_config = $remote_config->projects->myproject->deployment->hostnamecom;
  228. $repo_config = new Gitty\Config\Ini(
  229. \dirname(__FILE__).'/../data/invalidAdapter.ini'
  230. );
  231. return array(
  232. array(
  233. 'Gitty\\Remote',
  234. 'ExampleNamespace\\Gitty\\Remote\\Adapter',
  235. $remote_config,
  236. 'Gitty\\Remote\\Exception'
  237. ),
  238. array(
  239. 'Gitty\\Repositories',
  240. 'ExampleNamespace\\Gitty\\Repositories\\Adapter',
  241. $repo_config,
  242. 'Gitty\\Repositories\\Exception'
  243. ),
  244. );
  245. }
  246. }