First commit
This commit is contained in:
commit
7cf3558ba7
12933 changed files with 1180047 additions and 0 deletions
197
packages/flux-cms/core/tests/Feature/PageManagementTest.php
Normal file
197
packages/flux-cms/core/tests/Feature/PageManagementTest.php
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
<?php
|
||||
|
||||
namespace FluxCms\Core\Tests\Feature;
|
||||
|
||||
use FluxCms\Core\Models\Page;
|
||||
use FluxCms\Core\Models\PageComponent;
|
||||
use Orchestra\Testbench\TestCase;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
|
||||
class PageManagementTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
$this->loadLaravelMigrations();
|
||||
$this->artisan('migrate');
|
||||
}
|
||||
|
||||
public function test_can_create_page()
|
||||
{
|
||||
$page = Page::create([
|
||||
'domain_key' => 'test',
|
||||
'title' => ['de' => 'Test Seite', 'en' => 'Test Page'],
|
||||
'slug' => ['de' => '/test-seite', 'en' => '/test-page'],
|
||||
'is_published' => true,
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('flux_cms_pages', [
|
||||
'id' => $page->id,
|
||||
'domain_key' => 'test',
|
||||
]);
|
||||
|
||||
$this->assertEquals('Test Seite', $page->getTranslation('title', 'de'));
|
||||
$this->assertEquals('Test Page', $page->getTranslation('title', 'en'));
|
||||
}
|
||||
|
||||
public function test_can_add_components_to_page()
|
||||
{
|
||||
$page = Page::create([
|
||||
'domain_key' => 'test',
|
||||
'title' => ['de' => 'Test Seite'],
|
||||
'slug' => ['de' => '/test'],
|
||||
'is_published' => true,
|
||||
]);
|
||||
|
||||
$component = $page->allComponents()->create([
|
||||
'component_class' => 'TestComponent',
|
||||
'order' => 1,
|
||||
'content' => [
|
||||
'title' => ['de' => 'Komponenten Titel'],
|
||||
'text' => ['de' => 'Komponenten Text']
|
||||
],
|
||||
'is_active' => true,
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('flux_cms_page_components', [
|
||||
'page_id' => $page->id,
|
||||
'component_class' => 'TestComponent',
|
||||
'order' => 1,
|
||||
]);
|
||||
|
||||
$this->assertEquals(1, $page->allComponents()->count());
|
||||
$this->assertEquals('Komponenten Titel', $component->getTranslatedContent('de')['title']);
|
||||
}
|
||||
|
||||
public function test_can_publish_and_unpublish_page()
|
||||
{
|
||||
$page = Page::create([
|
||||
'domain_key' => 'test',
|
||||
'title' => ['de' => 'Test Seite'],
|
||||
'slug' => ['de' => '/test'],
|
||||
'is_published' => false,
|
||||
]);
|
||||
|
||||
$this->assertFalse($page->is_published);
|
||||
|
||||
$page->publish();
|
||||
$this->assertTrue($page->fresh()->is_published);
|
||||
$this->assertNotNull($page->fresh()->published_at);
|
||||
|
||||
$page->unpublish();
|
||||
$this->assertFalse($page->fresh()->is_published);
|
||||
}
|
||||
|
||||
public function test_can_create_page_version()
|
||||
{
|
||||
$page = Page::create([
|
||||
'domain_key' => 'test',
|
||||
'title' => ['de' => 'Test Seite'],
|
||||
'slug' => ['de' => '/test'],
|
||||
'is_published' => true,
|
||||
]);
|
||||
|
||||
$page->allComponents()->create([
|
||||
'component_class' => 'TestComponent',
|
||||
'order' => 1,
|
||||
'content' => ['title' => ['de' => 'Original']],
|
||||
]);
|
||||
|
||||
$version = $page->createVersion('Initial version');
|
||||
|
||||
$this->assertDatabaseHas('flux_cms_page_versions', [
|
||||
'page_id' => $page->id,
|
||||
'change_description' => 'Initial version',
|
||||
]);
|
||||
|
||||
$this->assertNotNull($version->page_data);
|
||||
$this->assertNotNull($version->components_data);
|
||||
$this->assertEquals(1, $page->versions()->count());
|
||||
}
|
||||
|
||||
public function test_page_scope_by_domain()
|
||||
{
|
||||
Page::create([
|
||||
'domain_key' => 'domain1',
|
||||
'title' => ['de' => 'Domain 1 Seite'],
|
||||
'slug' => ['de' => '/domain1'],
|
||||
]);
|
||||
|
||||
Page::create([
|
||||
'domain_key' => 'domain2',
|
||||
'title' => ['de' => 'Domain 2 Seite'],
|
||||
'slug' => ['de' => '/domain2'],
|
||||
]);
|
||||
|
||||
$domain1Pages = Page::forDomain('domain1')->get();
|
||||
$domain2Pages = Page::forDomain('domain2')->get();
|
||||
|
||||
$this->assertEquals(1, $domain1Pages->count());
|
||||
$this->assertEquals(1, $domain2Pages->count());
|
||||
$this->assertEquals('Domain 1 Seite', $domain1Pages->first()->getTranslation('title', 'de'));
|
||||
}
|
||||
|
||||
public function test_page_scope_by_slug()
|
||||
{
|
||||
$page = Page::create([
|
||||
'domain_key' => 'test',
|
||||
'title' => ['de' => 'Test Seite'],
|
||||
'slug' => ['de' => '/test-seite', 'en' => '/test-page'],
|
||||
]);
|
||||
|
||||
$foundPage = Page::bySlug('/test-seite', 'de')->first();
|
||||
$this->assertEquals($page->id, $foundPage->id);
|
||||
|
||||
$foundPage = Page::bySlug('/test-page', 'en')->first();
|
||||
$this->assertEquals($page->id, $foundPage->id);
|
||||
|
||||
$notFound = Page::bySlug('/not-found', 'de')->first();
|
||||
$this->assertNull($notFound);
|
||||
}
|
||||
|
||||
public function test_component_can_be_duplicated()
|
||||
{
|
||||
$page = Page::create([
|
||||
'domain_key' => 'test',
|
||||
'title' => ['de' => 'Test Seite'],
|
||||
'slug' => ['de' => '/test'],
|
||||
]);
|
||||
|
||||
$originalComponent = $page->allComponents()->create([
|
||||
'component_class' => 'TestComponent',
|
||||
'order' => 1,
|
||||
'content' => ['title' => ['de' => 'Original']],
|
||||
]);
|
||||
|
||||
$duplicate = $originalComponent->duplicate();
|
||||
|
||||
$this->assertEquals(2, $page->allComponents()->count());
|
||||
$this->assertEquals($originalComponent->content, $duplicate->content);
|
||||
$this->assertEquals(2, $duplicate->order);
|
||||
$this->assertNotEquals($originalComponent->id, $duplicate->id);
|
||||
}
|
||||
|
||||
protected function getPackageProviders($app)
|
||||
{
|
||||
return [
|
||||
\FluxCms\Core\FluxCmsServiceProvider::class,
|
||||
];
|
||||
}
|
||||
|
||||
protected function getEnvironmentSetUp($app)
|
||||
{
|
||||
$app['config']->set('database.default', 'testing');
|
||||
$app['config']->set('database.connections.testing', [
|
||||
'driver' => 'sqlite',
|
||||
'database' => ':memory:',
|
||||
'prefix' => '',
|
||||
]);
|
||||
|
||||
$app['config']->set('flux-cms.locales', [
|
||||
'de' => 'Deutsch',
|
||||
'en' => 'English',
|
||||
]);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue