SectionTest.php 2.9 KB

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