Files
aritmija/tests/Feature/PagesSetupControllerTest.php
2026-05-13 17:11:09 +02:00

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' => '[{&quot;type&quot;:&quot;text&quot;,&quot;name&quot;:&quot;title&quot;,&quot;label&quot;:&quot;Title&quot;,&quot;required&quot;:true,&quot;store&quot;:&quot;title&quot;}]',
]);
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' => '[{&quot;type&quot;:&quot;text&quot;,&quot;name&quot;:&quot;title&quot;,&quot;label&quot;:&quot;Title&quot;,&quot;required&quot;:true,&quot;store&quot;:&quot;title&quot;}]',
]);
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' => '[{&quot;type&quot;:&quot;text&quot;,&quot;name&quot;:&quot;title&quot;,&quot;label&quot;:&quot;Updated Title&quot;,&quot;required&quot;:true,&quot;store&quot;:&quot;title&quot;}]',
]));
expect($response->getStatusCode())->toBe(302);
$config = app(Config::class);
expect($config->checkConfig('plugin.pages.config'))
->toBeTrue()
->and($config->checkConfig('plugin.pages.fields'))
->toBeTrue();
});