@@ -508,6 +508,101 @@ public function assets_are_found_using_where_column()
508508 $ this ->assertEquals (['Post 1 ' , 'Post 2 ' , 'Post 5 ' , 'Post 6 ' ], $ entries ->map ->foo ->all ());
509509 }
510510
511+ #[Test]
512+ public function assets_can_be_ordered_by_an_integer_json_column ()
513+ {
514+ $ blueprint = Blueprint::makeFromFields (['integer ' => ['type ' => 'integer ' ]]);
515+ Blueprint::shouldReceive ('find ' )->with ('assets/test ' )->andReturn ($ blueprint );
516+
517+ Asset::find ('test::a.jpg ' )->data (['integer ' => 3 ])->save ();
518+ Asset::find ('test::b.txt ' )->data (['integer ' => 5 ])->save ();
519+ Asset::find ('test::c.txt ' )->data (['integer ' => 1 ])->save ();
520+ Asset::find ('test::d.jpg ' )->data (['integer ' => 35 ])->save ();
521+ Asset::find ('test::e.jpg ' )->data (['integer ' => 20 ])->save ();
522+ Asset::find ('test::f.jpg ' )->data (['integer ' => 12 ])->save ();
523+
524+ $ assets = Asset::query ()->where ('container ' , 'test ' )->orderBy ('integer ' , 'asc ' )->get ();
525+
526+ $ this ->assertCount (6 , $ assets );
527+ $ this ->assertEquals (['c ' , 'a ' , 'b ' , 'f ' , 'e ' , 'd ' ], $ assets ->map ->filename ()->all ());
528+ }
529+
530+ #[Test]
531+ public function assets_can_be_ordered_by_a_float_json_column ()
532+ {
533+ $ blueprint = Blueprint::makeFromFields (['float ' => ['type ' => 'float ' ]]);
534+ Blueprint::shouldReceive ('find ' )->with ('assets/test ' )->andReturn ($ blueprint );
535+
536+ Asset::find ('test::a.jpg ' )->data (['float ' => 3.3 ])->save ();
537+ Asset::find ('test::b.txt ' )->data (['float ' => 5.5 ])->save ();
538+ Asset::find ('test::c.txt ' )->data (['float ' => 1.1 ])->save ();
539+ Asset::find ('test::d.jpg ' )->data (['float ' => 35.5 ])->save ();
540+ Asset::find ('test::e.jpg ' )->data (['float ' => 20.0 ])->save ();
541+ Asset::find ('test::f.jpg ' )->data (['float ' => 12.2 ])->save ();
542+
543+ $ assets = Asset::query ()->where ('container ' , 'test ' )->orderBy ('float ' , 'asc ' )->get ();
544+
545+ $ this ->assertCount (6 , $ assets );
546+ $ this ->assertEquals (['c ' , 'a ' , 'b ' , 'f ' , 'e ' , 'd ' ], $ assets ->map ->filename ()->all ());
547+ }
548+
549+ #[Test]
550+ public function assets_can_be_ordered_by_a_date_json_field ()
551+ {
552+ $ blueprint = Blueprint::makeFromFields (['date_field ' => ['type ' => 'date ' , 'time_enabled ' => true ]]);
553+ Blueprint::shouldReceive ('find ' )->with ('assets/test ' )->andReturn ($ blueprint );
554+
555+ Asset::find ('test::a.jpg ' )->data (['date_field ' => '2021-06-15 20:31:04 ' ])->save ();
556+ Asset::find ('test::b.txt ' )->data (['date_field ' => '2021-01-13 20:31:04 ' ])->save ();
557+ Asset::find ('test::c.txt ' )->data (['date_field ' => '2021-11-17 20:31:04 ' ])->save ();
558+ Asset::find ('test::d.jpg ' )->data (['date_field ' => '2023-01-01 20:31:04 ' ])->save ();
559+ Asset::find ('test::e.jpg ' )->data (['date_field ' => '2025-01-01 20:31:04 ' ])->save ();
560+ Asset::find ('test::f.jpg ' )->data (['date_field ' => '2024-01-01 20:31:04 ' ])->save ();
561+
562+ $ assets = Asset::query ()->where ('container ' , 'test ' )->orderBy ('date_field ' , 'asc ' )->get ();
563+
564+ $ this ->assertCount (6 , $ assets );
565+ $ this ->assertEquals (['b ' , 'a ' , 'c ' , 'd ' , 'f ' , 'e ' ], $ assets ->map ->filename ()->all ());
566+ }
567+
568+ #[Test]
569+ public function assets_can_be_ordered_by_a_datetime_range_json_field ()
570+ {
571+ $ blueprint = Blueprint::makeFromFields (['date_field ' => ['type ' => 'date ' , 'time_enabled ' => true , 'mode ' => 'range ' ]]);
572+ Blueprint::shouldReceive ('find ' )->with ('assets/test ' )->andReturn ($ blueprint );
573+
574+ Asset::find ('test::a.jpg ' )->data (['date_field ' => ['start ' => '2021-06-15 20:31:04 ' , 'end ' => '2021-06-15 21:00:00 ' ]])->save ();
575+ Asset::find ('test::b.txt ' )->data (['date_field ' => ['start ' => '2021-01-13 20:31:04 ' , 'end ' => '2021-06-16 20:31:04 ' ]])->save ();
576+ Asset::find ('test::c.txt ' )->data (['date_field ' => ['start ' => '2021-11-17 20:31:04 ' , 'end ' => '2021-11-17 20:31:04 ' ]])->save ();
577+ Asset::find ('test::d.jpg ' )->data (['date_field ' => ['start ' => '2021-06-15 20:31:04 ' , 'end ' => '2021-06-15 22:00:00 ' ]])->save ();
578+ Asset::find ('test::e.jpg ' )->data (['date_field ' => ['start ' => '2024-06-15 20:31:04 ' , 'end ' => '2024-06-15 22:00:00 ' ]])->save ();
579+ Asset::find ('test::f.jpg ' )->data (['date_field ' => ['start ' => '2025-06-15 20:31:04 ' , 'end ' => '2025-06-15 22:00:00 ' ]])->save ();
580+
581+ $ assets = Asset::query ()->where ('container ' , 'test ' )->orderBy ('date_field ' , 'asc ' )->get ();
582+
583+ $ this ->assertCount (6 , $ assets );
584+ $ this ->assertEquals (['b ' , 'a ' , 'd ' , 'c ' , 'e ' , 'f ' ], $ assets ->map ->filename ()->all ());
585+ }
586+
587+ #[Test]
588+ public function assets_can_be_ordered_by_a_date_range_json_field ()
589+ {
590+ $ blueprint = Blueprint::makeFromFields (['date_field ' => ['type ' => 'date ' , 'time_enabled ' => false , 'mode ' => 'range ' ]]);
591+ Blueprint::shouldReceive ('find ' )->with ('assets/test ' )->andReturn ($ blueprint );
592+
593+ Asset::find ('test::a.jpg ' )->data (['date_field ' => ['start ' => '2021-06-15 ' , 'end ' => '2021-06-15 ' ]])->save ();
594+ Asset::find ('test::b.txt ' )->data (['date_field ' => ['start ' => '2021-01-13 ' , 'end ' => '2021-06-16 ' ]])->save ();
595+ Asset::find ('test::c.txt ' )->data (['date_field ' => ['start ' => '2021-11-17 ' , 'end ' => '2021-11-17 ' ]])->save ();
596+ Asset::find ('test::d.jpg ' )->data (['date_field ' => ['start ' => '2021-06-15 ' , 'end ' => '2021-06-15 ' ]])->save ();
597+ Asset::find ('test::e.jpg ' )->data (['date_field ' => ['start ' => '2024-06-15 ' , 'end ' => '2024-06-15 ' ]])->save ();
598+ Asset::find ('test::f.jpg ' )->data (['date_field ' => ['start ' => '2025-06-15 ' , 'end ' => '2025-06-15 ' ]])->save ();
599+
600+ $ assets = Asset::query ()->where ('container ' , 'test ' )->orderBy ('date_field ' , 'asc ' )->get ();
601+
602+ $ this ->assertCount (6 , $ assets );
603+ $ this ->assertEquals (['b ' , 'a ' , 'd ' , 'c ' , 'e ' , 'f ' ], $ assets ->map ->filename ()->all ());
604+ }
605+
511606 #[Test]
512607 public function it_can_get_assets_using_when ()
513608 {
0 commit comments