AdminTest.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782
  1. <?php
  2. /*
  3. * This file is part of the Sonata package.
  4. *
  5. * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Sonata\AdminBundle\Tests\Admin;
  11. use Sonata\AdminBundle\Admin\Admin;
  12. use Sonata\AdminBundle\Tests\Fixtures\Entity\FooToString;
  13. use Sonata\AdminBundle\Tests\Fixtures\Entity\FooToStringNull;
  14. use Sonata\AdminBundle\Tests\Fixtures\Admin\PostAdmin;
  15. use Sonata\AdminBundle\Tests\Fixtures\Admin\CommentAdmin;
  16. use Symfony\Component\HttpFoundation\Request;
  17. class AdminTest extends \PHPUnit_Framework_TestCase
  18. {
  19. /**
  20. * @covers Sonata\AdminBundle\Admin\Admin::__construct
  21. */
  22. public function testConstructor()
  23. {
  24. $class = 'Application\Sonata\NewsBundle\Entity\Post';
  25. $baseControllerName = 'SonataNewsBundle:PostAdmin';
  26. $admin = new PostAdmin('sonata.post.admin.post', $class, $baseControllerName);
  27. $this->assertInstanceOf('Sonata\AdminBundle\Admin\Admin', $admin);
  28. $this->assertEquals($class, $admin->getClass());
  29. $this->assertEquals($baseControllerName, $admin->getBaseControllerName());
  30. }
  31. /**
  32. * @covers Sonata\AdminBundle\Admin\Admin::hasChild
  33. * @covers Sonata\AdminBundle\Admin\Admin::addChild
  34. * @covers Sonata\AdminBundle\Admin\Admin::getChild
  35. * @covers Sonata\AdminBundle\Admin\Admin::isChild
  36. * @covers Sonata\AdminBundle\Admin\Admin::hasChildren
  37. * @covers Sonata\AdminBundle\Admin\Admin::getChildren
  38. */
  39. public function testChildren()
  40. {
  41. $postAdmin = new PostAdmin('sonata.post.admin.post', 'Application\Sonata\NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  42. $this->assertFalse($postAdmin->hasChildren());
  43. $this->assertFalse($postAdmin->hasChild('comment'));
  44. $commentAdmin = new CommentAdmin('sonata.post.admin.comment', 'Application\Sonata\NewsBundle\Entity\Comment', 'SonataNewsBundle:CommentAdmin');
  45. $postAdmin->addChild($commentAdmin);
  46. $this->assertTrue($postAdmin->hasChildren());
  47. $this->assertTrue($postAdmin->hasChild('sonata.post.admin.comment'));
  48. $this->assertEquals('sonata.post.admin.comment', $postAdmin->getChild('sonata.post.admin.comment')->getCode());
  49. $this->assertEquals('sonata.post.admin.post|sonata.post.admin.comment', $postAdmin->getChild('sonata.post.admin.comment')->getBaseCodeRoute());
  50. $this->assertEquals($postAdmin, $postAdmin->getChild('sonata.post.admin.comment')->getParent());
  51. $this->assertFalse($postAdmin->isChild());
  52. $this->assertTrue($commentAdmin->isChild());
  53. $this->assertEquals(array('sonata.post.admin.comment' => $commentAdmin), $postAdmin->getChildren());
  54. }
  55. /**
  56. * @covers Sonata\AdminBundle\Admin\Admin::configure
  57. */
  58. public function testConfigure()
  59. {
  60. $admin = new PostAdmin('sonata.post.admin.post', 'Application\Sonata\NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  61. $this->assertTrue($admin->getUniqid() == "");
  62. $admin->initialize();
  63. $this->assertFalse($admin->getUniqid() == "");
  64. $this->assertEquals('Post', $admin->getClassnameLabel());
  65. $admin = new CommentAdmin('sonata.post.admin.comment', 'Application\Sonata\NewsBundle\Entity\Comment', 'SonataNewsBundle:CommentAdmin');
  66. $admin->setClassnameLabel('postcomment');
  67. $admin->initialize();
  68. $this->assertEquals('postcomment', $admin->getClassnameLabel());
  69. }
  70. public function testConfigureWithValidParentAssociationMapping()
  71. {
  72. $admin = new PostAdmin('sonata.post.admin.post', 'Application\Sonata\NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  73. $admin->setParentAssociationMapping('Category');
  74. $admin->initialize();
  75. $this->assertEquals('Category', $admin->getParentAssociationMapping());
  76. }
  77. public function provideGetBaseRoutePattern()
  78. {
  79. return array(
  80. array(
  81. 'Application\Sonata\NewsBundle\Entity\Post',
  82. '/sonata/news/post'
  83. ),
  84. array(
  85. 'Application\Sonata\NewsBundle\Document\Post',
  86. '/sonata/news/post'
  87. ),
  88. array(
  89. 'MyApplication\MyBundle\Entity\Post',
  90. '/myapplication/my/post'
  91. ),
  92. array(
  93. 'MyApplication\MyBundle\Entity\Post\Category',
  94. '/myapplication/my/post-category'
  95. ),
  96. array(
  97. 'MyApplication\MyBundle\Entity\Product\Category',
  98. '/myapplication/my/product-category'
  99. ),
  100. array(
  101. 'MyApplication\MyBundle\Entity\Other\Product\Category',
  102. '/myapplication/my/other-product-category'
  103. ),
  104. array(
  105. 'Symfony\Cmf\Bundle\FooBundle\Document\Menu',
  106. '/cmf/foo/menu'
  107. ),
  108. array(
  109. 'Symfony\Cmf\Bundle\FooBundle\Doctrine\Phpcr\Menu',
  110. '/cmf/foo/menu'
  111. ),
  112. array(
  113. 'Symfony\Bundle\BarBarBundle\Doctrine\Phpcr\Menu',
  114. '/symfony/barbar/menu'
  115. ),
  116. array(
  117. 'Symfony\Bundle\BarBarBundle\Doctrine\Phpcr\Menu\Item',
  118. '/symfony/barbar/menu-item'
  119. ),
  120. array(
  121. 'Symfony\Cmf\Bundle\FooBundle\Doctrine\Orm\Menu',
  122. '/cmf/foo/menu'
  123. ),
  124. array(
  125. 'Symfony\Cmf\Bundle\FooBundle\Doctrine\MongoDB\Menu',
  126. '/cmf/foo/menu'
  127. ),
  128. array(
  129. 'Symfony\Cmf\Bundle\FooBundle\Doctrine\CouchDB\Menu',
  130. '/cmf/foo/menu'
  131. ),
  132. );
  133. }
  134. /**
  135. * @dataProvider provideGetBaseRoutePattern
  136. */
  137. public function testGetBaseRoutePattern($objFqn, $expected)
  138. {
  139. $admin = new PostAdmin('sonata.post.admin.post', $objFqn, 'SonataNewsBundle:PostAdmin');
  140. $this->assertEquals($expected, $admin->getBaseRoutePattern());
  141. }
  142. public function testGetBaseRoutePatternWithChildAdmin()
  143. {
  144. $postAdmin = new PostAdmin('sonata.post.admin.post', 'Application\Sonata\NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  145. $commentAdmin = new CommentAdmin('sonata.post.admin.comment', 'Application\Sonata\NewsBundle\Entity\Comment', 'SonataNewsBundle:CommentAdmin');
  146. $commentAdmin->setParent($postAdmin);
  147. $this->assertEquals('/sonata/news/post/{id}/comment', $commentAdmin->getBaseRoutePattern());
  148. }
  149. /**
  150. * @expectedException RuntimeException
  151. */
  152. public function testGetBaseRoutePatternWithUnreconizedClassname()
  153. {
  154. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  155. $admin->getBaseRoutePattern();
  156. }
  157. public function provideGetBaseRouteName()
  158. {
  159. return array(
  160. array(
  161. 'Application\Sonata\NewsBundle\Entity\Post',
  162. 'admin_sonata_news_post'
  163. ),
  164. array(
  165. 'Application\Sonata\NewsBundle\Document\Post',
  166. 'admin_sonata_news_post'
  167. ),
  168. array(
  169. 'MyApplication\MyBundle\Entity\Post',
  170. 'admin_myapplication_my_post'
  171. ),
  172. array(
  173. 'MyApplication\MyBundle\Entity\Post\Category',
  174. 'admin_myapplication_my_post_category'
  175. ),
  176. array(
  177. 'MyApplication\MyBundle\Entity\Product\Category',
  178. 'admin_myapplication_my_product_category'
  179. ),
  180. array(
  181. 'MyApplication\MyBundle\Entity\Other\Product\Category',
  182. 'admin_myapplication_my_other_product_category'
  183. ),
  184. array(
  185. 'Symfony\Cmf\Bundle\FooBundle\Document\Menu',
  186. 'admin_cmf_foo_menu'
  187. ),
  188. array(
  189. 'Symfony\Cmf\Bundle\FooBundle\Doctrine\Phpcr\Menu',
  190. 'admin_cmf_foo_menu'
  191. ),
  192. array(
  193. 'Symfony\Bundle\BarBarBundle\Doctrine\Phpcr\Menu',
  194. 'admin_symfony_barbar_menu'
  195. ),
  196. array(
  197. 'Symfony\Bundle\BarBarBundle\Doctrine\Phpcr\Menu\Item',
  198. 'admin_symfony_barbar_menu_item'
  199. ),
  200. array(
  201. 'Symfony\Cmf\Bundle\FooBundle\Doctrine\Orm\Menu',
  202. 'admin_cmf_foo_menu'
  203. ),
  204. array(
  205. 'Symfony\Cmf\Bundle\FooBundle\Doctrine\MongoDB\Menu',
  206. 'admin_cmf_foo_menu'
  207. ),
  208. array(
  209. 'Symfony\Cmf\Bundle\FooBundle\Doctrine\CouchDB\Menu',
  210. 'admin_cmf_foo_menu'
  211. ),
  212. );
  213. }
  214. /**
  215. * @dataProvider provideGetBaseRouteName
  216. */
  217. public function testGetBaseRouteName($objFqn, $expected)
  218. {
  219. $admin = new PostAdmin('sonata.post.admin.post', $objFqn, 'SonataNewsBundle:PostAdmin');
  220. $this->assertEquals($expected, $admin->getBaseRouteName());
  221. }
  222. public function testGetBaseRouteNameWithChildAdmin()
  223. {
  224. $pathInfo = new \Sonata\AdminBundle\Route\PathInfoBuilder($this->getMock('Sonata\AdminBundle\Model\AuditManagerInterface'));
  225. $postAdmin = new PostAdmin('sonata.post.admin.post', 'Application\Sonata\NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  226. $postAdmin->setRouteBuilder($pathInfo);
  227. $postAdmin->initialize();
  228. $commentAdmin = new CommentAdmin('sonata.post.admin.comment', 'Application\Sonata\NewsBundle\Entity\Comment', 'SonataNewsBundle:CommentAdmin');
  229. $commentAdmin->setRouteBuilder($pathInfo);
  230. $commentAdmin->initialize();
  231. $postAdmin->addChild($commentAdmin);
  232. $this->assertEquals('admin_sonata_news_post_comment', $commentAdmin->getBaseRouteName());
  233. $this->assertTrue($postAdmin->hasRoute('show'));
  234. $this->assertTrue($postAdmin->hasRoute('sonata.post.admin.post.show'));
  235. $this->assertTrue($postAdmin->hasRoute('sonata.post.admin.post|sonata.post.admin.comment.show'));
  236. $this->assertTrue($postAdmin->hasRoute('sonata.post.admin.comment.list'));
  237. $this->assertFalse($postAdmin->hasRoute('sonata.post.admin.post|sonata.post.admin.comment.edit'));
  238. $this->assertFalse($commentAdmin->hasRoute('edit'));
  239. }
  240. /**
  241. * @expectedException RuntimeException
  242. */
  243. public function testGetBaseRouteNameWithUnreconizedClassname()
  244. {
  245. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  246. $admin->getBaseRouteName();
  247. }
  248. /**
  249. * @covers Sonata\AdminBundle\Admin\Admin::setUniqid
  250. * @covers Sonata\AdminBundle\Admin\Admin::getUniqid
  251. */
  252. public function testUniqid()
  253. {
  254. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  255. $uniqid = uniqid();
  256. $admin->setUniqid($uniqid);
  257. $this->assertEquals($uniqid, $admin->getUniqid());
  258. }
  259. public function testToString()
  260. {
  261. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  262. $s = new \stdClass();
  263. $this->assertNotEmpty($admin->toString($s));
  264. $s = new FooToString;
  265. $this->assertEquals('salut', $admin->toString($s));
  266. // To string method is implemented, but returns null
  267. $s = new FooToStringNull;
  268. $this->assertNotEmpty($admin->toString($s));
  269. $this->assertEquals("", $admin->toString(false));
  270. }
  271. public function testIsAclEnabled()
  272. {
  273. $postAdmin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  274. $this->assertFalse($postAdmin->isAclEnabled());
  275. $commentAdmin = new CommentAdmin('sonata.post.admin.comment', 'Application\Sonata\NewsBundle\Entity\Comment', 'SonataNewsBundle:CommentAdmin');
  276. $commentAdmin->setSecurityHandler($this->getMock('Sonata\AdminBundle\Security\Handler\AclSecurityHandlerInterface'));
  277. $this->assertTrue($commentAdmin->isAclEnabled());
  278. }
  279. /**
  280. * @covers Sonata\AdminBundle\Admin\Admin::getSubClasses
  281. * @covers Sonata\AdminBundle\Admin\Admin::getSubClass
  282. * @covers Sonata\AdminBundle\Admin\Admin::setSubClasses
  283. * @covers Sonata\AdminBundle\Admin\Admin::hasSubClass
  284. * @covers Sonata\AdminBundle\Admin\Admin::hasActiveSubClass
  285. * @covers Sonata\AdminBundle\Admin\Admin::getActiveSubClass
  286. * @covers Sonata\AdminBundle\Admin\Admin::getActiveSubclassCode
  287. * @covers Sonata\AdminBundle\Admin\Admin::getClass
  288. */
  289. public function testSubClass()
  290. {
  291. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  292. $this->assertFalse($admin->hasSubClass('test'));
  293. $this->assertFalse($admin->hasActiveSubClass());
  294. $this->assertCount(0, $admin->getSubClasses());
  295. $this->assertNull($admin->getActiveSubClass());
  296. $this->assertNull($admin->getActiveSubclassCode());
  297. $this->assertEquals('NewsBundle\Entity\Post', $admin->getClass());
  298. // Just for the record, if there is no inheritance set, the getSubject is not used
  299. // the getSubject can also lead to some issue
  300. $admin->setSubject(new \stdClass());
  301. $this->assertEquals('stdClass', $admin->getClass());
  302. $admin->setSubClasses(array('extended1' => 'NewsBundle\Entity\PostExtended1', 'extended2' => 'NewsBundle\Entity\PostExtended2'));
  303. $this->assertFalse($admin->hasSubClass('test'));
  304. $this->assertTrue($admin->hasSubClass('extended1'));
  305. $this->assertFalse($admin->hasActiveSubClass());
  306. $this->assertCount(2, $admin->getSubClasses());
  307. $this->assertNull($admin->getActiveSubClass());
  308. $this->assertNull($admin->getActiveSubclassCode());
  309. $this->assertEquals('stdClass', $admin->getClass());
  310. $request = new \Symfony\Component\HttpFoundation\Request(array('subclass' => 'extended1'));
  311. $admin->setRequest($request);
  312. $this->assertFalse($admin->hasSubClass('test'));
  313. $this->assertTrue($admin->hasSubClass('extended1'));
  314. $this->assertTrue($admin->hasActiveSubClass());
  315. $this->assertCount(2, $admin->getSubClasses());
  316. $this->assertEquals('stdClass', $admin->getActiveSubClass());
  317. $this->assertEquals('extended1', $admin->getActiveSubclassCode());
  318. $this->assertEquals('stdClass', $admin->getClass());
  319. $request->query->set('subclass', 'inject');
  320. $this->assertNull($admin->getActiveSubclassCode());
  321. }
  322. /**
  323. * @expectedException RuntimeException
  324. */
  325. public function testNonExistantSubclass()
  326. {
  327. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  328. $admin->setRequest(new \Symfony\Component\HttpFoundation\Request(array('subclass' => 'inject')));
  329. $admin->setSubClasses(array('extended1' => 'NewsBundle\Entity\PostExtended1', 'extended2' => 'NewsBundle\Entity\PostExtended2'));
  330. $this->assertTrue($admin->hasActiveSubClass());
  331. $admin->getActiveSubClass();
  332. }
  333. public function testGetPerPageOptions()
  334. {
  335. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  336. $this->assertEquals(array(15, 25, 50, 100, 150, 200), $admin->getPerPageOptions());
  337. $admin->setPerPageOptions(array(500, 1000));
  338. $this->assertEquals(array(500, 1000), $admin->getPerPageOptions());
  339. }
  340. public function testGetLabelTranslatorStrategy()
  341. {
  342. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  343. $this->assertNull($admin->getLabelTranslatorStrategy());
  344. $labelTranslatorStrategy = $this->getMock('Sonata\AdminBundle\Translator\LabelTranslatorStrategyInterface');
  345. $admin->setLabelTranslatorStrategy($labelTranslatorStrategy);
  346. $this->assertEquals($labelTranslatorStrategy, $admin->getLabelTranslatorStrategy());
  347. }
  348. public function testGetRouteBuilder()
  349. {
  350. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  351. $this->assertNull($admin->getRouteBuilder());
  352. $routeBuilder = $this->getMock('Sonata\AdminBundle\Builder\RouteBuilderInterface');
  353. $admin->setRouteBuilder($routeBuilder);
  354. $this->assertEquals($routeBuilder, $admin->getRouteBuilder());
  355. }
  356. public function testGetMenuFactory()
  357. {
  358. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  359. $this->assertNull($admin->getMenuFactory());
  360. $menuFactory = $this->getMock('Knp\Menu\FactoryInterface');
  361. $admin->setMenuFactory($menuFactory);
  362. $this->assertEquals($menuFactory, $admin->getMenuFactory());
  363. }
  364. public function testGetExtensions()
  365. {
  366. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  367. $this->assertEquals(array(), $admin->getExtensions());
  368. $adminExtension1 = $this->getMock('Sonata\AdminBundle\Admin\AdminExtensionInterface');
  369. $adminExtension2 = $this->getMock('Sonata\AdminBundle\Admin\AdminExtensionInterface');
  370. $admin->addExtension($adminExtension1);
  371. $admin->addExtension($adminExtension2);
  372. $this->assertEquals(array($adminExtension1, $adminExtension2), $admin->getExtensions());
  373. }
  374. public function testGetFilterTheme()
  375. {
  376. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  377. $this->assertEquals(array(), $admin->getFilterTheme());
  378. $admin->setFilterTheme(array('FooTheme'));
  379. $this->assertEquals(array('FooTheme'), $admin->getFilterTheme());
  380. }
  381. public function testGetFormTheme()
  382. {
  383. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  384. $this->assertEquals(array(), $admin->getFormTheme());
  385. $admin->setFormTheme(array('FooTheme'));
  386. $this->assertEquals(array('FooTheme'), $admin->getFormTheme());
  387. }
  388. public function testGetValidator()
  389. {
  390. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  391. $this->assertNull($admin->getValidator());
  392. $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface');
  393. $admin->setValidator($validator);
  394. $this->assertEquals($validator, $admin->getValidator());
  395. }
  396. public function testGetSecurityHandler()
  397. {
  398. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  399. $this->assertNull($admin->getSecurityHandler());
  400. $securityHandler = $this->getMock('Sonata\AdminBundle\Security\Handler\SecurityHandlerInterface');
  401. $admin->setSecurityHandler($securityHandler);
  402. $this->assertEquals($securityHandler, $admin->getSecurityHandler());
  403. }
  404. public function testGetSecurityInformation()
  405. {
  406. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  407. $this->assertEquals(array(), $admin->getSecurityInformation());
  408. $securityInformation = array('ROLE_FOO', 'ROLE_BAR');
  409. $admin->setSecurityInformation($securityInformation);
  410. $this->assertEquals($securityInformation, $admin->getSecurityInformation());
  411. }
  412. public function testGetManagerType()
  413. {
  414. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  415. $this->assertNull($admin->getManagerType());
  416. $admin->setManagerType('foo_orm');
  417. $this->assertEquals('foo_orm', $admin->getManagerType());
  418. }
  419. public function testGetModelManager()
  420. {
  421. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  422. $this->assertNull($admin->getModelManager());
  423. $modelManager = $this->getMock('Sonata\AdminBundle\Model\ModelManagerInterface');
  424. $admin->setModelManager($modelManager);
  425. $this->assertEquals($modelManager, $admin->getModelManager());
  426. }
  427. public function testGetBaseCodeRoute()
  428. {
  429. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  430. $this->assertSame('', $admin->getBaseCodeRoute());
  431. $admin->setBaseCodeRoute('foo');
  432. $this->assertEquals('foo', $admin->getBaseCodeRoute());
  433. }
  434. public function testGetRouteGenerator()
  435. {
  436. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  437. $this->assertNull($admin->getRouteGenerator());
  438. $routeGenerator = $this->getMock('Sonata\AdminBundle\Route\RouteGeneratorInterface');
  439. $admin->setRouteGenerator($routeGenerator);
  440. $this->assertEquals($routeGenerator, $admin->getRouteGenerator());
  441. }
  442. public function testGetConfigurationPool()
  443. {
  444. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  445. $this->assertNull($admin->getConfigurationPool());
  446. $pool = $this->getMockBuilder('Sonata\AdminBundle\Admin\Pool')
  447. ->disableOriginalConstructor()
  448. ->getMock();
  449. $admin->setConfigurationPool($pool);
  450. $this->assertEquals($pool, $admin->getConfigurationPool());
  451. }
  452. public function testGetShowBuilder()
  453. {
  454. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  455. $this->assertNull($admin->getShowBuilder());
  456. $showBuilder = $this->getMock('Sonata\AdminBundle\Builder\ShowBuilderInterface');
  457. $admin->setShowBuilder($showBuilder);
  458. $this->assertEquals($showBuilder, $admin->getShowBuilder());
  459. }
  460. public function testGetListBuilder()
  461. {
  462. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  463. $this->assertNull($admin->getListBuilder());
  464. $listBuilder = $this->getMock('Sonata\AdminBundle\Builder\ListBuilderInterface');
  465. $admin->setListBuilder($listBuilder);
  466. $this->assertEquals($listBuilder, $admin->getListBuilder());
  467. }
  468. public function testGetDatagridBuilder()
  469. {
  470. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  471. $this->assertNull($admin->getDatagridBuilder());
  472. $datagridBuilder = $this->getMock('Sonata\AdminBundle\Builder\DatagridBuilderInterface');
  473. $admin->setDatagridBuilder($datagridBuilder);
  474. $this->assertEquals($datagridBuilder, $admin->getDatagridBuilder());
  475. }
  476. public function testGetFormContractor()
  477. {
  478. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  479. $this->assertNull($admin->getFormContractor());
  480. $formContractor = $this->getMock('Sonata\AdminBundle\Builder\FormContractorInterface');
  481. $admin->setFormContractor($formContractor);
  482. $this->assertEquals($formContractor, $admin->getFormContractor());
  483. }
  484. public function testGetRequest()
  485. {
  486. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  487. $this->assertFalse($admin->hasRequest());
  488. $request = new Request();
  489. $admin->setRequest($request);
  490. $this->assertEquals($request, $admin->getRequest());
  491. $this->assertTrue($admin->hasRequest());
  492. }
  493. public function testGetRequestWithException()
  494. {
  495. $this->setExpectedException('RuntimeException', 'The Request object has not been set');
  496. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  497. $admin->getRequest();
  498. }
  499. public function testGetTranslationDomain()
  500. {
  501. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  502. $this->assertEquals('messages', $admin->getTranslationDomain());
  503. $admin->setTranslationDomain('foo');
  504. $this->assertEquals('foo', $admin->getTranslationDomain());
  505. }
  506. public function testGetTranslator()
  507. {
  508. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  509. $this->assertNull($admin->getTranslator());
  510. $translator = $this->getMock('Symfony\Component\Translation\TranslatorInterface');
  511. $admin->setTranslator($translator);
  512. $this->assertEquals($translator, $admin->getTranslator());
  513. }
  514. public function testGetShowGroups()
  515. {
  516. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  517. $this->assertEquals(false, $admin->getShowGroups());
  518. $groups = array('foo', 'bar', 'baz');
  519. $admin->setShowGroups($groups);
  520. $this->assertSame($groups, $admin->getShowGroups());
  521. }
  522. public function testGetFormGroups()
  523. {
  524. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  525. $this->assertEquals(false, $admin->getFormGroups());
  526. $groups = array('foo', 'bar', 'baz');
  527. $admin->setFormGroups($groups);
  528. $this->assertSame($groups, $admin->getFormGroups());
  529. }
  530. public function testGetMaxPageLinks()
  531. {
  532. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  533. $this->assertEquals(25, $admin->getMaxPageLinks());
  534. $admin->setMaxPageLinks(14);
  535. $this->assertSame(14, $admin->getMaxPageLinks());
  536. }
  537. public function testGetMaxPerPage()
  538. {
  539. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  540. $this->assertEquals(25, $admin->getMaxPerPage());
  541. $admin->setMaxPerPage(94);
  542. $this->assertSame(94, $admin->getMaxPerPage());
  543. }
  544. public function testGetLabel()
  545. {
  546. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  547. $this->assertNull($admin->getLabel());
  548. $admin->setLabel('FooLabel');
  549. $this->assertSame('FooLabel', $admin->getLabel());
  550. }
  551. public function testGetBaseController()
  552. {
  553. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  554. $this->assertEquals('SonataNewsBundle:PostAdmin', $admin->getBaseControllerName());
  555. $admin->setBaseControllerName('SonataNewsBundle:FooAdmin');
  556. $this->assertSame('SonataNewsBundle:FooAdmin', $admin->getBaseControllerName());
  557. }
  558. public function testGetTemplates()
  559. {
  560. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  561. $this->assertEquals(array(), $admin->getTemplates());
  562. $templates = array(
  563. 'list' => 'FooAdminBundle:CRUD:list.html.twig',
  564. 'show' => 'FooAdminBundle:CRUD:show.html.twig',
  565. 'edit' => 'FooAdminBundle:CRUD:edit.html.twig'
  566. );
  567. $admin->setTemplates($templates);
  568. $this->assertSame($templates, $admin->getTemplates());
  569. }
  570. public function testGetTemplate1()
  571. {
  572. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  573. $this->assertNull($admin->getTemplate('edit'));
  574. $templates = array(
  575. 'list' => 'FooAdminBundle:CRUD:list.html.twig',
  576. 'show' => 'FooAdminBundle:CRUD:show.html.twig',
  577. 'edit' => 'FooAdminBundle:CRUD:edit.html.twig'
  578. );
  579. $admin->setTemplate('edit', 'FooAdminBundle:CRUD:edit.html.twig');
  580. $admin->setTemplate('show', 'FooAdminBundle:CRUD:show.html.twig');
  581. $this->assertEquals('FooAdminBundle:CRUD:edit.html.twig', $admin->getTemplate('edit'));
  582. $this->assertEquals('FooAdminBundle:CRUD:show.html.twig', $admin->getTemplate('show'));
  583. }
  584. public function testGetTemplate2()
  585. {
  586. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  587. $this->assertNull($admin->getTemplate('edit'));
  588. $templates = array(
  589. 'list' => 'FooAdminBundle:CRUD:list.html.twig',
  590. 'show' => 'FooAdminBundle:CRUD:show.html.twig',
  591. 'edit' => 'FooAdminBundle:CRUD:edit.html.twig'
  592. );
  593. $admin->setTemplates($templates);
  594. $this->assertEquals('FooAdminBundle:CRUD:edit.html.twig', $admin->getTemplate('edit'));
  595. $this->assertEquals('FooAdminBundle:CRUD:show.html.twig', $admin->getTemplate('show'));
  596. }
  597. public function testGetIdParameter()
  598. {
  599. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  600. $this->assertEquals('id', $admin->getIdParameter());
  601. $this->assertFalse($admin->isChild());
  602. $parentAdmin = new PostAdmin('sonata.post.admin.post_parent', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostParentAdmin');
  603. $admin->setParent($parentAdmin);
  604. $this->assertTrue($admin->isChild());
  605. $this->assertEquals('childId', $admin->getIdParameter());
  606. }
  607. public function testGetExportFormats()
  608. {
  609. $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
  610. $this->assertEquals(array('json', 'xml', 'csv', 'xls'), $admin->getExportFormats());
  611. }
  612. }