第2章 タスク詳細表示
02.データを扱う
タスクデータの個別取得テスト
詳細を表示するので、タスクのデータを個別に取り出せるようにする必要がある。
個別の取り出しは、Eloquent
の力で非常に簡単に実現できる。
今回は先に追加してある2番目のデータ「テストタスク」を取り出す流れで進めてみよう。
tests/Unit/TaskTest.php
を下記のように修正する。
<?php
namespace Tests\Unit;
use App\Task;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class TaskTest extends TestCase
{
/**
* Get Seeder Tasks Test
*
* @return void
*/
public function testGetSeederTasks()
{
// 全件取得
$tasks = Task::all();
// 3件取得できるはず
$this->assertEquals(3, count($tasks));
// 実行完了していないものを取得
$taskNotFinished = Task::where('executed', false)->get();
// 2件取得できるはず
$this->assertEquals(2, count($taskNotFinished));
// 実行完了しているものを取得
$taskFinished = Task::where('executed', true)->get();
// 1件取得できるはず
$this->assertEquals(1, count($taskFinished));
// 「テストタスク」というタイトルのレコードを取得
$task1 = Task::where('title', "テストタスク")->first();
// 実行完了していないはず
$this->assertFalse(boolval($task1->executed));
// 「終了タスク」というタイトルのレコードを取得
$task1 = Task::where('title', "終了タスク")->first();
// 実行完了しているはず
$this->assertTrue(boolval($task1->executed));
}
public function testGetTaskDetail() {
$tasks = Task::find(2);
$this->assertEquals('テストタスク', $tasks->title);
}
}
45〜48行目に、テストを追加した。 「2番目のデータ(id = 2)」のタイトルが「テストタスク」であるか、というテストになる。
では、これを実行してみよう。
$ vendor/bin/phpunit
PHPUnit 6.5.8 by Sebastian Bergmann and contributors.
.... 4 / 4 (100%)
Time: 603 ms, Memory: 14.00MB
OK (4 tests, 8 assertions)
すでにデータが存在しているので、もちろんテストは成功だ。
PK(プライマリキー)でのデータの取り出しは、find()
で指定するだけでできる。
詳細データの取り出しで確認したいことは、これで完了だ。
第1章第2節ではデータの投入などの 準備がいろいろとあったが、そのおかげで今回はこれで十分になった。
続いて、取得した詳細データをビューに表示してみよう。