File tree Expand file tree Collapse file tree 5 files changed +61
-23
lines changed
tests/Feature/Livewire/Pages/Discussion Expand file tree Collapse file tree 5 files changed +61
-23
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ namespace App \Actions \Discussion ;
6
+
7
+ use App \Gamify \Points \DiscussionCreated ;
8
+ use App \Models \Discussion ;
9
+ use Illuminate \Support \Facades \DB ;
10
+
11
+ final class DeleteDiscussionAction
12
+ {
13
+ public function execute (Discussion $ discussion ): void
14
+ {
15
+ DB ::beginTransaction ();
16
+
17
+ undoPoint (new DiscussionCreated ($ discussion ));
18
+ $ discussion ->delete ();
19
+
20
+ DB ::commit ();
21
+ }
22
+ }
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ namespace App \Actions \Forum ;
6
+
7
+ use App \Gamify \Points \ThreadCreated ;
8
+ use App \Models \Thread ;
9
+ use Illuminate \Support \Facades \DB ;
10
+
11
+ final class DeleteThreadAction
12
+ {
13
+ public function execute (Thread $ thread ): void
14
+ {
15
+ DB ::beginTransaction ();
16
+
17
+ undoPoint (new ThreadCreated ($ thread ));
18
+ $ thread ->delete ();
19
+
20
+ DB ::commit ();
21
+ }
22
+ }
Original file line number Diff line number Diff line change 5
5
namespace App \Livewire \Pages \Discussions ;
6
6
7
7
use App \Actions \Discussion \ConvertDiscussionToThreadAction ;
8
- use App \Gamify \ Points \ DiscussionCreated ;
8
+ use App \Actions \ Discussion \ DeleteDiscussionAction ;
9
9
use App \Models \Discussion ;
10
10
use Filament \Actions \Action ;
11
11
use Filament \Actions \Concerns \InteractsWithActions ;
14
14
use Filament \Forms \Concerns \InteractsWithForms ;
15
15
use Filament \Forms \Contracts \HasForms ;
16
16
use Illuminate \Contracts \View \View ;
17
- use Illuminate \Support \Facades \DB ;
18
17
use Livewire \Component ;
19
18
20
19
final class SingleDiscussion extends Component implements HasActions, HasForms
@@ -83,13 +82,8 @@ public function deleteAction(): Action
83
82
->requiresConfirmation ()
84
83
->successNotificationTitle (__ ('notifications.discussion.deleted ' ))
85
84
->action (function (): void {
86
- DB ::beginTransaction ();
87
85
88
- undoPoint (new DiscussionCreated ($ this ->discussion ));
89
-
90
- $ this ->discussion ->delete ();
91
-
92
- DB ::commit ();
86
+ app (DeleteDiscussionAction::class)->execute ($ this ->discussion );
93
87
94
88
$ this ->redirectRoute ('discussions.index ' , navigate: true );
95
89
});
Original file line number Diff line number Diff line change 4
4
5
5
namespace App \Livewire \Pages \Forum ;
6
6
7
- use App \Gamify \ Points \ ThreadCreated ;
7
+ use App \Actions \ Forum \ DeleteThreadAction ;
8
8
use App \Models \Thread ;
9
9
use Filament \Actions \Action ;
10
10
use Filament \Actions \Concerns \InteractsWithActions ;
11
11
use Filament \Actions \Contracts \HasActions ;
12
12
use Filament \Forms \Concerns \InteractsWithForms ;
13
13
use Filament \Forms \Contracts \HasForms ;
14
14
use Illuminate \Contracts \View \View ;
15
- use Illuminate \Support \Facades \DB ;
16
15
use Livewire \Attributes \Layout ;
17
16
use Livewire \Attributes \On ;
18
17
use Livewire \Component ;
@@ -55,12 +54,8 @@ public function deleteAction(): Action
55
54
->authorize ('delete ' , $ this ->thread )
56
55
->requiresConfirmation ()
57
56
->action (function (): void {
58
- DB ::beginTransaction ();
59
57
60
- undoPoint (new ThreadCreated ($ this ->thread ));
61
- $ this ->thread ->delete ();
62
-
63
- DB ::commit ();
58
+ app (DeleteThreadAction::class)->execute ($ this ->thread );
64
59
65
60
$ this ->redirectRoute ('forum.index ' , navigate: true );
66
61
});
Original file line number Diff line number Diff line change 2
2
3
3
declare (strict_types=1 );
4
4
5
- use App \Gamify \Points \DiscussionCreated ;
5
+ use App \Actions \Discussion \CreateDiscussionAction ;
6
+ use App \Data \CreateDiscussionData ;
6
7
use App \Livewire \Pages \Discussions \SingleDiscussion ;
7
- use App \Models \Discussion ;
8
- use App \Models \Tag ;
8
+ use Illuminate \Support \Facades \Notification ;
9
9
use Livewire \Livewire ;
10
10
11
+ beforeEach (function (): void {
12
+ Notification::fake ();
13
+ });
14
+
11
15
it ('delete user action can remove discussion point ' , function (): void {
12
16
$ user = $ this ->login ();
13
- $ discussion = Discussion::factory ()->create (['user_id ' => $ user ->id ]);
14
- $ tags = Tag::factory ()->count (3 )->create ();
15
-
16
- $ discussion ->tags ()->attach ($ tags ->modelKeys ());
17
+ $ discussionData = CreateDiscussionData::from ([
18
+ 'title ' => 'Discussion title ' ,
19
+ 'body ' => 'Discussion body ' ,
20
+ 'tags ' => [],
21
+ ]);
17
22
18
- givePoint ( new DiscussionCreated ( $ discussion) );
23
+ $ discussion = app (CreateDiscussionAction::class)-> execute ( $ discussionData );
19
24
20
25
Livewire::test (SingleDiscussion::class, ['discussion ' => $ discussion ])
21
26
->callAction ('deleteAction ' )
You can’t perform that action at this time.
0 commit comments