Skip to content

Commit 6c68bc8

Browse files
committed
refactor: Replace travis-ci with githubactions
I added a config file to run all the tests using github actions, the workflow is supporting php and laravel 7 and 8. I also added some macros over the Livewire test class to write and read the tests easily, the macros are - assertShowSuccessAlert - assertShowErrorAlert - executeAction - confirmAction - executeBulkAction - selectAll
1 parent 59076e3 commit 6c68bc8

File tree

7 files changed

+104
-55
lines changed

7 files changed

+104
-55
lines changed
File renamed without changes.

src/LaravelViewsServiceProvider.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@
1414
use LaravelViews\UI\Header;
1515
use Illuminate\Support\ServiceProvider;
1616
use Illuminate\Support\Facades\Blade;
17-
use Illuminate\Support\Str;
1817
use LaravelViews\Console\GridViewMakeCommand;
1918
use LaravelViews\Console\ListViewMakeCommand;
2019
use LaravelViews\Console\MakeViewCommand;
2120
use LaravelViews\Data\Contracts\Sortable;
2221
use LaravelViews\Data\TableViewSortData;
22+
use LaravelViews\Macros\LaravelViewsTestMacros;
23+
use LaravelViews\Macros\StrMacros;
2324
use LaravelViews\Views\Components\DynamicComponent;
2425

2526
class LaravelViewsServiceProvider extends ServiceProvider
@@ -164,16 +165,15 @@ private function configFiles()
164165

