brilo-example/tests/Web/DetailPostControllerTest.php

60 lines
2.0 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Tests\Web;
use App\Tests\Common\DatabaseTestTrait;
use App\Tests\Common\FakerTrait;
use App\Tests\Common\Generators\CommentGeneratorTrait;
use App\Tests\Common\Generators\PostGeneratorTrait;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\BrowserKit\AbstractBrowser;
class DetailPostControllerTest extends WebTestCase
{
use DatabaseTestTrait;
use FakerTrait;
use PostGeneratorTrait;
use CommentGeneratorTrait;
protected AbstractBrowser $client;
protected function setUp(): void
{
$this->client = static::createClient();
$this->bootDatabase();
$this->bootFaker();
$this->getFaker()->unique();
}
public function testPostDetail(): void
{
$post = $this->createPost(1);
$comments = [];
$comments[] = $this->createComment(1, $post);
$comments[] = $this->createComment(2, $post);
$this->client->request('GET', '/posts/detail/1');
$this->assertResponseIsSuccessful();
$this->assertSelectorTextSame('.t-title', $post->title);
$this->assertSelectorTextSame('.t-content', $post->body);
$this->assertSelectorTextSame('.t-user-name', $post->user->name);
$this->assertSelectorTextSame('.t-user-email', $post->user->email);
$this->assertSelectorTextSame('.t-user-website', $post->user->website);
$this->assertSelectorTextSame('.t-user-company', $post->user->company->name);
$this->assertSelectorCount(2, '.t-comment');
$this->assertSelectorTextSame('.t-comment:nth-child(1) .t-comment-name', $comments[0]->name);
$this->assertSelectorTextSame('.t-comment:nth-child(1) .t-comment-email', $comments[0]->email);
$this->assertSelectorTextSame('.t-comment:nth-child(1) .t-comment-body', $comments[0]->body);
}
public function testPostDetailNotFound(): void
{
$this->client->request('GET', '/posts/detail/100');
$this->assertResponseStatusCodeSame(404);
}
}