Skip to content

Commit 97e458e

Browse files
authored
Merge pull request #113 from Gustavinho/refactor/refactor-table-view-tests
refactor: Refactor table view tests
2 parents 5d0aea7 + c639986 commit 97e458e

17 files changed

+254
-306
lines changed

tests/Database/FoodTest.php

Lines changed: 0 additions & 19 deletions
This file was deleted.

tests/Database/ReviewTest.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,4 @@ public function user(): BelongsTo
2323
{
2424
return $this->belongsTo(UserTest::class, 'user_id', 'id');
2525
}
26-
27-
public function food(): BelongsTo
28-
{
29-
return $this->belongsTo(FoodTest::class, 'food_id', 'id');
30-
}
3126
}

tests/Database/factories/FoodFactory.php

Lines changed: 0 additions & 25 deletions
This file was deleted.

tests/Database/migrations/2014_10_12_000000_create_test_tables.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,6 @@ public function up()
3232
$table->text('message');
3333
$table->timestamps();
3434
});
35-
36-
Schema::create('foods', function (Blueprint $table) {
37-
$table->bigIncrements('id');
38-
$table->string('name');
39-
$table->text('description');
40-
$table->string('photo');
41-
$table->timestamps();
42-
});
4335
}
4436

4537
/**

tests/Feature/DetailViewTest.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,13 @@
66
use Illuminate\Foundation\Testing\RefreshDatabase;
77
use LaravelViews\Test\Database\UserTest;
88
use LaravelViews\Test\Mock\MockDetailView;
9-
use LaravelViews\Test\Mock\MockDetailViewWithActions;
109
use LaravelViews\Test\Mock\MockDetailViewWithComponents;
1110
use LaravelViews\Test\Mock\MockDetailViewWithMultipleComponents;
12-
use LaravelViews\Test\Traits\WithActions;
1311
use Livewire\Livewire;
1412

1513
class DetailViewTest extends TestCase
1614
{
17-
use RefreshDatabase, WithActions;
18-
19-
public function getViewWithActions()
20-
{
21-
$user = factory(UserTest::class)->create();
22-
return Livewire::test(MockDetailViewWithActions::class, ['model' => $user]);
23-
}
15+
use RefreshDatabase;
2416

2517
public function testCreateViewUsingId()
2618
{

tests/Feature/ExecuteActionsTest.php

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace LaravelViews\Test\Feature;
44

55
use Illuminate\Foundation\Testing\RefreshDatabase;
6+
use LaravelViews\Test\Database\UserTest;
67
use LaravelViews\Test\Mock\MockTableViewWithActions;
78
use LaravelViews\Test\TestCase;
89
use Livewire\Livewire;
@@ -12,6 +13,68 @@ class ExecuteActionsTest extends TestCase
1213
use RefreshDatabase;
1314

1415
public function testSeeSuccessAlert()
16+
{
17+
factory(UserTest::class)->create();
18+
19+
Livewire::test(MockTableViewWithActions::class)
20+
->call('executeAction', 'test-success-action', 1, true)
21+
->assertEmitted('notify', [
22+
'message' => 'Action was executed successfully',
23+
'type' => 'success'
24+
]);
25+
}
26+
27+
public function testSeeErrorAlert()
28+
{
29+
factory(UserTest::class)->create();
30+
31+
Livewire::test(MockTableViewWithActions::class)
32+
->call('executeAction', 'test-error-action', 1, true)
33+
->assertEmitted('notify', [
34+
'message' => 'There was an error executing this action',
35+
'type' => 'danger'
36+
]);
37+
}
38+
39+
// TODO: Test custom error message
40+
41+
public function testSeeMultipleRedirectActions()
42+
{
43+
factory(UserTest::class)->create();
44+
$icons = ['eye', 'pencil'];
45+
46+
$livewire = Livewire::test(MockTableViewWithActions::class);
47+
48+
foreach ($icons as $icon) {
49+
$livewire->assertSeeHtml('data-feather="' . $icon . '"');
50+
}
51+
}
52+
53+
public function testSeeConfirmationMessage()
54+
{
55+
factory(UserTest::class)->create();
56+
$message = 'This is the confirmation message';
57+
58+
Livewire::test(MockTableViewWithActions::class)
59+
->set('confirmationMessage', $message)
60+
->assertSee($message);
61+
}
62+
63+
public function testCallActionAfterConfirmationMessage()
64+
{
65+
$user = factory(UserTest::class)->create();
66+
67+
Livewire::test(MockTableViewWithActions::class)
68+
->call('executeAction', 'test-confirmed-action', $user->id, true)
69+
->assertSee('Do you really want to perform this action?')
70+
->call('executeAction', 'test-confirmed-action', $user->id, false)
71+
->assertEmitted('notify', [
72+
'message' => 'Action was executed successfully',
73+
'type' => 'success'
74+
]);
75+
}
76+
77+
public function testEmitedEventFromAction()
1578
{
1679
Livewire::test(MockTableViewWithActions::class)
1780
->call('executeAction', 'test-success-action', 1, true)

tests/Feature/FilterDataTest.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
namespace LaravelViews\Test\Feature;
4+
5+
use LaravelViews\Test\Database\UserTest;
6+
use LaravelViews\Test\Mock\MockTableView;
7+
use LaravelViews\Test\Mock\MockTableViewWithSearchAndFilters;
8+
use LaravelViews\Test\TestCase;
9+
use Illuminate\Foundation\Testing\RefreshDatabase;
10+
use Livewire\Livewire;
11+
12+
class FilterDataTest extends TestCase
13+
{
14+
use RefreshDatabase;
15+
16+
public function testDontSeeFiltersButton()
17+
{
18+
Livewire::test(MockTableView::class)
19+
->assertDontSee('Filters');
20+
}
21+
22+
public function testSeeAllDataFoundByAFilter()
23+
{
24+
$activeUsers = factory(UserTest::class, 5)->create(['active' => true]);
25+
$inactiveUsers = factory(UserTest::class, 5)->create(['active' => false]);
26+
27+
Livewire::test(MockTableViewWithSearchAndFilters::class)
28+
->set('filters', [
29+
'active-users-filter' => 1
30+
])
31+
->assertSeeUsers($activeUsers)
32+
->assertDontSeeUsers($inactiveUsers);
33+
}
34+
35+
36+
public function testClearFilters()
37+
{
38+
Livewire::test(MockTableViewWithSearchAndFilters::class)
39+
->set('filters', [
40+
'active-users-filter' => 1
41+
])
42+
->call('clearFilters')
43+
->assertSet('filters', []);
44+
}
45+
}

tests/Feature/GridViewTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use LaravelViews\Test\TestCase;
66
use Illuminate\Foundation\Testing\RefreshDatabase;
7-
use LaravelViews\Test\Database\FoodTest;
7+
use LaravelViews\Test\Database\UserTest;
88
use LaravelViews\Test\Mock\MockGridView;
99
use Livewire\Livewire;
1010

@@ -19,13 +19,13 @@ protected function setUp(): void
1919

2020
public function testSeeAllGridData()
2121
{
22-
$foods = factory(FoodTest::class, 10)->create();
22+
$users = factory(UserTest::class, 10)->create();
2323

2424
$livewire = Livewire::test(MockGridView::class);
2525

26-
foreach ($foods as $food) {
27-
$livewire->assertSee($food->name)
28-
->assertSee($food->description);
26+
foreach ($users as $user) {
27+
$livewire->assertSee($user->name)
28+
->assertSee($user->email);
2929
}
3030
}
3131
}

tests/Feature/RelationalSearchTest.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace LaravelViews\Test\Feature;
44

55
use Illuminate\Foundation\Testing\RefreshDatabase;
6-
use LaravelViews\Test\Database\FoodTest;
76
use LaravelViews\Test\Database\ReviewTest;
87
use LaravelViews\Test\Database\UserTest;
98
use LaravelViews\Test\Mock\MockReviewTableView;
@@ -23,16 +22,13 @@ protected function setUp(): void
2322
{
2423
parent::setUp();
2524

26-
factory(FoodTest::class, 10)->create();
2725
$this->users = factory(UserTest::class, 10)
2826
->create()
2927
->each(function (UserTest $user) {
3028
$user->reviews()->saveMany(factory(ReviewTest::class, 3)->make());
3129
});
3230

3331
$this->reviews = ReviewTest::all();
34-
35-
$this->livewire = Livewire::test(MockReviewTableView::class);
3632
}
3733

3834

tests/Feature/SearchDataTest.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace LaravelViews\Test\Feature;
4+
5+
use LaravelViews\Test\Database\UserTest;
6+
use LaravelViews\Test\Mock\MockTableView;
7+
use LaravelViews\Test\Mock\MockTableViewWithSearchAndFilters;
8+
use LaravelViews\Test\TestCase;
9+
use Illuminate\Foundation\Testing\RefreshDatabase;
10+
use Livewire\Livewire;
11+
12+
class SearchDataTest extends TestCase
13+
{
14+
use RefreshDatabase;
15+
16+
public function testDontSeeSearchInputIf()
17+
{
18+
Livewire::test(MockTableView::class)
19+
->assertDontSee('Search');
20+
}
21+
22+
public function testSeeAllDataFoundBySearchInput()
23+
{
24+
$users = factory(UserTest::class, 10)->create();
25+
$user = $users->last();
26+
27+
Livewire::test(MockTableViewWithSearchAndFilters::class)
28+
->set('search', $user->email)
29+
// Filtered user
30+
->assertSeeUsers(collect([$user]))
31+
// Rest of the users
32+
->assertDontSeeUsers($users->splice(0, 9));
33+
}
34+
35+
public function testClearSearch()
36+
{
37+
Livewire::test(MockTableViewWithSearchAndFilters::class)
38+
->set('search', 'my-custom-search')
39+
->call('clearSearch')
40+
->assertSet('search', '');
41+
}
42+
}

0 commit comments

Comments
 (0)