You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.0 KiB
112 lines
3.0 KiB
<?php |
|
|
|
namespace Tests\Feature; |
|
|
|
use Tests\TestCase; |
|
|
|
/** |
|
* Section功能测试. |
|
* |
|
* @group section |
|
*/ |
|
class SectionTest extends TestCase |
|
{ |
|
protected $login = false; |
|
|
|
public function testInjectValues() |
|
{ |
|
// view |
|
admin_inject_section('key1', view('admin-tests::test')); |
|
|
|
$this->assertSame(admin_section('key1'), '<h1>Hello world</h1>'); |
|
|
|
// string |
|
admin_inject_section('key2', 'test'); |
|
|
|
$this->assertSame(admin_section('key2'), 'test'); |
|
|
|
// callable |
|
admin_inject_section('key3', function () { |
|
return view('admin-tests::test'); |
|
}); |
|
|
|
$this->assertSame(admin_section('key3'), '<h1>Hello world</h1>'); |
|
} |
|
|
|
public function testOptions() |
|
{ |
|
admin_inject_section('key1', 'value1'); |
|
|
|
admin_inject_section('key1', function ($options) { |
|
return "previous:{$options->previous},name:{$options->name},age:{$options->age}"; |
|
}, false); |
|
|
|
$this->assertSame( |
|
admin_section('key1', null, ['name' => 'Mike', 'age' => 18]), |
|
'previous:value1,name:Mike,age:18' |
|
); |
|
} |
|
|
|
public function testAppend() |
|
{ |
|
// 1 append |
|
admin_inject_section('key1', 'test1,'); |
|
admin_inject_section('key1', 'test2,'); |
|
admin_inject_section('key1', 'test3,'); |
|
|
|
$this->assertSame(admin_section('key1'), 'test1,test2,test3,'); |
|
|
|
// 2 overwrite |
|
admin_inject_section('key2', 'test1,'); |
|
admin_inject_section('key2', 'test2,', false); |
|
|
|
$this->assertSame(admin_section('key2'), 'test2,'); |
|
|
|
admin_inject_section('key2', 'test3,', false); |
|
|
|
$this->assertSame(admin_section('key2'), 'test3,'); |
|
|
|
// 3 overwrite |
|
admin_inject_section('key3', 'test1,'); |
|
admin_inject_section('key3', 'test2,', false); |
|
admin_inject_section('key3', function ($options) { |
|
return $options->previous.'test3,'; |
|
}, false); |
|
admin_inject_section('key3', function ($options) { |
|
return $options->previous.'test4,'; |
|
}, false); |
|
|
|
$this->assertSame(admin_section('key3'), 'test2,test3,test4,'); |
|
} |
|
|
|
public function testSort() |
|
{ |
|
// 值越大排序越靠前 |
|
admin_inject_section('key1', '4,', true, -100); |
|
admin_inject_section('key1', '2,', true, 2); |
|
admin_inject_section('key1', '1,', true, 3); |
|
admin_inject_section('key1', '3,', true, 1); |
|
|
|
$this->assertSame(admin_section('key1'), '1,2,3,4,'); |
|
} |
|
|
|
public function testInjectDefaultSection() |
|
{ |
|
// step1 |
|
admin_inject_default_section('key', 'Hello'); |
|
|
|
$this->assertSame(admin_section('key'), 'Hello'); |
|
|
|
// step2 |
|
admin_inject_default_section('key', function ($options) { |
|
return 'Hello '.$options->var1; |
|
}); |
|
|
|
$this->assertSame(admin_section('key', null, ['var1' => 'world']), 'Hello world'); |
|
|
|
// step3 |
|
admin_inject_section('key', ''); |
|
|
|
$this->assertSame(admin_section('key'), ''); |
|
} |
|
}
|
|
|