73 lines
2.6 KiB
PHP
73 lines
2.6 KiB
PHP
<?php
|
|
|
|
use cPad\Plugins\Pages\Controllers\SetupController;
|
|
use Illuminate\Database\Schema\Blueprint;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Illuminate\Support\Facades\View;
|
|
use Klevze\ControlPanel\Models\System\Cpad;
|
|
use Klevze\ControlPanel\Services\Config;
|
|
|
|
beforeEach(function () {
|
|
View::addNamespace('plugin.page', base_path('packages/klevze/Plugins/Pages/Resources/views'));
|
|
|
|
Schema::dropIfExists('cpad');
|
|
Schema::create('cpad', function (Blueprint $table) {
|
|
$table->string('keycode')->primary();
|
|
$table->text('value')->nullable();
|
|
});
|
|
});
|
|
|
|
it('decodes stored pages setup config before rendering the setup view', function () {
|
|
Cpad::create([
|
|
'keycode' => 'plugin.pages.fields',
|
|
'value' => '[{"type":"text","name":"title","label":"Title","required":true,"store":"title"}]',
|
|
]);
|
|
|
|
Cpad::create([
|
|
'keycode' => 'plugin.pages.config',
|
|
'value' => '{"folderDivider":150,"localeLinks":"Y"}',
|
|
]);
|
|
|
|
$view = app(SetupController::class)->Setup(Request::create('/cp/content/pages/setup', 'GET'));
|
|
|
|
expect($view->getData()['form'])
|
|
->toBeArray()
|
|
->and($view->getData()['form'][0]->name)
|
|
->toBe('title')
|
|
->and($view->getData()['setup'])
|
|
->toBeObject()
|
|
->and($view->getData()['setup']->folderDivider)
|
|
->toBe(150);
|
|
});
|
|
|
|
it('flushes and repopulates cached pages settings after saving setup', function () {
|
|
Cpad::create([
|
|
'keycode' => 'plugin.pages.fields',
|
|
'value' => '[{"type":"text","name":"title","label":"Title","required":true,"store":"title"}]',
|
|
]);
|
|
|
|
Cpad::create([
|
|
'keycode' => 'plugin.pages.config',
|
|
'value' => '{"folderDivider":100,"localeLinks":"N"}',
|
|
]);
|
|
|
|
$controller = app(SetupController::class);
|
|
|
|
$response = $controller->Update(Request::create('/cp/content/pages/setup', 'POST', [
|
|
'setup' => [
|
|
'folderDivider' => 200,
|
|
'localeLinks' => 'Y',
|
|
],
|
|
'fields' => '[{"type":"text","name":"title","label":"Updated Title","required":true,"store":"title"}]',
|
|
]));
|
|
|
|
expect($response->getStatusCode())->toBe(302);
|
|
|
|
$config = app(Config::class);
|
|
|
|
expect($config->checkConfig('plugin.pages.config'))
|
|
->toBeTrue()
|
|
->and($config->checkConfig('plugin.pages.fields'))
|
|
->toBeTrue();
|
|
}); |