SectionTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace Dcat\Admin\Tests\Feature;
  3. use Dcat\Admin\Tests\TestCase;
  4. class SectionTest extends TestCase
  5. {
  6. protected $login = false;
  7. public function testInjectValues()
  8. {
  9. // view
  10. admin_inject_section('key1', view('admin-tests::test'));
  11. $this->assertSame(admin_section('key1'), '<h1>Hello world</h1>');
  12. // string
  13. admin_inject_section('key2', 'test');
  14. $this->assertSame(admin_section('key2'), 'test');
  15. // callable
  16. admin_inject_section('key3', function () {
  17. return view('admin-tests::test');
  18. });
  19. $this->assertSame(admin_section('key3'), '<h1>Hello world</h1>');
  20. }
  21. public function testOptions()
  22. {
  23. admin_inject_section('key1', 'value1');
  24. admin_inject_section('key1', function ($options) {
  25. return "previous:{$options->previous},name:{$options->name},age:{$options->age}";
  26. }, false);
  27. $this->assertSame(
  28. admin_section('key1', null, ['name' => 'Mike', 'age' => 18]),
  29. 'previous:value1,name:Mike,age:18'
  30. );
  31. }
  32. public function testAppend()
  33. {
  34. // 1 append
  35. admin_inject_section('key1', 'test1,');
  36. admin_inject_section('key1', 'test2,');
  37. admin_inject_section('key1', 'test3,');
  38. $this->assertSame(admin_section('key1'), 'test1,test2,test3,');
  39. // 2 overwrite
  40. admin_inject_section('key2', 'test1,');
  41. admin_inject_section('key2', 'test2,', false);
  42. $this->assertSame(admin_section('key2'), 'test2,');
  43. admin_inject_section('key2', 'test3,', false);
  44. $this->assertSame(admin_section('key2'), 'test3,');
  45. // 3 overwrite
  46. admin_inject_section('key3', 'test1,');
  47. admin_inject_section('key3', 'test2,', false);
  48. admin_inject_section('key3', function ($options) {
  49. return $options->previous.'test3,';
  50. }, false);
  51. admin_inject_section('key3', function ($options) {
  52. return $options->previous.'test4,';
  53. }, false);
  54. $this->assertSame(admin_section('key3'), 'test2,test3,test4,');
  55. }
  56. public function testSort()
  57. {
  58. // 值越大排序越靠前
  59. admin_inject_section('key1', '4,', true, -100);
  60. admin_inject_section('key1', '2,', true, 2);
  61. admin_inject_section('key1', '1,', true, 3);
  62. admin_inject_section('key1', '3,', true, 1);
  63. $this->assertSame(admin_section('key1'), '1,2,3,4,');
  64. }
  65. public function testInjectDefaultSection()
  66. {
  67. // step1
  68. admin_inject_default_section('key', 'Hello');
  69. $this->assertSame(admin_section('key'), 'Hello');
  70. // step2
  71. admin_inject_default_section('key', function ($options) {
  72. return 'Hello '.$options->var1;
  73. });
  74. $this->assertSame(admin_section('key', null, ['var1' => 'world']), 'Hello world');
  75. // step3
  76. admin_inject_section('key', '');
  77. $this->assertSame(admin_section('key'), '');
  78. }
  79. }