24
24
use App \Models \User ;
25
25
use App \Tests \Api \V1 \TestCase ;
26
26
use Illuminate \Support \Arr ;
27
+ use Illuminate \Support \Facades \Date ;
27
28
28
29
class IndexTest extends TestCase
29
30
{
30
31
31
32
public function test (): void
32
33
{
33
- $ posts = Post::factory ()->count (3 )->create ();
34
-
35
- $ expected = collect ($ posts )
36
- ->map (fn ($ post ) => $ this ->serializer ->post ($ post )->jsonSerialize ())
34
+ $ posts = Post::factory ()->sequence (
35
+ ['created_at ' => Date::now ()->subWeek ()],
36
+ ['created_at ' => Date::yesterday ()],
37
+ ['created_at ' => Date::now ()],
38
+ )->count (3 )->create ();
39
+
40
+ $ expected = $ posts
41
+ ->sortByDesc ('created_at ' )
42
+ ->values ()
37
43
->all ();
38
44
39
45
/** Draft post should not appear. */
@@ -45,7 +51,7 @@ public function test(): void
45
51
->expects ('posts ' )
46
52
->get ('/api/v1/posts ' );
47
53
48
- $ response ->assertFetchedManyExact ($ expected );
54
+ $ response ->assertFetchedManyInOrder ($ expected );
49
55
}
50
56
51
57
public function testWithUser (): void
@@ -89,9 +95,18 @@ public function testPaginated(): void
89
95
];
90
96
91
97
$ links = [
92
- 'first ' => 'http://localhost/api/v1/posts? ' . Arr::query (['page ' => ['number ' => 1 , 'size ' => 3 ]]),
93
- 'next ' => 'http://localhost/api/v1/posts? ' . Arr::query (['page ' => ['number ' => 2 , 'size ' => 3 ]]),
94
- 'last ' => 'http://localhost/api/v1/posts? ' . Arr::query (['page ' => ['number ' => 2 , 'size ' => 3 ]]),
98
+ 'first ' => 'http://localhost/api/v1/posts? ' . Arr::query ([
99
+ 'page ' => ['number ' => 1 , 'size ' => 3 ],
100
+ 'sort ' => '-createdAt ' ,
101
+ ]),
102
+ 'next ' => 'http://localhost/api/v1/posts? ' . Arr::query ([
103
+ 'page ' => ['number ' => 2 , 'size ' => 3 ],
104
+ 'sort ' => '-createdAt ' ,
105
+ ]),
106
+ 'last ' => 'http://localhost/api/v1/posts? ' . Arr::query ([
107
+ 'page ' => ['number ' => 2 , 'size ' => 3 ],
108
+ 'sort ' => '-createdAt ' ,
109
+ ]),
95
110
];
96
111
97
112
$ response = $ this
@@ -191,10 +206,12 @@ public function testFilteredAndPaginated(): void
191
206
'first ' => 'http://localhost/api/v1/posts? ' . Arr::query ([
192
207
'filter ' => ['published ' => 'true ' ],
193
208
'page ' => ['number ' => 1 , 'size ' => 10 ],
209
+ 'sort ' => '-createdAt ' ,
194
210
]),
195
211
'last ' => 'http://localhost/api/v1/posts? ' . Arr::query ([
196
212
'filter ' => ['published ' => 'true ' ],
197
213
'page ' => ['number ' => 1 , 'size ' => 10 ],
214
+ 'sort ' => '-createdAt ' ,
198
215
]),
199
216
];
200
217
0 commit comments