@@ -34,7 +34,7 @@ protected function tearDown(): void
34
34
$ this ->assertTrue (true );
35
35
}
36
36
37
- public function testPaginationCorrectlyHandlesPaginatedResults ()
37
+ public function testPaginationCorrectlyHandlesPaginatedResults (): void
38
38
{
39
39
Paginator::currentPageResolver (function () {
40
40
return 1 ;
@@ -52,7 +52,7 @@ public function testPaginationCorrectlyHandlesPaginatedResults()
52
52
$ builder ->paginate ();
53
53
}
54
54
55
- public function testMacroable ()
55
+ public function testMacroable (): void
56
56
{
57
57
Builder::macro ('foo ' , function () {
58
58
return 'bar ' ;
@@ -64,15 +64,51 @@ public function testMacroable()
64
64
);
65
65
}
66
66
67
- public function testHardDeleteDoesntSetWheres ()
67
+ public function testHardDeleteDoesntSetWheres (): void
68
68
{
69
69
$ builder = new Builder ($ model = m::mock (Model::class), 'zonda ' , null , false );
70
70
$ this ->assertArrayNotHasKey ('__soft_deleted ' , $ builder ->wheres );
71
71
}
72
72
73
- public function testSoftDeleteSetsWheres ()
73
+ public function testSoftDeleteSetsWheres (): void
74
74
{
75
- $ builder = new Builder ($ model = m::mock (Model::class), 'zonda ' , null , true );
75
+ $ builder = new Builder (m::mock (Model::class), 'zonda ' , null , true );
76
76
$ this ->assertEquals (0 , $ builder ->wheres ['__soft_deleted ' ]);
77
77
}
78
+
79
+ public function testWhen (): void
80
+ {
81
+ $ builder = new Builder (m::mock (Model::class), 'zonda ' , null , true );
82
+ $ builder ->when (true , fn (Builder $ collection ) => $ collection ->take (1 ))
83
+ ->when (false , fn (Builder $ collection ) => $ collection ->take (2 ));
84
+ $ this ->assertEquals (1 , $ builder ->limit );
85
+ }
86
+
87
+ public function testWhenWithValueForCallback (): void
88
+ {
89
+ $ callback = fn (Builder $ collection , int $ value ) => $ collection ->take ($ value );
90
+
91
+ $ builder = new Builder (m::mock (Model::class), 'zonda ' , null , true );
92
+ $ builder ->when (0 , $ callback )->when (1 , $ callback );
93
+ $ this ->assertEquals (1 , $ builder ->limit );
94
+ }
95
+
96
+ public function testWhenValueOfClosure (): void
97
+ {
98
+ $ callback = fn (Builder $ collection , int $ value ) => $ collection ->take ($ value );
99
+
100
+ $ builder = new Builder (m::mock (Model::class), 'zonda ' , null , true );
101
+ $ builder ->when (fn () => 0 , $ callback )->when (fn () => 1 , $ callback );
102
+ $ this ->assertEquals (1 , $ builder ->limit );
103
+ }
104
+
105
+ public function testWhenCallbackWithDefault (): void
106
+ {
107
+ $ callback = fn (Builder $ collection , int $ value ) => $ collection ;
108
+ $ default = fn (Builder $ collection , $ value ) => $ collection ->take ($ value );
109
+
110
+ $ builder = new Builder (m::mock (Model::class), 'zonda ' , null , true );
111
+ $ builder ->when (fn () => 0 , $ callback , $ default )->when (fn () => 1 , $ callback , $ default );
112
+ $ this ->assertEquals (0 , $ builder ->limit );
113
+ }
78
114
}
0 commit comments