165166
private function macros()
166167
{
167-
Str::macro('classNameAsSentence', function ($className) {
168-
$intermediate = preg_replace('/(?!^)([[:upper:]][[:lower:]]+)/', ' $0', $className);
169-
$titleStr = preg_replace('/(?!^)([[:lower:]])([[:upper:]])/', '$1 $2', $intermediate);
170-
171-
return $titleStr;
172-
});
173-
174-
Str::macro('camelToDash', function ($str) {
175-
return strtolower(preg_replace('%([a-z])([A-Z])%', '\1-\2', $str));
176-
});
168+
$macros = [
169+
LaravelViewsTestMacros::class,
170+
StrMacros::class
171+
];
172+
173+
foreach ($macros as $macroClass) {
174+
$macro = new $macroClass;
175+
$macro->register();
176+
}
177177

178178
return $this;
179179
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
namespace LaravelViews\Macros;
3+
4+
use Livewire\Testing\TestableLivewire;
5+
6+
class LaravelViewsTestMacros
7+
{
8+
public function register()
9+
{
10+
TestableLivewire::macro('assertShowSuccessAlert', function ($message = null) {
11+
$this->assertEmitted('notify', [
12+
'message' => $message ?? __('Action was executed successfully'),
13+
'type' => 'success'
14+
]);
15+
16+
return $this;
17+
});
18+
19+
TestableLivewire::macro('assertShowErrorAlert', function ($message = null) {
20+
$this->assertEmitted('notify', [
21+
'message' => $message ?? __('There was an error executing this action'),
22+
'type' => 'danger'
23+
]);
24+
25+
return $this;
26+
});
27+
28+
TestableLivewire::macro('executeAction', function ($actionClass, $model = null) {
29+
$action = new $actionClass;
30+
$id = $model ? (is_numeric($model) ? $model : $model->getKey()) : null;
31+
$this->call('executeAction', $action->getId(), $id);
32+
33+
return $this;
34+
});
35+
36+
TestableLivewire::macro('confirmAction', function ($actionClass, $model = null) {
37+
$action = new $actionClass;
38+
$id = $model ? is_numeric($model) ? $model : $model->getKey() : null;
39+
$this->call('confirmAndExecuteAction', $action->getId(), $id);
40+
41+
return $this;
42+
});
43+
44+
TestableLivewire::macro('executeBulkAction', function ($actionClass) {
45+
$action = new $actionClass;
46+
$this->call('executeBulkAction', $action->getid());
47+
48+
return $this;
49+
});
50+
51+
TestableLivewire::macro('selectAll', function () {
52+
$this->set('allSelected', true);
53+
54+
return $this;
55+
});
56+
}
57+
}

src/Macros/StrMacros.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace LaravelViews\Macros;
4+
5+
use Illuminate\Support\Str;
6+
7+
class StrMacros
8+
{
9+
public function register()
10+
{
11+
Str::macro('classNameAsSentence', function ($className) {
12+
$intermediate = preg_replace('/(?!^)([[:upper:]][[:lower:]]+)/', ' $0', $className);
13+
$titleStr = preg_replace('/(?!^)([[:lower:]])([[:upper:]])/', '$1 $2', $intermediate);
14+
15+
return $titleStr;
16+
});
17+
18+
Str::macro('camelToDash', function ($str) {
19+
return strtolower(preg_replace('%([a-z])([A-Z])%', '\1-\2', $str));
20+
});
21+
}
22+
}

tests/Feature/BulkActionsTest.php

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
use Illuminate\Foundation\Testing\RefreshDatabase;
66
use LaravelViews\Test\Database\UserTest;
7+
use LaravelViews\Test\Mock\Actions\TestConfirmedDeleteUsersAction;
8+
use LaravelViews\Test\Mock\Actions\TestDeleteUsersAction;
79
use LaravelViews\Test\Mock\MockTableViewWithActions;
810
use LaravelViews\Test\Mock\MockTableViewWithBulkActions;
911
use LaravelViews\Test\TestCase;
@@ -40,7 +42,7 @@ public function testSelectUnselectAll()
4042
$users = factory(UserTest::class, 7)->create();
4143

4244
Livewire::test(MockTableViewWithBulkActions::class)
43-
->set('allSelected', true)
45+
->selectAll()
4446
->assertSet('selected', $users->pluck('id')->toArray())
4547
->set('allSelected', false)
4648
->assertSet('selected', []);
@@ -51,12 +53,10 @@ public function testExecuteActionToSelectedRows()
5153
$users = factory(UserTest::class, 7)->create();
5254

5355
Livewire::test(MockTableViewWithBulkActions::class)
54-
->set('allSelected', true)
55-
->call('executeBulkAction', 'test-delete-users-action', true)
56-
->assertEmitted('notify', [
57-
'message' => 'Action was executed successfully',
58-
'type' => 'success'
59-
])->assertDontSeeUsers($users);
56+
->selectAll()
57+
->executeBulkAction(TestDeleteUsersAction::class)
58+
->assertShowSuccessAlert()
59+
->assertDontSeeUsers($users);
6060

6161
foreach ($users as $user) {
6262
$this->assertDatabaseMissing('users', $user->toArray());
@@ -68,19 +68,14 @@ public function testExecuteBulkActionsWithConfirmationMessage()
6868
$users = factory(UserTest::class, 7)->create();
6969

7070
Livewire::test(MockTableViewWithBulkActions::class)
71-
->set('allSelected', true)
72-
->call('executeBulkAction', 'test-confirmed-delete-users-action')
71+
->selectAll()
72+
->executeBulkAction(TestConfirmedDeleteUsersAction::class)
7373
->assertEmitted('openConfirmationModal', [
7474
'message' => 'Do you really want to perform this action?',
7575
'id' => 'test-confirmed-delete-users-action',
7676
])
77-
78-
// Second time with false to avoid validating if the action needs to be confirmed
79-
->call('confirmAndExecuteBulkAction', 'test-confirmed-delete-users-action')
80-
->assertEmitted('notify', [
81-
'message' => 'Action was executed successfully',
82-
'type' => 'success'
83-
])
77+
->confirmAction(TestConfirmedDeleteUsersAction::class)
78+
->assertShowSuccessAlert()
8479
->assertDontSeeUsers($users);
8580

8681
foreach ($users as $user) {

tests/Feature/ExecuteActionsTest.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ public function testSeeSuccessAlert()
2020

2121
Livewire::test(MockTableViewWithActions::class)
2222
->call('executeAction', 'test-success-action', 1, true)
23-
->assertEmitted('notify', [
24-
'message' => 'Action was executed successfully',
25-
'type' => 'success'
26-
]);
23+
->assertShowSuccessAlert();
2724
}
2825

2926
public function testSeeErrorAlert()
@@ -32,10 +29,7 @@ public function testSeeErrorAlert()
3229

3330
Livewire::test(MockTableViewWithActions::class)
3431
->call('executeAction', 'test-error-action', 1, true)
35-
->assertEmitted('notify', [
36-
'message' => 'There was an error executing this action',
37-
'type' => 'danger'
38-
]);
32+
->assertShowErrorAlert();
3933
}
4034

4135
// TODO: Test custom error message
@@ -80,10 +74,7 @@ public function testCallActionAfterConfirmationMessage()
8074
'modelId' => $user->id
8175
])
8276
->confirmAction(TestConfirmedAction::class, $user)
83-
->assertEmitted('notify', [
84-
'message' => 'Action was executed successfully',
85-
'type' => 'success'
86-
]);
77+
->assertShowSuccessAlert();
8778
}
8879

8980
public function testEmitedEventFromAction()

tests/TestCase.php

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,6 @@ protected function setUp(): void
4242
TestableLivewire::macro('assertDontSeeUsers', function ($users) {
4343
return TestableLivewire::assertSeeUsers($users, 'assertDontSee');
4444
});
45-
46-
TestableLivewire::macro('executeAction', function ($actionClass, $model) {
47-
$action = new $actionClass;
48-
$id = is_numeric($model) ? $model : $model->getKey();
49-
$this->call('executeAction', $action->getId(), $id);
50-
51-
return $this;
52-
});
53-
54-
TestableLivewire::macro('confirmAction', function ($actionClass, $model) {
55-
$action = new $actionClass;
56-
$id = is_numeric($model) ? $model : $model->getKey();
57-
$this->call('confirmAndExecuteAction', $action->getId(), $id);
58-
59-
return $this;
60-
});
6145
}
6246

6347
protected function getPackageProviders($app)

0 commit comments

Comments
 (0)