Skip to content

Commit

Permalink
Episode 42 - Delete Idea Test
Browse files Browse the repository at this point in the history
  • Loading branch information
drehimself committed Apr 20, 2021
1 parent f4f998f commit 91fd42f
Showing 1 changed file with 149 additions and 0 deletions.
149 changes: 149 additions & 0 deletions tests/Feature/DeleteIdeaTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
<?php

namespace Tests\Feature;

use App\Http\Livewire\DeleteIdea;
use App\Http\Livewire\IdeaShow;
use App\Models\Idea;
use App\Models\User;
use App\Models\Vote;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Http\Response;
use Livewire\Livewire;
use Tests\TestCase;

class DeleteIdeaTest extends TestCase
{
use RefreshDatabase;

/** @test */
public function shows_delete_idea_livewire_component_when_user_has_authorization()
{
$user = User::factory()->create();
$idea = Idea::factory()->create([
'user_id' => $user->id,
]);

$this->actingAs($user)
->get(route('idea.show', $idea))
->assertSeeLivewire('delete-idea');
}

/** @test */
public function does_not_show_delete_idea_livewire_component_when_user_does_not_have_authorization()
{
$user = User::factory()->create();
$idea = Idea::factory()->create();

$this->actingAs($user)
->get(route('idea.show', $idea))
->assertDontSeeLivewire('delete-idea');
}

/** @test */
public function deleting_an_idea_works_when_user_has_authorization()
{
$user = User::factory()->create();

$idea = Idea::factory()->create([
'user_id' => $user->id,
]);

Livewire::actingAs($user)
->test(DeleteIdea::class, [
'idea' => $idea,
])
->call('deleteIdea')
->assertRedirect(route('idea.index'));

$this->assertEquals(0, Idea::count());
}

/** @test */
public function deleting_an_idea_works_when_user_is_admin()
{
$user = User::factory()->admin()->create();

$idea = Idea::factory()->create();

Livewire::actingAs($user)
->test(DeleteIdea::class, [
'idea' => $idea,
])
->call('deleteIdea')
->assertRedirect(route('idea.index'));

$this->assertEquals(0, Idea::count());
}

/** @test */
public function deleting_an_idea_with_votes_works_when_user_has_authorization()
{
$user = User::factory()->create();

$idea = Idea::factory()->create([
'user_id' => $user->id,
]);

Vote::factory()->create([
'user_id' => $user->id,
'idea_id' => $idea->id,
]);

Livewire::actingAs($user)
->test(DeleteIdea::class, [
'idea' => $idea,
])
->call('deleteIdea')
->assertRedirect(route('idea.index'));

$this->assertEquals(0, Vote::count());
$this->assertEquals(0, Idea::count());
}

/** @test */
public function deleting_an_idea_does_not_work_when_user_does_not_have_authorization()
{
$user = User::factory()->create();
$idea = Idea::factory()->create();

Livewire::actingAs($user)
->test(DeleteIdea::class, [
'idea' => $idea,
])
->call('deleteIdea')
->assertStatus(Response::HTTP_FORBIDDEN);
}

/** @test */
public function deleting_an_idea_shows_on_menu_when_user_has_authorization()
{
$user = User::factory()->create();

$idea = Idea::factory()->create([
'user_id' => $user->id,
]);

Livewire::actingAs($user)
->test(IdeaShow::class, [
'idea' => $idea,
'votesCount' => 4,
])
->assertSee('Delete Idea');
}

/** @test */
public function deleting_an_idea_does_not_show_on_menu_when_user_does_not_have_authorization()
{
$user = User::factory()->create();
$idea = Idea::factory()->create();

Livewire::actingAs($user)
->test(IdeaShow::class, [
'idea' => $idea,
'votesCount' => 4,
])
->assertDontSee('Delete Idea');
}
}

0 comments on commit 91fd42f

Please sign in to comment.