Files
usher-manage-stack/tests/Feature/Cms/HomepageApiTest.php

52 lines
1.8 KiB
PHP

<?php
namespace Tests\Feature\Cms;
use App\Models\Article;
use App\Models\Page;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class HomepageApiTest extends TestCase
{
use RefreshDatabase;
public function test_homepage_endpoint_returns_expected_sections(): void
{
Article::factory()->pinned(0)->create(['content_type' => Article::CONTENT_TYPE_BLOG]);
Article::factory()->pinned(1)->create(['content_type' => Article::CONTENT_TYPE_NOTICE]);
Article::factory()->create(['content_type' => Article::CONTENT_TYPE_BLOG]);
Article::factory()->create(['content_type' => Article::CONTENT_TYPE_NOTICE]);
Article::factory()->create(['content_type' => Article::CONTENT_TYPE_DOCUMENT]);
Article::factory()->create(['content_type' => Article::CONTENT_TYPE_RELATED_NEWS]);
$about = Page::factory()->create(['slug' => 'about']);
$this->getJson('/api/v1/homepage')
->assertOk()
->assertJsonStructure([
'featured' => [
'*' => ['id', 'title', 'slug', 'content_type'],
],
'latest_blog' => [
'*' => ['id', 'title', 'slug', 'content_type'],
],
'latest_notice' => [
'*' => ['id', 'title', 'slug', 'content_type'],
],
'latest_document' => [
'*' => ['id', 'title', 'slug', 'content_type'],
],
'latest_related_news' => [
'*' => ['id', 'title', 'slug', 'content_type'],
],
'about' => ['id', 'slug', 'content'],
'categories' => [
'*' => ['id', 'name', 'slug'],
],
])
->assertJsonPath('about.slug', $about->slug);
}
}