SectionTest.php 3.0 KB

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