Files
famous-ly4-ev/app-modules/cms/tests/Feature/CmsPageResourceTest.php
T
Nyan Lin Paing 76f75c5581 Add CMS module
Static content pages (CmsPage) manageable from a new Filament resource and
readable via a public API endpoint. Wired into the admin panel with its own
CmsPlugin and "CMS" navigation group.
2026-08-30 14:51:57 +07:00

80 lines
2.2 KiB
PHP

<?php
use App\Models\User;
use Livewire\Livewire;
use Modules\Cms\Filament\Resources\CmsPages\Pages\CreateCmsPage;
use Modules\Cms\Filament\Resources\CmsPages\Pages\EditCmsPage;
use Modules\Cms\Filament\Resources\CmsPages\Pages\ListCmsPages;
use Modules\Cms\Models\CmsPage;
use Spatie\Permission\Models\Role;
use function Pest\Laravel\assertDatabaseHas;
beforeEach(function () {
Role::findOrCreate('admin', 'web');
$this->admin = User::factory()->create()->assignRole('admin');
$this->actingAs($this->admin);
});
test('can list cms pages', function () {
$pages = CmsPage::factory()->count(3)->create();
Livewire::test(ListCmsPages::class)
->assertOk()
->assertCanSeeTableRecords($pages);
});
test('can create a cms page', function () {
$page = CmsPage::factory()->make();
Livewire::test(CreateCmsPage::class)
->fillForm([
'page' => $page->page,
'title' => $page->title,
'mm_title' => $page->mm_title,
'meta_tags' => $page->meta_tags,
'meta_keywords' => $page->meta_keywords,
'content' => $page->content,
'mm_content' => $page->mm_content,
'is_active' => true,
])
->call('create')
->assertNotified()
->assertRedirect();
assertDatabaseHas(CmsPage::class, [
'page' => $page->page,
'title' => $page->title,
]);
});
test('can edit a cms page', function () {
$page = CmsPage::factory()->create();
Livewire::test(EditCmsPage::class, ['record' => $page->getRouteKey()])
->assertOk()
->fillForm(['title' => 'Updated Title'])
->call('save')
->assertNotified();
assertDatabaseHas(CmsPage::class, [
'id' => $page->id,
'title' => 'Updated Title',
]);
});
test('requires a unique page slug', function () {
CmsPage::factory()->create(['page' => 'miniapp_faq']);
$page = CmsPage::factory()->make(['page' => 'miniapp_faq']);
Livewire::test(CreateCmsPage::class)
->fillForm([
'page' => $page->page,
'title' => $page->title,
'mm_title' => $page->mm_title,
])
->call('create')
->assertHasFormErrors(['page' => 'unique']);
});