calls[] = compact('scope', 'parameters'); return $resolver(); } }; $caches = new class($cache) extends UpstreamQueryCacheFactory { public function __construct(private readonly UpstreamQueryCache $cache) { } public function forSource(string $source): UpstreamQueryCache { return $this->cache; } }; $information = new class($caches) extends UpstreamBusinessInformation { public array $snapshots = []; public function snapshot(string $scope, array $parameters): array { $this->snapshots[] = compact('scope', 'parameters'); return ['data' => [], 'total' => 0]; } }; $this->app['request']->merge(['page' => 3]); $paginator = $information->paginate($section, $page, 25); $expected = ['scope' => $scope, 'parameters' => ['page' => 3, 'perPage' => 25]]; $this->assertSame(3, $paginator->currentPage()); $this->assertSame($expected, $cache->calls[0]); $this->assertSame($expected, $information->snapshots[0]); } public static function businessInformationPages(): array { return [ 'company' => ['company-management', 'basic-information', 'company-information.read'], 'store' => ['store-management', 'basic-information', 'store-information.read'], 'trademark' => ['trademark-management', 'information', 'trademark-information.read'], ]; } }