routing.test.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. use Laravel\Routing\Router;
  3. class RoutingTest extends PHPUnit_Framework_TestCase {
  4. /**
  5. * Destroy the testing environment.
  6. */
  7. public function tearDown()
  8. {
  9. Router::$names = array();
  10. Router::$routes = array();
  11. }
  12. /**
  13. * Test the basic routing mechanism.
  14. *
  15. * @group laravel
  16. */
  17. public function testBasicRouteCanBeRouted()
  18. {
  19. Router::register('GET /', function() {});
  20. Router::register('GET /home', function() {});
  21. $this->assertEquals('GET /', Router::route('GET', '/')->key);
  22. $this->assertEquals('GET /home', Router::route('GET', '/home')->key);
  23. }
  24. /**
  25. * Test that the router can handle basic wildcards.
  26. *
  27. * @group laravel
  28. */
  29. public function testWildcardRoutesCanBeRouted()
  30. {
  31. Router::register('GET /user/(:num)', function() {});
  32. Router::register('GET /profile/(:any)/(:num)', function() {});
  33. $this->assertNull(Router::route('GET', 'user/1.5'));
  34. $this->assertNull(Router::route('GET', 'user/taylor'));
  35. $this->assertEquals('GET /user/(:num)', Router::route('GET', 'user/1')->key);
  36. $this->assertNull(Router::route('GET', 'profile/1/otwell'));
  37. $this->assertNull(Router::route('POST', 'profile/taylor/1'));
  38. $this->assertNull(Router::route('GET', 'profile/taylor/otwell'));
  39. $this->assertNull(Router::route('GET', 'profile/taylor/1/otwell'));
  40. $this->assertEquals('GET /profile/(:any)/(:num)', Router::route('GET', 'profile/taylor/1')->key);
  41. }
  42. /**
  43. * Test that optional wildcards can be routed.
  44. *
  45. * @group laravel
  46. */
  47. public function testOptionalWildcardsCanBeRouted()
  48. {
  49. Router::register('GET /user/(:num?)', function() {});
  50. Router::register('GET /profile/(:any)/(:any?)', function() {});
  51. $this->assertNull(Router::route('GET', 'user/taylor'));
  52. $this->assertEquals('GET /user/(:num?)', Router::route('GET', 'user')->key);
  53. $this->assertEquals('GET /user/(:num?)', Router::route('GET', 'user/1')->key);
  54. $this->assertNull(Router::route('GET', 'profile/taylor/otwell/test'));
  55. $this->assertEquals('GET /profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor')->key);
  56. $this->assertEquals('GET /profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor/25')->key);
  57. $this->assertEquals('GET /profile/(:any)/(:any?)', Router::route('GET', 'profile/taylor/otwell')->key);
  58. }
  59. /**
  60. * Test that basic controller routing is working.
  61. *
  62. * @group laravel
  63. */
  64. public function testBasicRouteToControllerIsRouted()
  65. {
  66. $this->assertEquals('home@index', Router::route('GET', '/')->action['uses']);
  67. $this->assertEquals('auth@index', Router::route('GET', 'auth')->action['uses']);
  68. $this->assertEquals('home@index', Router::route('GET', 'home')->action['uses']);
  69. $this->assertEquals('home@index', Router::route('GET', 'home/index')->action['uses']);
  70. $this->assertEquals('home@profile', Router::route('GET', 'home/profile')->action['uses']);
  71. $this->assertEquals('admin.panel@index', Router::route('GET', 'admin/panel')->action['uses']);
  72. $this->assertEquals('admin.panel@show', Router::route('GET', 'admin/panel/show')->action['uses']);
  73. }
  74. /**
  75. * Test basic bundle route resolution.
  76. *
  77. * @group laravel
  78. */
  79. public function testRoutesToBundlesCanBeResolved()
  80. {
  81. $this->assertNull(Router::route('GET', 'dashboard/foo'));
  82. $this->assertEquals('GET /dashboard', Router::route('GET', 'dashboard')->key);
  83. }
  84. /**
  85. * Test bundle controller route resolution.
  86. *
  87. * @group laravel
  88. */
  89. public function testBundleControllersCanBeResolved()
  90. {
  91. $this->assertEquals('dashboard::panel@index', Router::route('GET', 'dashboard/panel')->action['uses']);
  92. $this->assertEquals('dashboard::panel@show', Router::route('GET', 'dashboard/panel/show')->action['uses']);
  93. }
  94. }