From 3c15039a48ae9ad30a714402ff8a81323a05234d Mon Sep 17 00:00:00 2001 From: Application-drop-up Date: Mon, 30 Mar 2026 09:12:57 +0900 Subject: [PATCH 1/2] feat: code-format --- src/.gitignore | 2 - .../Commands/AlgoliaImportWorldHeritages.php | 8 ++-- .../Commands/DumpUnescoWorldHeritageJson.php | 8 ++-- .../DumpWorldHeritageSiteJapaneseName.php | 4 +- ...mportWorldHeritageJapaneseNameFromJson.php | 6 +-- .../ImportWorldHeritageSiteImagesFromJson.php | 6 +-- .../Commands/SplitWorldHeritageJson.php | 4 +- .../Console/Commands/WorldHeritageBuild.php | 8 ++-- src/app/Enums/Region.php | 12 ------ .../AlgoliaWorldHeritageSearchAdapter.php | 4 +- .../Domains/Infra/CountryResolver.php | 4 +- .../StudyRegion/ExceptionalStudyRegions.php | 5 --- ...ritageQueryService_countEachRegionTest.php | 42 +++++++++---------- ...ritageQueryService_getAllHeritagesTest.php | 2 +- .../WorldHeritageQueryService_getByIdTest.php | 6 +-- ...ritageQueryService_searchHeritagesTest.php | 4 +- ...WorldHeritageReadQueryService_findTest.php | 2 +- .../WorldHeritageEntityCollectionTest.php | 12 +++--- .../Domains/Test/WorldHeritageEntityTest.php | 7 +++- .../Packages/Domains/WorldHeritageEntity.php | 6 +-- .../Domains/WorldHeritageQueryService.php | 22 +++++----- .../Domains/WorldHeritageReadQueryService.php | 6 +-- .../Controller/WorldHeritageController.php | 2 +- .../QueryUseCases/Dto/WorldHeritageDto.php | 2 +- .../Dto/WorldHeritageDtoCollection.php | 4 +- .../WorldHeritageDetailViewModelFactory.php | 4 +- ...orldHeritageViewModelCollectionFactory.php | 2 +- ...CreateWorldHeritageListQueryCollection.php | 2 +- ...UpdateWorldHeritageListQueryCollection.php | 4 +- .../ListQuery/WorldHeritageListQuery.php | 2 +- .../WorldHeritageQueryServiceInterface.php | 4 +- .../Dto/WorldHeritageDtoCollectionTest.php | 6 +-- .../Dto/WorldHeritageDtoDetailFactoryTest.php | 4 +- .../WorldHeritageDtoSummaryFactoryTest.php | 8 ++-- .../Tests/GetWorldHeritageByIdDtoTest.php | 4 +- .../GetWorldHeritageByIdUseCaseTest.php | 8 ++-- .../UseCase/GetWorldHeritagesUseCaseTest.php | 2 +- ...chWorldHeritagesWithAlgoliaUseCaseTest.php | 6 +-- ...orldHeritageDetailViewModelFactoryTest.php | 4 +- ...rldHeritageSummaryViewModelFactoryTest.php | 4 +- ...HeritageViewModelCollectionFactoryTest.php | 6 +-- .../UseCase/GetCountEachRegionUseCase.php | 2 +- .../UseCase/GetWorldHeritagesUseCase.php | 2 +- .../WorldHeritageViewModelCollection.php | 8 ++-- .../Features/Tests/GetCountEachRegionTest.php | 2 +- .../Tests/GetWorldHeritageByIdTest.php | 10 ++--- .../Features/Tests/GetWorldHeritagesTest.php | 10 ++--- .../Tests/SearchWorldHeritagesTest.php | 2 +- src/app/Support/StudyRegionResolver.php | 8 ---- src/bootstrap/app.php | 4 +- src/routes/api.php | 2 +- src/routes/console.php | 2 +- 52 files changed, 142 insertions(+), 168 deletions(-) delete mode 100644 src/app/Enums/Region.php diff --git a/src/.gitignore b/src/.gitignore index dfed44c..0685a28 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -9,8 +9,6 @@ /vendor .env -.env.backup -.env.prod .env.testing .phpactor.json .phpunit.result.cache diff --git a/src/app/Console/Commands/AlgoliaImportWorldHeritages.php b/src/app/Console/Commands/AlgoliaImportWorldHeritages.php index eae19b9..cd5206b 100644 --- a/src/app/Console/Commands/AlgoliaImportWorldHeritages.php +++ b/src/app/Console/Commands/AlgoliaImportWorldHeritages.php @@ -51,10 +51,10 @@ public function handle(): int WorldHeritage::query() ->with([ - 'images' => function ($query) { + 'images' => static function ($query): void { $query->where('is_primary', true)->select(['world_heritage_site_id', 'url']); }, - 'countries' => function ($query) { + 'countries' => static function ($query): void { $query->select(['countries.state_party_code', 'countries.name_en', 'countries.name_jp']); }, ]) @@ -69,12 +69,12 @@ public function handle(): int 'world_heritage_sites.year_inscribed', 'world_heritage_sites.is_endangered', ]) - ->chunkById($chunk, function ($rows) use ($client, $indexName, $dryRun, &$processed) { + ->chunkById($chunk, function ($rows) use ($client, $indexName, $dryRun, &$processed): void { $objects = []; foreach ($rows as $row) { $countries = $row->countries - ->filter(fn ($country) => $country->state_party_code !== null) + ->filter(static fn ($country) => $country->state_party_code !== null) ->values(); $statePartyCodes = $countries diff --git a/src/app/Console/Commands/DumpUnescoWorldHeritageJson.php b/src/app/Console/Commands/DumpUnescoWorldHeritageJson.php index 4f0d13b..b4b4e91 100644 --- a/src/app/Console/Commands/DumpUnescoWorldHeritageJson.php +++ b/src/app/Console/Commands/DumpUnescoWorldHeritageJson.php @@ -403,7 +403,7 @@ private function resolveCountries(): array return []; } $lines = preg_split('/\R/u', (string) Storage::disk('local')->get($file)) ?: []; - $items = array_map(fn ($v) => trim((string) $v), $lines); + $items = array_map(static fn ($v) => trim((string) $v), $lines); return array_values(array_filter(array_unique($items))); } @@ -440,9 +440,9 @@ private function slugifyCountry(string $country): string private function normalizeRow(array $row): array { - $toBool = fn ($v) => is_bool($v) ? $v : (strtolower(trim((string) $v)) === 'true'); - $toFloat = fn ($v) => $v === null || $v === '' ? null : (float) $v; - $toInt = fn ($v) => $v === null || $v === '' ? null : (int) $v; + $toBool = static fn ($v) => is_bool($v) ? $v : (strtolower(trim((string) $v)) === 'true'); + $toFloat = static fn ($v) => $v === null || $v === '' ? null : (float) $v; + $toInt = static fn ($v) => $v === null || $v === '' ? null : (int) $v; $images = []; if (isset($row['images_urls']) && is_string($row['images_urls'])) { diff --git a/src/app/Console/Commands/DumpWorldHeritageSiteJapaneseName.php b/src/app/Console/Commands/DumpWorldHeritageSiteJapaneseName.php index adcc6a3..40ac86b 100644 --- a/src/app/Console/Commands/DumpWorldHeritageSiteJapaneseName.php +++ b/src/app/Console/Commands/DumpWorldHeritageSiteJapaneseName.php @@ -123,7 +123,7 @@ public function handle(): int $sid = (string) $id; $url = "{$baseUrl}/{$sid}"; - $this->line("[$i/" . (count($targets) - 1) . "] {$url}"); + $this->line("[{$i}/" . (count($targets) - 1) . "] {$url}"); $html = $this->fetchHtml($url, $timeout); if ($html === null) { @@ -250,7 +250,7 @@ private function loadExistingRows(string $out): array return []; } - return array_values(array_filter($json, fn ($v) => is_array($v))); + return array_values(array_filter($json, static fn ($v) => is_array($v))); } private function containsJapanese(string $s): bool diff --git a/src/app/Console/Commands/ImportWorldHeritageJapaneseNameFromJson.php b/src/app/Console/Commands/ImportWorldHeritageJapaneseNameFromJson.php index 53599b4..e1319a4 100644 --- a/src/app/Console/Commands/ImportWorldHeritageJapaneseNameFromJson.php +++ b/src/app/Console/Commands/ImportWorldHeritageJapaneseNameFromJson.php @@ -59,7 +59,7 @@ public function handle(): int $existingIds = WorldHeritage::query() ->whereIn('id', $ids) ->pluck('id') - ->map(fn ($id) => (int) $id) + ->map(static fn ($id) => (int) $id) ->all(); $existingIdSet = array_fill_keys($existingIds, true); @@ -120,7 +120,7 @@ public function handle(): int try { $chunkIdList = array_column($upsertRows, 'id'); $cases = implode(' ', array_map( - fn ($row) => "WHEN {$row['id']} THEN ?", + static fn ($row) => "WHEN {$row['id']} THEN ?", $upsertRows )); $bindings = array_column($upsertRows, 'name_jp'); @@ -217,7 +217,7 @@ private function handleMissingIds(array $missing): void $dir = dirname($fullOut); if (!is_dir($dir)) { - @mkdir($dir, 0777, true); + @mkdir($dir, 0o777, true); } $content = implode(PHP_EOL, $missing) . PHP_EOL; diff --git a/src/app/Console/Commands/ImportWorldHeritageSiteImagesFromJson.php b/src/app/Console/Commands/ImportWorldHeritageSiteImagesFromJson.php index 903b433..fa7ad42 100644 --- a/src/app/Console/Commands/ImportWorldHeritageSiteImagesFromJson.php +++ b/src/app/Console/Commands/ImportWorldHeritageSiteImagesFromJson.php @@ -148,9 +148,9 @@ private function collectJsonFiles(string $fullPath): array ); foreach ($rii as $file) { - if ($file->isFile() && str_ends_with($file->getFilename(), '.json')) { - $files[] = $file->getPathname(); - } + if (!($file->isFile() && str_ends_with($file->getFilename(), '.json'))) { continue; } + +$files[] = $file->getPathname(); } sort($files); diff --git a/src/app/Console/Commands/SplitWorldHeritageJson.php b/src/app/Console/Commands/SplitWorldHeritageJson.php index f71ba85..aafe9ff 100644 --- a/src/app/Console/Commands/SplitWorldHeritageJson.php +++ b/src/app/Console/Commands/SplitWorldHeritageJson.php @@ -76,7 +76,7 @@ public function handle(): int } $outDir = $this->resolvePathToDir($out); - if (!is_dir($outDir) && (!@mkdir($outDir, 0777, true) && !is_dir($outDir))) { + if (!is_dir($outDir) && (!@mkdir($outDir, 0o777, true) && !is_dir($outDir))) { $this->error("Failed to create output dir: {$outDir}"); return self::FAILURE; } @@ -756,7 +756,7 @@ private function mergeSiteRowPreferExisting(array $existing, array $incoming): a } } - $fill = function (string $key, mixed $value) use (&$existing): void { + $fill = static function (string $key, mixed $value) use (&$existing): void { if ((!array_key_exists($key, $existing) || $existing[$key] === null || $existing[$key] === '') && ($value !== null && $value !== '')) { $existing[$key] = $value; } diff --git a/src/app/Console/Commands/WorldHeritageBuild.php b/src/app/Console/Commands/WorldHeritageBuild.php index e0925f0..6368e6a 100644 --- a/src/app/Console/Commands/WorldHeritageBuild.php +++ b/src/app/Console/Commands/WorldHeritageBuild.php @@ -76,7 +76,7 @@ public function handle(): int '--out' => $dumpOut, // e.g. unesco/world-heritage-sites.json '--pretty' => $pretty ? true : null, '--dry-run' => (bool) $this->option('dump-dry-run') ? true : null, - ], fn ($v) => $v !== null)); + ], static fn ($v) => $v !== null)); } // 1) Split raw UNESCO JSON -> normalized JSON files @@ -88,7 +88,7 @@ public function handle(): int '--exceptions-out' => self::NORM_DIR . '/exceptions-missing-iso-codes.json', '--clean' => true, '--pretty' => $pretty ? true : null, - ], fn ($v) => $v !== null)); + ], static fn ($v) => $v !== null)); // 2) Import countries (FK parent) $this->callOrFail('world-heritage:import-countries-split', [ @@ -137,14 +137,14 @@ public function handle(): int '--missing-out' => trim((string) $this->option('jp-missing-out')) !== '' ? (string) $this->option('jp-missing-out') : null, '--missing-limit' => (int) $this->option('jp-missing-limit'), - ], fn ($v) => $v !== null)); + ], static fn ($v) => $v !== null)); } // 8) Algolia import (optional) if ((bool) $this->option('algolia')) { $this->callOrFail('algolia:import-world-heritages', array_filter([ '--truncate' => (bool) $this->option('algolia-truncate') ? true : null, - ], fn ($v) => $v !== null)); + ], static fn ($v) => $v !== null)); } $this->info('Done: DB rebuilt + UNESCO data imported (dump -> split -> import)'); diff --git a/src/app/Enums/Region.php b/src/app/Enums/Region.php deleted file mode 100644 index 02656a8..0000000 --- a/src/app/Enums/Region.php +++ /dev/null @@ -1,12 +0,0 @@ - $perPage, 'filters' => $hasAnyFilter ? implode(' AND ', $filters) : null, ], - fn ($v) => $v !== null, + static fn ($v) => $v !== null, ), ); $hits = $response['hits'] ?? []; - $ids = array_values(array_filter(array_map(function (array $h) { + $ids = array_values(array_filter(array_map(static function (array $h) { return isset($h['id']) ? (int) $h['id'] : (isset($h['objectID']) ? (int) $h['objectID'] : null); diff --git a/src/app/Packages/Domains/Infra/CountryResolver.php b/src/app/Packages/Domains/Infra/CountryResolver.php index d276b59..5ff4649 100644 --- a/src/app/Packages/Domains/Infra/CountryResolver.php +++ b/src/app/Packages/Domains/Infra/CountryResolver.php @@ -16,9 +16,7 @@ private function dictionary(): array // not to conflict cache even if the environment/connection is different $key = self::CACHE_KEY.':'.(string) config('database.default'); - // Cache::remember: - // - キャッシュがあればそれを返す - // - なければクロージャを実行して値を作り、保存して返す + // Cache::remember() is atomic, so it prevents cache stampede when there are multiple concurrent requests and the cache is expired. return Cache::store('file')->remember( $key, now()->addHours(self::TTL_HOURS), diff --git a/src/app/Packages/Domains/StudyRegion/ExceptionalStudyRegions.php b/src/app/Packages/Domains/StudyRegion/ExceptionalStudyRegions.php index 7ac83e4..c5bee34 100644 --- a/src/app/Packages/Domains/StudyRegion/ExceptionalStudyRegions.php +++ b/src/app/Packages/Domains/StudyRegion/ExceptionalStudyRegions.php @@ -6,11 +6,6 @@ class ExceptionalStudyRegions { - /** - * UNESCO site_id based overrides. - * - * @var array - */ public const SITE_ID_TO_REGION = [ 148 => StudyRegion::ASIA, ]; diff --git a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_countEachRegionTest.php b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_countEachRegionTest.php index 8967852..b1619fb 100644 --- a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_countEachRegionTest.php +++ b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_countEachRegionTest.php @@ -21,7 +21,7 @@ protected function setUp(): void parent::setUp(); $this->refresh(); - $this->app->bind(WorldHeritageSearchPort::class, function () { + $this->app->bind(WorldHeritageSearchPort::class, static function () { return new class implements WorldHeritageSearchPort { public function search($query, int $currentPage, int $perPage): HeritageSearchResult { return new HeritageSearchResult(ids: [], total: 0, currentPage: 1, perPage: $perPage, lastPage: 0); @@ -86,8 +86,8 @@ public function test_count_each_region(): void 'name' => 'Simien National Park', 'study_region' => StudyRegion::AFRICA->value, 'category' => 'Natural', - 'latitude' => 13.1833333333, - 'longitude' => 38.0666666667, + 'latitude' => 13.183_333_333_3, + 'longitude' => 38.066_666_666_7, ]), // id:25 Djoudj National Bird Sanctuary (Senegal, AFR) $this->baseRecord([ @@ -96,8 +96,8 @@ public function test_count_each_region(): void 'name' => 'Djoudj National Bird Sanctuary', 'study_region' => StudyRegion::AFRICA->value, 'category' => 'Natural', - 'latitude' => 16.414602, - 'longitude' => -16.237906, + 'latitude' => 16.414_602, + 'longitude' => -16.237_906, ]), // id:26 Island of Gorée (Senegal, AFR) $this->baseRecord([ @@ -105,8 +105,8 @@ public function test_count_each_region(): void 'official_name'=> 'Island of Gorée', 'name' => 'Island of Gorée', 'study_region' => StudyRegion::AFRICA->value, - 'latitude' => 14.66722, - 'longitude' => -17.40083, + 'latitude' => 14.667_22, + 'longitude' => -17.400_83, ]), // Europe × 3 @@ -116,8 +116,8 @@ public function test_count_each_region(): void 'official_name'=> 'Aachen Cathedral', 'name' => 'Aachen Cathedral', 'study_region' => StudyRegion::EUROPE->value, - 'latitude' => 50.7747468537, - 'longitude' => 6.083919968, + 'latitude' => 50.774_746_853_7, + 'longitude' => 6.083_919_968, ]), // id:29 Historic Centre of Kraków (Poland, EUR) $this->baseRecord([ @@ -125,8 +125,8 @@ public function test_count_each_region(): void 'official_name'=> 'Historic Centre of Kraków', 'name' => 'Historic Centre of Kraków', 'study_region' => StudyRegion::EUROPE->value, - 'latitude' => 50.0613888889, - 'longitude' => 19.9372222222, + 'latitude' => 50.061_388_888_9, + 'longitude' => 19.937_222_222_2, ]), // id:30 Historic Centre of Warsaw (Poland, EUR) $this->baseRecord([ @@ -145,7 +145,7 @@ public function test_count_each_region(): void 'official_name'=> "L'Anse aux Meadows National Historic Site", 'name' => "L'Anse aux Meadows", 'study_region' => StudyRegion::NORTH_AMERICA->value, - 'latitude' => 51.5847222222, + 'latitude' => 51.584_722_222_2, 'longitude' => -55.55, ]), // id:27 Mesa Verde National Park (USA, EUR/North America) @@ -154,8 +154,8 @@ public function test_count_each_region(): void 'official_name'=> 'Mesa Verde National Park', 'name' => 'Mesa Verde National Park', 'study_region' => StudyRegion::NORTH_AMERICA->value, - 'latitude' => 37.26166667, - 'longitude' => -108.4855556, + 'latitude' => 37.261_666_67, + 'longitude' => -108.485_555_6, ]), // South America × 2 @@ -166,8 +166,8 @@ public function test_count_each_region(): void 'name' => 'Galápagos Islands', 'study_region' => StudyRegion::SOUTH_AMERICA->value, 'category' => 'Natural', - 'latitude' => -0.68986, - 'longitude' => -90.501319, + 'latitude' => -0.689_86, + 'longitude' => -90.501_319, ]), // id:2 City of Quito (Ecuador, LAC) $this->baseRecord([ @@ -176,7 +176,7 @@ public function test_count_each_region(): void 'name' => 'City of Quito', 'study_region' => StudyRegion::SOUTH_AMERICA->value, 'latitude' => -0.22, - 'longitude' => -78.5120833333, + 'longitude' => -78.512_083_333_3, ]), // Oceania × 1 (JSONにないため仮データ) @@ -206,8 +206,8 @@ public function test_count_each_region(): void 'official_name'=> 'Ancient City of Damascus', 'name' => 'Ancient City of Damascus', 'study_region' => StudyRegion::UNKNOWN->value, - 'latitude' => 33.5108333333, - 'longitude' => 36.3097222222, + 'latitude' => 33.510_833_333_3, + 'longitude' => 36.309_722_222_2, ]), // id:8 Ichkeul National Park (Tunisia, ARB) $this->baseRecord([ @@ -216,8 +216,8 @@ public function test_count_each_region(): void 'name' => 'Ichkeul National Park', 'study_region' => StudyRegion::UNKNOWN->value, 'category' => 'Natural', - 'latitude' => 37.16361, - 'longitude' => 9.67472, + 'latitude' => 37.163_61, + 'longitude' => 9.674_72, ]), ]); diff --git a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_getAllHeritagesTest.php b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_getAllHeritagesTest.php index 6f96bec..fe2878e 100644 --- a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_getAllHeritagesTest.php +++ b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_getAllHeritagesTest.php @@ -32,7 +32,7 @@ protected function setUp(): void $seeder = new DatabaseSeeder(); $seeder->run(); - $this->app->bind(WorldHeritageSearchPort::class, function () { + $this->app->bind(WorldHeritageSearchPort::class, static function () { return new class implements WorldHeritageSearchPort { public function search($query, int $currentPage, int $perPage): HeritageSearchResult { return new HeritageSearchResult(ids: [], total: 0, currentPage: 1, perPage: $perPage, lastPage: 0); diff --git a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_getByIdTest.php b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_getByIdTest.php index 4e44032..e596def 100644 --- a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_getByIdTest.php +++ b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_getByIdTest.php @@ -22,7 +22,7 @@ protected function setUp(): void parent::setUp(); $this->refresh(); - $this->app->bind(WorldHeritageSearchPort::class, function () { + $this->app->bind(WorldHeritageSearchPort::class, static function () { return new class implements WorldHeritageSearchPort { public function search($query, int $currentPage, int $perPage): HeritageSearchResult { return new HeritageSearchResult(ids: [], total: 0, currentPage: 1, perPage: $perPage, lastPage: 0); @@ -66,8 +66,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_searchHeritagesTest.php b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_searchHeritagesTest.php index 2a20795..6f60253 100644 --- a/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_searchHeritagesTest.php +++ b/src/app/Packages/Domains/Test/QueryService/WorldHeritageQueryService_searchHeritagesTest.php @@ -119,7 +119,7 @@ public function test_searchHeritages_orchestrates_ports_and_returns_pagination_d ->keyBy('id'); $ordered = collect($hitIds) - ->map(fn ($id) => $modelsById->get($id)) + ->map(static fn ($id) => $modelsById->get($id)) ->filter(); $readQueryService = Mockery::mock(WorldHeritageReadQueryServiceInterface::class); @@ -140,7 +140,7 @@ public function test_searchHeritages_orchestrates_ports_and_returns_pagination_d $this->assertSame(1, $dto->getLastPage()); $heritageIds = collect($dto->getCollection()->getHeritages()) - ->map(fn ($h) => $h->getId()) + ->map(static fn ($h) => $h->getId()) ->all(); $this->assertCount(2, $heritageIds); diff --git a/src/app/Packages/Domains/Test/QueryService/WorldHeritageReadQueryService_findTest.php b/src/app/Packages/Domains/Test/QueryService/WorldHeritageReadQueryService_findTest.php index 54a80f0..8430de2 100644 --- a/src/app/Packages/Domains/Test/QueryService/WorldHeritageReadQueryService_findTest.php +++ b/src/app/Packages/Domains/Test/QueryService/WorldHeritageReadQueryService_findTest.php @@ -65,7 +65,7 @@ public function test_skips_missing_ids_without_failing(): void $this->assertNotNull($existingId, 'Seeder must insert at least 1 world heritage.'); - $requested = [$existingId, 999999999]; + $requested = [$existingId, 999_999_999]; $rows = $this->readQueryService->findByIdsPreserveOrder($requested); $this->assertSame([$existingId], $rows->pluck('id')->all()); diff --git a/src/app/Packages/Domains/Test/WorldHeritageEntityCollectionTest.php b/src/app/Packages/Domains/Test/WorldHeritageEntityCollectionTest.php index d815f2f..0b68b90 100644 --- a/src/app/Packages/Domains/Test/WorldHeritageEntityCollectionTest.php +++ b/src/app/Packages/Domains/Test/WorldHeritageEntityCollectionTest.php @@ -83,8 +83,8 @@ private function arrayMultiData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, @@ -147,7 +147,7 @@ private function arrayMultiData(): array public function test_collection_check_type(): void { $collection = new WorldHeritageEntityCollection( - array_map(function ($data) { + array_map(static function ($data) { return new WorldHeritageEntity( $data['id'], $data['official_name'], @@ -186,7 +186,7 @@ public function test_collection_check_empty_value(): void public function test_collection_check_count_value(): void { $collection = new WorldHeritageEntityCollection( - array_map(function ($data) { + array_map(static function ($data) { return new WorldHeritageEntity( $data['id'], $data['official_name'], @@ -219,7 +219,7 @@ public function test_collection_check_count_value(): void public function test_multi_collection_check_type(): void { $collection = new WorldHeritageEntityCollection( - array_map(function ($data) { + array_map(static function ($data) { return new WorldHeritageEntity( $data['id'], $data['official_name'], @@ -252,7 +252,7 @@ public function test_multi_collection_check_type(): void public function test_multi_collection_check_count_value(): void { $collection = new WorldHeritageEntityCollection( - array_map(function ($data) { + array_map(static function ($data) { return new WorldHeritageEntity( $data['id'], $data['official_name'], diff --git a/src/app/Packages/Domains/Test/WorldHeritageEntityTest.php b/src/app/Packages/Domains/Test/WorldHeritageEntityTest.php index 3e7d479..a376b8b 100644 --- a/src/app/Packages/Domains/Test/WorldHeritageEntityTest.php +++ b/src/app/Packages/Domains/Test/WorldHeritageEntityTest.php @@ -8,6 +8,9 @@ use Tests\TestCase; use App\Packages\Domains\WorldHeritageEntity; +/** + * @covers \App\Packages\Domains\WorldHeritageEntity + */ class WorldHeritageEntityTest extends TestCase { protected function setUp(): void @@ -76,8 +79,8 @@ private function arrayMultiData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Domains/WorldHeritageEntity.php b/src/app/Packages/Domains/WorldHeritageEntity.php index eaee24b..9fc3c44 100644 --- a/src/app/Packages/Domains/WorldHeritageEntity.php +++ b/src/app/Packages/Domains/WorldHeritageEntity.php @@ -165,16 +165,16 @@ public function getStatePartyCodesOrFallback(): array } $parts = preg_split('/[;,\s]+/', strtoupper($this->stateParty)); - $codes = array_filter($parts, fn($country) => preg_match('/^[A-Z]{3}$/', $country)); + $codes = array_filter($parts, static fn($country) => preg_match('/^[A-Z]{3}$/', $country)); return array_values(array_unique($codes)); } private function normalizeCodes(array $codes): array { $codes = array_map('trim', $codes); - $codes = array_filter($codes, fn($v) => $v !== ''); + $codes = array_filter($codes, static fn($v) => $v !== ''); $codes = array_map('strtoupper', $codes); - $codes = array_filter($codes, fn($v) => preg_match('/^[A-Z]{3}$/', $v)); + $codes = array_filter($codes, static fn($v) => preg_match('/^[A-Z]{3}$/', $v)); return array_values(array_unique($codes)); } diff --git a/src/app/Packages/Domains/WorldHeritageQueryService.php b/src/app/Packages/Domains/WorldHeritageQueryService.php index 4346454..936ac34 100644 --- a/src/app/Packages/Domains/WorldHeritageQueryService.php +++ b/src/app/Packages/Domains/WorldHeritageQueryService.php @@ -2,7 +2,7 @@ namespace App\Packages\Domains; -use Algolia\AlgoliaSearch\Api\SearchClient; + use App\Common\Pagination\PaginationDto; use App\Enums\StudyRegion; use App\Models\WorldHeritage; @@ -49,7 +49,7 @@ public function getAllHeritages( 'world_heritage_sites.unesco_site_url', ]) ->with([ - 'countries' => function ($q) { + 'countries' => static function ($q): void { $q->select([ 'countries.state_party_code', 'countries.name_en', @@ -57,7 +57,7 @@ public function getAllHeritages( 'countries.region', ]); }, - 'images' => function ($imagesQuery) { + 'images' => static function ($imagesQuery): void { $imagesQuery->where('is_primary', true)->limit(1); }, ]) @@ -91,13 +91,13 @@ public function getHeritageById(int $id): WorldHeritageDto { $heritage = $this->model ->with([ - 'countries' => function ($countriesQuery) { + 'countries' => static function ($countriesQuery): void { $countriesQuery ->withPivot(['is_primary', 'inscription_year']) ->orderBy('countries.state_party_code', 'asc') ->orderBy('site_state_parties.inscription_year', 'asc'); }, - 'images' => function ($imagesQuery) { + 'images' => static function ($imagesQuery): void { $imagesQuery->orderBy('sort_order', 'asc'); }, ]) @@ -154,12 +154,12 @@ public function getHeritageById(int $id): WorldHeritageDto $displayCountry = $heritage->countries->first()?->name_en; } elseif ($codes->count() > 1) { $primary = $heritage->countries->first( - fn ($c) => (bool) data_get($c, 'pivot.is_primary', false), + static fn ($c) => (bool) data_get($c, 'pivot.is_primary', false), ); $displayCountry = $primary?->name_en; } - $displayCountry = $displayCountry ?? $heritage->country; + $displayCountry ??= $heritage->country; $countryNameJp = $heritage->countries->first()?->name_jp; return WorldHeritageDetailFactory::build([ @@ -255,7 +255,7 @@ private function buildWorldHeritagePayload($heritage): array $statePartyCodeCollection = $countryRelations ->pluck('state_party_code') ->filter() - ->map(fn($countryCode) => strtoupper($countryCode)) + ->map(static fn($countryCode) => strtoupper($countryCode)) ->unique() ->values(); @@ -266,9 +266,9 @@ private function buildWorldHeritagePayload($heritage): array if ($statePartyCodeCollection->count() === 1) { $onlyStateParty = $statePartyCodeCollection->first(); $primaryCountry = $countryRelations->first( - fn($country) => strtoupper($country->state_party_code) === $onlyStateParty, + static fn($country) => strtoupper($country->state_party_code) === $onlyStateParty, ); - $statePartyName = $primaryCountry?->name_en ?? $heritage->country ?? null; + $statePartyName = $primaryCountry->name_en ?? $heritage->country ?? null; } elseif ($statePartyCodeCollection->count() > 1) { $statePartyName = null; $statePartyCodeValue = $statePartyCodeCollection->all(); @@ -292,7 +292,7 @@ private function buildWorldHeritagePayload($heritage): array 'official_name' => $heritage->official_name, 'name' => $heritage->name, 'heritage_name_jp' => $heritage->heritage_name_jp, - 'country' => $countryRelations->first()?->name_en ?? $heritage->country, + 'country' => $countryRelations->first()->name_en ?? $heritage->country, 'country_name_jp' => $heritage->countries->first()?->name_jp, 'region' => $heritage->study_region, 'category' => $heritage->category, diff --git a/src/app/Packages/Domains/WorldHeritageReadQueryService.php b/src/app/Packages/Domains/WorldHeritageReadQueryService.php index 309f524..c13daf5 100644 --- a/src/app/Packages/Domains/WorldHeritageReadQueryService.php +++ b/src/app/Packages/Domains/WorldHeritageReadQueryService.php @@ -36,11 +36,11 @@ public function findByIdsPreserveOrder(array $ids): Collection 'world_heritage_sites.unesco_site_url', ]) ->with([ - 'countries' => function ($q) { + 'countries' => static function ($q): void { $q->select('countries.state_party_code', 'countries.name_en', 'countries.name_jp', 'countries.region') ->orderBy('countries.state_party_code', 'asc'); }, - 'images' => function ($imageQuery) { + 'images' => static function ($imageQuery): void { $imageQuery->where('is_primary', true)->limit(1); }, ]) @@ -49,7 +49,7 @@ public function findByIdsPreserveOrder(array $ids): Collection ->keyBy('id'); return collect($ids) - ->map(fn ($id) => $modelsById->get($id)) + ->map(static fn ($id) => $modelsById->get($id)) ->filter(); } } \ No newline at end of file diff --git a/src/app/Packages/Features/Controller/WorldHeritageController.php b/src/app/Packages/Features/Controller/WorldHeritageController.php index ea1a996..a1e1298 100644 --- a/src/app/Packages/Features/Controller/WorldHeritageController.php +++ b/src/app/Packages/Features/Controller/WorldHeritageController.php @@ -90,7 +90,7 @@ public function getWorldHeritagesCountByRegion( return response()->json([ 'status' => 'success', - 'data' => array_map(fn ($item) => $item->toArray(), $dto), + 'data' => array_map(static fn ($item) => $item->toArray(), $dto), ], 200); } } \ No newline at end of file diff --git a/src/app/Packages/Features/QueryUseCases/Dto/WorldHeritageDto.php b/src/app/Packages/Features/QueryUseCases/Dto/WorldHeritageDto.php index ddcf7d2..7ee0b6b 100644 --- a/src/app/Packages/Features/QueryUseCases/Dto/WorldHeritageDto.php +++ b/src/app/Packages/Features/QueryUseCases/Dto/WorldHeritageDto.php @@ -152,7 +152,7 @@ private function getStatePartyCodesOrFallback(): array $parts = preg_split('/[;,\s]+/', strtoupper($this->stateParty)); $codes = array_filter( $parts, - fn ($countryCode) => preg_match('/^[A-Z]{3}$/', $countryCode) + static fn ($countryCode) => preg_match('/^[A-Z]{3}$/', $countryCode) ); return array_values(array_unique($codes)); diff --git a/src/app/Packages/Features/QueryUseCases/Dto/WorldHeritageDtoCollection.php b/src/app/Packages/Features/QueryUseCases/Dto/WorldHeritageDtoCollection.php index 9ec30cd..b5d511c 100644 --- a/src/app/Packages/Features/QueryUseCases/Dto/WorldHeritageDtoCollection.php +++ b/src/app/Packages/Features/QueryUseCases/Dto/WorldHeritageDtoCollection.php @@ -14,14 +14,14 @@ public function __construct(WorldHeritageDto ...$heritages) public function toArray(): array { return array_map( - fn (WorldHeritageDto $heritage) => $heritage->toArray(), + static fn (WorldHeritageDto $heritage) => $heritage->toArray(), $this->heritages ); } public function toSummaryArray(): array { - return array_map(function (WorldHeritageDto $heritage) { + return array_map(static function (WorldHeritageDto $heritage) { return [ 'id' => $heritage->getId(), 'official_name' => $heritage->getOfficialName(), diff --git a/src/app/Packages/Features/QueryUseCases/Factory/ViewModel/WorldHeritageDetailViewModelFactory.php b/src/app/Packages/Features/QueryUseCases/Factory/ViewModel/WorldHeritageDetailViewModelFactory.php index 5b09791..0821952 100644 --- a/src/app/Packages/Features/QueryUseCases/Factory/ViewModel/WorldHeritageDetailViewModelFactory.php +++ b/src/app/Packages/Features/QueryUseCases/Factory/ViewModel/WorldHeritageDetailViewModelFactory.php @@ -2,9 +2,9 @@ namespace App\Packages\Features\QueryUseCases\Factory\ViewModel; -use App\Models\WorldHeritage; + use App\Packages\Features\QueryUseCases\Dto\WorldHeritageDto; -use App\Packages\Features\QueryUseCases\ViewModel\WorldHeritageViewModel; + class WorldHeritageDetailViewModelFactory { diff --git a/src/app/Packages/Features/QueryUseCases/Factory/ViewModel/WorldHeritageViewModelCollectionFactory.php b/src/app/Packages/Features/QueryUseCases/Factory/ViewModel/WorldHeritageViewModelCollectionFactory.php index 257d208..55a433c 100644 --- a/src/app/Packages/Features/QueryUseCases/Factory/ViewModel/WorldHeritageViewModelCollectionFactory.php +++ b/src/app/Packages/Features/QueryUseCases/Factory/ViewModel/WorldHeritageViewModelCollectionFactory.php @@ -10,7 +10,7 @@ class WorldHeritageViewModelCollectionFactory public static function build(WorldHeritageDtoCollection $collection): WorldHeritageViewModelCollection { $items = array_map( - fn($dto) => WorldHeritageSummaryViewModelFactory::build($dto), + static fn($dto) => WorldHeritageSummaryViewModelFactory::build($dto), $collection->getHeritages() ); diff --git a/src/app/Packages/Features/QueryUseCases/ListQuery/CreateWorldHeritageListQueryCollection.php b/src/app/Packages/Features/QueryUseCases/ListQuery/CreateWorldHeritageListQueryCollection.php index 5df6299..0d692de 100644 --- a/src/app/Packages/Features/QueryUseCases/ListQuery/CreateWorldHeritageListQueryCollection.php +++ b/src/app/Packages/Features/QueryUseCases/ListQuery/CreateWorldHeritageListQueryCollection.php @@ -15,7 +15,7 @@ public function __construct( public function toArray(): array { return array_map( - fn(WorldHeritageListQuery $query) => $query->toArray(), + static fn(WorldHeritageListQuery $query) => $query->toArray(), $this->listQuery ); } diff --git a/src/app/Packages/Features/QueryUseCases/ListQuery/UpdateWorldHeritageListQueryCollection.php b/src/app/Packages/Features/QueryUseCases/ListQuery/UpdateWorldHeritageListQueryCollection.php index e64f3e9..043258c 100644 --- a/src/app/Packages/Features/QueryUseCases/ListQuery/UpdateWorldHeritageListQueryCollection.php +++ b/src/app/Packages/Features/QueryUseCases/ListQuery/UpdateWorldHeritageListQueryCollection.php @@ -2,7 +2,7 @@ namespace App\Packages\Features\QueryUseCases\ListQuery; -use App\Packages\Features\QueryUseCases\ListQuery\WorldHeritageListQuery; + class UpdateWorldHeritageListQueryCollection { @@ -17,7 +17,7 @@ public function __construct( public function toArray(): array { return array_map( - fn(WorldHeritageListQuery $query) => $query->toArray(), + static fn(WorldHeritageListQuery $query) => $query->toArray(), $this->listQuery ); } diff --git a/src/app/Packages/Features/QueryUseCases/ListQuery/WorldHeritageListQuery.php b/src/app/Packages/Features/QueryUseCases/ListQuery/WorldHeritageListQuery.php index 0f8fd56..19d1707 100644 --- a/src/app/Packages/Features/QueryUseCases/ListQuery/WorldHeritageListQuery.php +++ b/src/app/Packages/Features/QueryUseCases/ListQuery/WorldHeritageListQuery.php @@ -133,7 +133,7 @@ public function getStatePartyCodesOrFallback(): array } $parts = preg_split('/[;,\s]+/', strtoupper($this->state_party)); - $codes = array_filter($parts, fn($country) => preg_match('/^[A-Z]{2}$/', $country)); + $codes = array_filter($parts, static fn($country) => preg_match('/^[A-Z]{2}$/', $country)); return array_values(array_unique($codes)); } diff --git a/src/app/Packages/Features/QueryUseCases/QueryServiceInterface/WorldHeritageQueryServiceInterface.php b/src/app/Packages/Features/QueryUseCases/QueryServiceInterface/WorldHeritageQueryServiceInterface.php index 083e2fe..e7919e7 100644 --- a/src/app/Packages/Features/QueryUseCases/QueryServiceInterface/WorldHeritageQueryServiceInterface.php +++ b/src/app/Packages/Features/QueryUseCases/QueryServiceInterface/WorldHeritageQueryServiceInterface.php @@ -3,9 +3,9 @@ namespace App\Packages\Features\QueryUseCases\QueryServiceInterface; use App\Common\Pagination\PaginationDto; -use App\Enums\StudyRegion; + use App\Packages\Features\QueryUseCases\Dto\WorldHeritageDto; -use App\Packages\Features\QueryUseCases\Dto\WorldHeritageDtoCollection; + use App\Packages\Features\QueryUseCases\ListQuery\AlgoliaSearchListQuery; diff --git a/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoCollectionTest.php b/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoCollectionTest.php index 29bef81..e32b0d3 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoCollectionTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoCollectionTest.php @@ -53,8 +53,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, @@ -214,7 +214,7 @@ public function test_summary_array_matches_expected_with_thumbnail(): void $this->assertArrayHasKey('thumbnail', $item); $this->assertTrue(is_string($item['thumbnail']) || is_null($item['thumbnail'])); - return collect($item)->keyBy(fn($v, $k) => Str::snake($k))->toArray(); + return collect($item)->keyBy(static fn($v, $k) => Str::snake($k))->toArray(); })->toArray(); } } diff --git a/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoDetailFactoryTest.php b/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoDetailFactoryTest.php index bda335c..17b602c 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoDetailFactoryTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoDetailFactoryTest.php @@ -31,8 +31,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoSummaryFactoryTest.php b/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoSummaryFactoryTest.php index 5de2346..71fc93a 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoSummaryFactoryTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/Dto/WorldHeritageDtoSummaryFactoryTest.php @@ -212,8 +212,8 @@ private function arrayDataNoStateParty(): array 'area_hectares' => 0.0, 'buffer_zone_hectares' => null, 'is_endangered' => true, - 'latitude' => 31.7777778, - 'longitude' => 35.2316667, + 'latitude' => 31.777_777_8, + 'longitude' => 35.231_666_7, 'short_description' => "As a holy city for Judaism, Christianity and Islam, Jerusalem has always been of great symbolic importance. Among its 220 historic monuments, the Dome of the Rock stands out: built in the 7th century, it is decorated with beautiful geometric and floral motifs. It is recognized by all three religions as the site of Abraham's sacrifice. The Wailing Wall delimits the quarters of the different religious communities, while the Resurrection rotunda in the Church of the Holy Sepulchre houses Christ's tomb.", 'thumbnail_id' => null, 'unesco_site_url' => null, @@ -263,11 +263,11 @@ private static function arrayDataTransnational(): array 'state_party' => null, 'state_party_code' => $codes, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, + 'area_hectares' => 99_947.81, 'buffer_zone_hectares' => null, 'is_endangered' => false, 'latitude' => 48.9, - 'longitude' => 22.1833333, + 'longitude' => 22.183_333_3, 'short_description' => 'This transnational property includes 93 component parts in 18 countries. Since the end of the last Ice Age, European Beech spread from a few isolated refuge areas in the Alps, Carpathians, Dinarides, Mediterranean and Pyrenees over a short period of a few thousand years in a process that is still ongoing. The successful expansion across a whole continent is related to the tree’s adaptability and tolerance of different climatic, geographical and physical conditions.', 'thumbnail_id' => null, 'unesco_site_url' => null, diff --git a/src/app/Packages/Features/QueryUseCases/Tests/GetWorldHeritageByIdDtoTest.php b/src/app/Packages/Features/QueryUseCases/Tests/GetWorldHeritageByIdDtoTest.php index b2617c4..741fc09 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/GetWorldHeritageByIdDtoTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/GetWorldHeritageByIdDtoTest.php @@ -74,8 +74,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Features/QueryUseCases/Tests/UseCase/GetWorldHeritageByIdUseCaseTest.php b/src/app/Packages/Features/QueryUseCases/Tests/UseCase/GetWorldHeritageByIdUseCaseTest.php index f1d1c63..236a303 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/UseCase/GetWorldHeritageByIdUseCaseTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/UseCase/GetWorldHeritageByIdUseCaseTest.php @@ -5,14 +5,14 @@ use App\Models\Country; use App\Models\WorldHeritage; use App\Models\Image; -use App\Packages\Domains\WorldHeritageQueryService; + use App\Packages\Features\QueryUseCases\Dto\WorldHeritageDto; use App\Packages\Features\QueryUseCases\QueryServiceInterface\WorldHeritageQueryServiceInterface; use App\Packages\Features\QueryUseCases\UseCase\GetWorldHeritageByIdUseCase; use Database\Seeders\DatabaseSeeder; use Illuminate\Support\Facades\DB; use Tests\TestCase; -use App\Packages\Domains\Ports\SignedUrlPort; + use Mockery; class GetWorldHeritageByIdUseCaseTest extends TestCase @@ -91,8 +91,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Features/QueryUseCases/Tests/UseCase/GetWorldHeritagesUseCaseTest.php b/src/app/Packages/Features/QueryUseCases/Tests/UseCase/GetWorldHeritagesUseCaseTest.php index 9098ad6..f7ace87 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/UseCase/GetWorldHeritagesUseCaseTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/UseCase/GetWorldHeritagesUseCaseTest.php @@ -7,7 +7,7 @@ use App\Models\WorldHeritage; use App\Models\Image; use App\Packages\Features\QueryUseCases\UseCase\GetWorldHeritagesUseCase; -use App\Packages\Features\QueryUseCases\Dto\WorldHeritageDtoCollection; + use App\Packages\Features\QueryUseCases\QueryServiceInterface\WorldHeritageQueryServiceInterface; use Database\Seeders\DatabaseSeeder; use Illuminate\Support\Facades\DB; diff --git a/src/app/Packages/Features/QueryUseCases/Tests/UseCase/SearchWorldHeritagesWithAlgoliaUseCaseTest.php b/src/app/Packages/Features/QueryUseCases/Tests/UseCase/SearchWorldHeritagesWithAlgoliaUseCaseTest.php index 0f4db82..497426a 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/UseCase/SearchWorldHeritagesWithAlgoliaUseCaseTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/UseCase/SearchWorldHeritagesWithAlgoliaUseCaseTest.php @@ -27,7 +27,7 @@ protected function tearDown(): void private function makePaginationDto(array $heritageIds, int $currentPage, int $perPage, int $total): PaginationDto { - $heritages = array_map(function (int $id) { + $heritages = array_map(static function (int $id) { return new WorldHeritageDto( id: $id, officialName: 'test1234', @@ -84,7 +84,7 @@ public function test_search_heritages_resolves_country_name_and_calls_query_serv $queryService ->shouldReceive('searchHeritages') - ->with(Mockery::on(function (AlgoliaSearchListQuery $query) { + ->with(Mockery::on(static function (AlgoliaSearchListQuery $query) { return $query->keyword === 'test keyword' && $query->countryName === 'test country' && $query->countryIso3 === 'FRA' @@ -130,7 +130,7 @@ public function test_search_nullable_params_calls_query_service_with_nulls(): vo $queryService ->shouldReceive('searchHeritages') - ->with(Mockery::on(function (AlgoliaSearchListQuery $query) { + ->with(Mockery::on(static function (AlgoliaSearchListQuery $query) { return $query->keyword === null && $query->countryName === null && $query->countryIso3 === null diff --git a/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageDetailViewModelFactoryTest.php b/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageDetailViewModelFactoryTest.php index ce2b87d..2f19048 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageDetailViewModelFactoryTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageDetailViewModelFactoryTest.php @@ -32,8 +32,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageSummaryViewModelFactoryTest.php b/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageSummaryViewModelFactoryTest.php index 2f111ef..9d5d955 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageSummaryViewModelFactoryTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageSummaryViewModelFactoryTest.php @@ -35,8 +35,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageViewModelCollectionFactoryTest.php b/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageViewModelCollectionFactoryTest.php index ad97a17..65f9b6c 100644 --- a/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageViewModelCollectionFactoryTest.php +++ b/src/app/Packages/Features/QueryUseCases/Tests/ViewModel/WorldHeritageViewModelCollectionFactoryTest.php @@ -36,8 +36,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, @@ -100,7 +100,7 @@ private function arrayData(): array private function mockDtoCollection(): WorldHeritageDtoCollection { - $dtos = array_map(function (array $data) { + $dtos = array_map(static function (array $data) { $thumbnail = isset($data['thumbnail_url']) && $data['thumbnail_url'] ? new ImageDto( id: $data['id'] ?? 0, diff --git a/src/app/Packages/Features/QueryUseCases/UseCase/GetCountEachRegionUseCase.php b/src/app/Packages/Features/QueryUseCases/UseCase/GetCountEachRegionUseCase.php index 006d6cb..a91d4e2 100644 --- a/src/app/Packages/Features/QueryUseCases/UseCase/GetCountEachRegionUseCase.php +++ b/src/app/Packages/Features/QueryUseCases/UseCase/GetCountEachRegionUseCase.php @@ -19,7 +19,7 @@ public function handle(): array $result = $this->queryService->getEachRegionsHeritagesCount(); return array_map( - fn(string $region, int $count) => new RegionCountDto( + static fn(string $region, int $count) => new RegionCountDto( region: $region, count: $count, ), diff --git a/src/app/Packages/Features/QueryUseCases/UseCase/GetWorldHeritagesUseCase.php b/src/app/Packages/Features/QueryUseCases/UseCase/GetWorldHeritagesUseCase.php index af4c580..939297b 100644 --- a/src/app/Packages/Features/QueryUseCases/UseCase/GetWorldHeritagesUseCase.php +++ b/src/app/Packages/Features/QueryUseCases/UseCase/GetWorldHeritagesUseCase.php @@ -3,7 +3,7 @@ namespace App\Packages\Features\QueryUseCases\UseCase; use App\Common\Pagination\PaginationDto; -use App\Packages\Features\QueryUseCases\Dto\WorldHeritageDtoCollection; + use App\Packages\Features\QueryUseCases\QueryServiceInterface\WorldHeritageQueryServiceInterface; class GetWorldHeritagesUseCase diff --git a/src/app/Packages/Features/QueryUseCases/ViewModel/WorldHeritageViewModelCollection.php b/src/app/Packages/Features/QueryUseCases/ViewModel/WorldHeritageViewModelCollection.php index 7e53395..4974a75 100644 --- a/src/app/Packages/Features/QueryUseCases/ViewModel/WorldHeritageViewModelCollection.php +++ b/src/app/Packages/Features/QueryUseCases/ViewModel/WorldHeritageViewModelCollection.php @@ -9,16 +9,16 @@ class WorldHeritageViewModelCollection public function __construct(array $items = []) { foreach ($items as $item) { - if ($item instanceof WorldHeritageViewModel) { - $this->items[] = $item; - } + if (!($item instanceof WorldHeritageViewModel)) { continue; } + +$this->items[] = $item; } } public function toArray(): array { return array_map( - fn(WorldHeritageViewModel $item) => $item->toArray(), + static fn(WorldHeritageViewModel $item) => $item->toArray(), $this->items ); } diff --git a/src/app/Packages/Features/Tests/GetCountEachRegionTest.php b/src/app/Packages/Features/Tests/GetCountEachRegionTest.php index c8e17db..295cdc4 100644 --- a/src/app/Packages/Features/Tests/GetCountEachRegionTest.php +++ b/src/app/Packages/Features/Tests/GetCountEachRegionTest.php @@ -18,7 +18,7 @@ protected function setUp(): void parent::setUp(); $this->refresh(); - $this->app->bind(WorldHeritageSearchPort::class, function () { + $this->app->bind(WorldHeritageSearchPort::class, static function () { return new class implements WorldHeritageSearchPort { public function search($query, int $currentPage, int $perPage): HeritageSearchResult { return new HeritageSearchResult(ids: [], total: 0, currentPage: 1, perPage: $perPage, lastPage: 0); diff --git a/src/app/Packages/Features/Tests/GetWorldHeritageByIdTest.php b/src/app/Packages/Features/Tests/GetWorldHeritageByIdTest.php index 5092c82..b23f66f 100644 --- a/src/app/Packages/Features/Tests/GetWorldHeritageByIdTest.php +++ b/src/app/Packages/Features/Tests/GetWorldHeritageByIdTest.php @@ -10,8 +10,8 @@ use Database\Seeders\DatabaseSeeder; use Illuminate\Support\Facades\DB; use Tests\TestCase; -use App\Packages\Domains\Ports\SignedUrlPort; -use Mockery; + + class GetWorldHeritageByIdTest extends TestCase { @@ -22,7 +22,7 @@ protected function setUp(): void parent::setUp(); $this->refresh(); - $this->app->bind(WorldHeritageSearchPort::class, function () { + $this->app->bind(WorldHeritageSearchPort::class, static function () { return new class implements WorldHeritageSearchPort { public function search($query, int $currentPage, int $perPage): HeritageSearchResult { return new HeritageSearchResult(ids: [], total: 0, currentPage: 1, perPage: $perPage, lastPage: 0); @@ -68,8 +68,8 @@ private function arrayData(): array 'criteria' => ['ix'], 'state_party' => null, 'year_inscribed' => 2007, - 'area_hectares' => 99947.81, - 'buffer_zone_hectares' => 296275.8, + 'area_hectares' => 99_947.81, + 'buffer_zone_hectares' => 296_275.8, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Features/Tests/GetWorldHeritagesTest.php b/src/app/Packages/Features/Tests/GetWorldHeritagesTest.php index edf9bb2..cca4cd6 100644 --- a/src/app/Packages/Features/Tests/GetWorldHeritagesTest.php +++ b/src/app/Packages/Features/Tests/GetWorldHeritagesTest.php @@ -18,7 +18,7 @@ protected function setUp(): void parent::setUp(); $this->refresh(); - $this->app->bind(WorldHeritageSearchPort::class, function () { + $this->app->bind(WorldHeritageSearchPort::class, static function () { return new class implements WorldHeritageSearchPort { public function search($query, int $currentPage, int $perPage): HeritageSearchResult { return new HeritageSearchResult(ids: [], total: 0, currentPage: 1, perPage: $perPage, lastPage: 0); @@ -84,7 +84,7 @@ private static function arrayData(): array 'category' => 'Natural', 'criteria' => ['vii','ix'], 'year_inscribed' => 1993, - 'area_hectares' => 10747.0, + 'area_hectares' => 10_747.0, 'buffer_zone_hectares' => null, 'is_endangered' => false, 'latitude' => null, @@ -104,7 +104,7 @@ private static function arrayData(): array 'category' => 'Natural', 'criteria' => ['ix','x'], 'year_inscribed' => 1993, - 'area_hectares' => 16971.0, + 'area_hectares' => 16_971.0, 'buffer_zone_hectares' => 6832.0, 'is_endangered' => false, 'latitude' => null, @@ -124,8 +124,8 @@ private static function arrayData(): array 'category' => 'Cultural', 'criteria' => ['ii','iii','vi'], 'year_inscribed' => 2014, - 'area_hectares' => 42668.16, - 'buffer_zone_hectares' => 189963.1, + 'area_hectares' => 42_668.16, + 'buffer_zone_hectares' => 189_963.1, 'is_endangered' => false, 'latitude' => 0.0, 'longitude' => 0.0, diff --git a/src/app/Packages/Features/Tests/SearchWorldHeritagesTest.php b/src/app/Packages/Features/Tests/SearchWorldHeritagesTest.php index ff6de7e..7a524c4 100644 --- a/src/app/Packages/Features/Tests/SearchWorldHeritagesTest.php +++ b/src/app/Packages/Features/Tests/SearchWorldHeritagesTest.php @@ -7,7 +7,7 @@ use App\Models\WorldHeritage; use App\Packages\Domains\Ports\Dto\HeritageSearchResult; use App\Packages\Domains\Ports\WorldHeritageSearchPort; -use App\Packages\Features\QueryUseCases\ListQuery\AlgoliaSearchListQuery; + use Database\Seeders\DatabaseSeeder; use Illuminate\Support\Facades\DB; use Mockery; diff --git a/src/app/Support/StudyRegionResolver.php b/src/app/Support/StudyRegionResolver.php index ef5f58d..a99188b 100644 --- a/src/app/Support/StudyRegionResolver.php +++ b/src/app/Support/StudyRegionResolver.php @@ -28,10 +28,6 @@ public static function resolveFromRecord( return StudyRegion::UNKNOWN; } - /** - * @param array $statePartyCodes - * @return array - */ public static function resolveManyFromRecord( ?int $siteId, ?string $country, @@ -82,10 +78,6 @@ public static function resolveFromIso3(?string $iso3): StudyRegion return Iso3ToStudyRegionMap::all()[$normalized] ?? StudyRegion::UNKNOWN; } - /** - * @param array $iso3List - * @return array - */ public static function resolveManyFromIso3List(array $iso3List): array { $regions = []; diff --git a/src/bootstrap/app.php b/src/bootstrap/app.php index 4830cd7..a81c120 100644 --- a/src/bootstrap/app.php +++ b/src/bootstrap/app.php @@ -12,9 +12,9 @@ commands: __DIR__.'/../routes/console.php', health: '/up', ) - ->withMiddleware(function (Middleware $middleware) { + ->withMiddleware(function (Middleware $middleware): void { $middleware->append(HandleCors::class); }) - ->withExceptions(function (Exceptions $exceptions) { + ->withExceptions(function (Exceptions $exceptions): void { // })->create(); diff --git a/src/routes/api.php b/src/routes/api.php index 9ebdb19..68ce170 100644 --- a/src/routes/api.php +++ b/src/routes/api.php @@ -3,7 +3,7 @@ use Illuminate\Support\Facades\Route; use App\Packages\Features\Controller\WorldHeritageController; -Route::prefix('v1')->group(function () { +Route::prefix('v1')->group(function (): void { Route::get('/heritages', [WorldHeritageController::class, 'getWorldHeritages']); Route::get('/heritages/search', [WorldHeritageController::class, 'searchWorldHeritages']); Route::get('heritages/region-count', [WorldHeritageController::class, 'getWorldHeritagesCountByRegion']); diff --git a/src/routes/console.php b/src/routes/console.php index 3c9adf1..fa9463c 100644 --- a/src/routes/console.php +++ b/src/routes/console.php @@ -3,6 +3,6 @@ use Illuminate\Foundation\Inspiring; use Illuminate\Support\Facades\Artisan; -Artisan::command('inspire', function () { +Artisan::command('inspire', function (): void { $this->comment(Inspiring::quote()); })->purpose('Display an inspiring quote'); From 916f62970e8f0826d31130198264a89a94a3cc3f Mon Sep 17 00:00:00 2001 From: Application-drop-up Date: Mon, 30 Mar 2026 09:13:32 +0900 Subject: [PATCH 2/2] feat: create rector config file --- src/rector.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/rector.php diff --git a/src/rector.php b/src/rector.php new file mode 100644 index 0000000..4efb94f --- /dev/null +++ b/src/rector.php @@ -0,0 +1,21 @@ +withPaths([ + __DIR__ . '/app', + __DIR__ . '/bootstrap', + __DIR__ . '/config', + __DIR__ . '/public', + __DIR__ . '/resources', + __DIR__ . '/routes', + __DIR__ . '/tests', + ]) + // uncomment to reach your current PHP version + // ->withPhpSets() + ->withTypeCoverageLevel(0) + ->withDeadCodeLevel(0) + ->withCodeQualityLevel(0);