Add Goal tests

This commit is contained in:
Christopher C. Wells 2021-03-29 05:24:03 -07:00 committed by Christopher Charbonneau Wells
parent a6c978981d
commit 38ca26291f
4 changed files with 82 additions and 3 deletions

View File

@ -32,7 +32,7 @@ class GoalFactory extends Factory
'frequency' => $this->faker->randomElement(Goal::$frequencyOptions)['value'], 'frequency' => $this->faker->randomElement(Goal::$frequencyOptions)['value'],
'name' => $this->faker->randomElement(Goal::getNameOptions())['value'], 'name' => $this->faker->randomElement(Goal::getNameOptions())['value'],
'goal' => $this->faker->numberBetween(0, 2000), 'goal' => $this->faker->numberBetween(0, 2000),
'user' => $user, 'user_id' => $user->id,
]; ];
} }
} }

View File

@ -2,7 +2,7 @@
<x-slot name="title">Delete Goal</x-slot> <x-slot name="title">Delete Goal</x-slot>
<x-slot name="header"> <x-slot name="header">
<h1 class="font-semibold text-xl text-gray-800 leading-tight"> <h1 class="font-semibold text-xl text-gray-800 leading-tight">
Delete {{ $goal->goal }} goal? Delete {{ $goal->summary }} goal?
</h1> </h1>
</x-slot> </x-slot>
<form method="POST" action="{{ route('goals.destroy', $goal) }}"> <form method="POST" action="{{ route('goals.destroy', $goal) }}">

View File

@ -13,7 +13,8 @@ class FoodTest extends LoggedInTestCase
public function testCanLoadFoodIndex(): void public function testCanLoadFoodIndex(): void
{ {
$response = $this->get('/foods'); $index_url = action([FoodController::class, 'index']);
$response = $this->get($index_url);
$response->assertOk(); $response->assertOk();
} }

View File

@ -0,0 +1,78 @@
<?php
namespace Tests\Feature;
use App\Http\Controllers\GoalController;
use App\Models\Goal;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\LoggedInTestCase;
class GoalTest extends LoggedInTestCase
{
use RefreshDatabase;
public function testCanLoadGoalIndex(): void
{
$index_url = action([GoalController::class, 'index']);
$response = $this->get($index_url);
$response->assertOk();
}
public function testCanAddGoal(): void
{
$create_url = action([GoalController::class, 'create']);
$response = $this->get($create_url);
$response->assertOk();
/** @var \App\Models\Goal $goal */
$goal = Goal::factory()->make();
$store_url = action([GoalController::class, 'store']);
$response = $this->followingRedirects()->post($store_url, $goal->toArray());
$response->assertOk();
$response->assertSee('Goal updated!');
}
public function testCanViewGoal(): void
{
/** @var \App\Models\Goal $goal */
$goal = Goal::factory()->create();
$view_url = action([GoalController::class, 'show'], ['goal' => $goal]);
$response = $this->get($view_url);
$response->assertOk();
$response->assertSee($goal->summary);
}
public function testCanEditGoal(): void
{
/** @var \App\Models\Goal $goal */
$goal = Goal::factory()->create();
$edit_url = action([GoalController::class, 'edit'], ['goal' => $goal]);
$response = $this->get($edit_url);
$response->assertOk();
/** @var \App\Models\Goal $new_food */
$new_food = Goal::factory()->make(['tags' => []]);
$put_url = action([GoalController::class, 'update'], ['goal' => $goal]);
$response = $this->followingRedirects()->put($put_url, $new_food->toArray());
$response->assertOk();
$response->assertSee('Goal updated!');
}
public function testCanDeleteGoal(): void
{
/** @var \App\Models\Goal $goal */
$goal = Goal::factory()->create();
$delete_url = action([GoalController::class, 'delete'], ['goal' => $goal]);
$response = $this->get($delete_url);
$response->assertOk();
$response->assertSee("Delete {$goal->summary} goal?");
$destroy_url = action([GoalController::class, 'destroy'], ['goal' => $goal]);
$response = $this->followingRedirects()->delete($destroy_url);
$response->assertOk();
$view_url = action([GoalController::class, 'show'], ['goal' => $goal]);
$response = $this->get($view_url);
$response->assertNotFound();
}
}