= new User() ->forceFill(['id' => 42]) ->setRelation( 'pivot', new Pivot() ->forceFill(['role' => 'maintainer']) ); $pullRequest = new PullRequest() ->forceFill(['author_id' => 23, 'state' => State::Open]) ->setRelation( 'repository', new Repository() ->setRelation('collaborators', collect([$user])) ); // Policy: pure PHP class — instantiate and call $policy = new PullRequestPolicy(); $this->assertTrue($policy->update($user, $pullRequest)); // ValidationRule: also a pure PHP class $rule = new BranchName(); $rule->validate( 'ref', 'feature/new-branch', fn($msg) => $this->fail($msg) ); // If we reach here, validation passed $this->assertTrue(true);