33namespace Netsells \HashModelIds \Tests \Integration ;
44
55use Illuminate \Database \Eloquent \Builder ;
6+ use Illuminate \Translation \Translator ;
7+ use Illuminate \Validation \InvokableValidationRule ;
8+ use Illuminate \Validation \Validator ;
69use InvalidArgumentException ;
710use Netsells \HashModelIds \ExistsWithHashedIdRule ;
811use Netsells \HashModelIds \Tests \Integration \Fixtures \Models ;
@@ -25,7 +28,9 @@ public function testRuleExpectsHashingModels(): void
2528
2629 public function testRuleHandlesExpectedValueTypes (): void
2730 {
28- $ rule = new ExistsWithHashedIdRule (Models \Foo::class);
31+ $ rule = InvokableValidationRule::make (
32+ invokable: new ExistsWithHashedIdRule (Models \Foo::class),
33+ )->setValidator (validator: $ this ->getValidator ());
2934
3035 $ this ->assertFalse ($ rule ->passes (null , null ));
3136 $ this ->assertFalse ($ rule ->passes (null , []));
@@ -36,7 +41,9 @@ public function testRulePassesForExistingHashedId(): void
3641 {
3742 $ foo = Models \Foo::create ();
3843
39- $ rule = new ExistsWithHashedIdRule (Models \Foo::class);
44+ $ rule = InvokableValidationRule::make (
45+ invokable: new ExistsWithHashedIdRule (Models \Foo::class),
46+ )->setValidator (validator: $ this ->getValidator ());
4047
4148 $ this ->assertTrue ($ rule ->passes (null , $ foo ->hashed_id ));
4249 }
@@ -45,7 +52,9 @@ public function testRuleFailsForNonExistentHashedId(): void
4552 {
4653 $ foo = Models \Foo::create ();
4754
48- $ rule = new ExistsWithHashedIdRule (Models \Foo::class);
55+ $ rule = InvokableValidationRule::make (
56+ invokable: new ExistsWithHashedIdRule (Models \Foo::class),
57+ )->setValidator (validator: $ this ->getValidator ());
4958
5059 $ this ->assertFalse ($ rule ->passes (null , $ foo ->id ));
5160 }
@@ -54,25 +63,32 @@ public function testRuleHandlesConstraintsFluently(): void
5463 {
5564 $ foo = Models \Foo::create ([]);
5665
57- $ rule = new ExistsWithHashedIdRule (Models \Foo::class);
58-
59- $ this ->assertFalse (
60- $ rule
66+ $ rule = InvokableValidationRule::make (
67+ invokable: (new ExistsWithHashedIdRule (Models \Foo::class))
6168 ->where (function (Builder $ query ) use ($ foo ) {
6269 $ query ->whereId ($ foo ->hashed_id );
63- })
64- ->passes (null , $ foo ->hashed_id )
65- );
70+ }),
71+ )->setValidator (validator: $ this ->getValidator ());
6672
67- $ rule = new ExistsWithHashedIdRule ( Models \Foo::class );
73+ $ this -> assertFalse ( $ rule-> passes ( null , $ foo -> hashed_id ) );
6874
69- $ this -> assertTrue (
70- $ rule
75+ $ rule = InvokableValidationRule:: make (
76+ invokable: ( new ExistsWithHashedIdRule ( Models \Foo::class))
7177 ->where (function (Builder $ query ) use ($ foo ) {
7278 $ query ->whereId ($ foo ->id );
7379 })
74- ->whereNotNull ('created_at ' )
75- ->passes (null , $ foo ->hashed_id )
80+ ->whereNotNull ('created_at ' ),
81+ )->setValidator (validator: $ this ->getValidator ());
82+
83+ $ this ->assertTrue ($ rule ->passes (null , $ foo ->hashed_id ));
84+ }
85+
86+ private function getValidator (): Validator
87+ {
88+ return new Validator (
89+ translator: $ this ->app ->make (abstract: Translator::class),
90+ data: [],
91+ rules: [],
7692 );
7793 }
7894}
0 commit comments