новости + переработка текстов
This commit is contained in:
@@ -12,9 +12,11 @@ class LandingPageTest extends TestCase
|
||||
$response = $this->get(route('landing.index'));
|
||||
|
||||
$response->assertOk();
|
||||
$response->assertSee('<title>MoonWell — Лунный колодец</title>', false);
|
||||
$response->assertSee('<meta name="description" content="Пройди историю Азерота — от Классики до Короля-лича — в своём темпе, в одиночку или с небольшим отрядом.">', false);
|
||||
$response->assertInertia(fn (Assert $page) => $page
|
||||
->component('Landing/Main', false)
|
||||
->where('realm.server_name', config('moonwell.realm.server_name'))
|
||||
->where('realm.server_name', 'MoonWell')
|
||||
->where('legalUrls.published', false)
|
||||
->where('legalUrls.offer', null)
|
||||
->where('legalUrls.privacy', null)
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Models\News;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Inertia\Testing\AssertableInertia as Assert;
|
||||
use Tests\TestCase;
|
||||
|
||||
class PublicNewsFeatureTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
public function test_news_index_lists_only_published_articles_with_pagination(): void
|
||||
{
|
||||
foreach (range(1, 10) as $number) {
|
||||
News::query()->create([
|
||||
'title' => "Новость {$number}",
|
||||
'body' => "Полный текст новости {$number}.",
|
||||
'sort_order' => 0,
|
||||
'is_published' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
News::query()->create([
|
||||
'title' => 'Скрытый черновик',
|
||||
'body' => 'Не должен попасть в список.',
|
||||
'sort_order' => 0,
|
||||
'is_published' => false,
|
||||
]);
|
||||
|
||||
$this->get(route('news.index'))
|
||||
->assertOk()
|
||||
->assertInertia(fn (Assert $page) => $page
|
||||
->component('News/Index', false)
|
||||
->has('articles.data', 9)
|
||||
->where('articles.data.0.title', 'Новость 10')
|
||||
->where('articles.total', 10)
|
||||
->where('articles.last_page', 2)
|
||||
->where('urls.news', route('news.index'))
|
||||
->etc()
|
||||
);
|
||||
}
|
||||
|
||||
public function test_published_news_has_public_inertia_page(): void
|
||||
{
|
||||
$news = News::query()->create([
|
||||
'title' => 'Открытие новой эпохи',
|
||||
'body' => "Герои завершили путь в Классике.\n\nТеперь открыты врата Запределья.",
|
||||
'sort_order' => 1,
|
||||
'is_published' => true,
|
||||
]);
|
||||
|
||||
$this->get(route('news.show', $news))
|
||||
->assertOk()
|
||||
->assertInertia(fn (Assert $page) => $page
|
||||
->component('News/Show', false)
|
||||
->where('article.id', $news->id)
|
||||
->where('article.title', 'Открытие новой эпохи')
|
||||
->where('article.body', $news->body)
|
||||
->where('article.url', route('news.show', $news))
|
||||
->where('article.canonical_url', route('news.show', $news))
|
||||
->where('article.back_url', route('news.index'))
|
||||
->etc()
|
||||
);
|
||||
}
|
||||
|
||||
public function test_unpublished_news_is_not_publicly_available(): void
|
||||
{
|
||||
$news = News::query()->create([
|
||||
'title' => 'Черновик',
|
||||
'body' => 'Эта новость ещё не опубликована.',
|
||||
'sort_order' => 1,
|
||||
'is_published' => false,
|
||||
]);
|
||||
|
||||
$this->get(route('news.show', $news))->assertNotFound();
|
||||
}
|
||||
|
||||
public function test_landing_news_card_links_to_full_article(): void
|
||||
{
|
||||
$news = collect(range(1, 4))->map(fn (int $number): News => News::query()->create([
|
||||
'title' => "Обновление {$number}",
|
||||
'body' => "Полный текст обновления {$number}.",
|
||||
'sort_order' => 10 - $number,
|
||||
'is_published' => true,
|
||||
]));
|
||||
|
||||
$this->get(route('landing.index'))
|
||||
->assertOk()
|
||||
->assertInertia(fn (Assert $page) => $page
|
||||
->component('Landing/Main', false)
|
||||
->has('posts', 3)
|
||||
->where('posts.0.id', $news[3]->id)
|
||||
->where('posts.0.url', route('news.show', $news[3]))
|
||||
->where('posts.2.id', $news[1]->id)
|
||||
->where('newsIndexUrl', route('news.index'))
|
||||
->etc()
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user