File tree Expand file tree Collapse file tree
src/app/Packages/Features/QueryUseCases Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace App \Packages \Features \QueryUseCases \Tests \UseCase ;
4+
5+ use App \Packages \Features \QueryUseCases \Dto \RegionCountDto ;
6+ use App \Packages \Features \QueryUseCases \QueryServiceInterface \WorldHeritageQueryServiceInterface ;
7+ use App \Packages \Features \QueryUseCases \UseCase \GetCountEachRegionUseCase ;
8+ use Tests \TestCase ;
9+ use Mockery ;
10+
11+ class GetCountEachRegionUseCaseTest extends TestCase
12+ {
13+ protected function setUp (): void
14+ {
15+ parent ::setUp ();
16+ }
17+
18+ public function tearDown (): void
19+ {
20+ parent ::tearDown ();
21+ }
22+
23+ private function mockQueryService (): WorldHeritageQueryServiceInterface
24+ {
25+ $ mock = Mockery::mock (WorldHeritageQueryServiceInterface::class);
26+
27+ $ mock ->shouldReceive ('getEachRegionsHeritagesCount ' )
28+ ->andReturn (self ::arrayData ());
29+
30+ return $ mock ;
31+ }
32+
33+ private static function arrayData (): array
34+ {
35+ return [
36+ 'Asia ' => 10 ,
37+ 'Europe ' => 5 ,
38+ 'Africa ' => 3 ,
39+ 'South America ' => 2 ,
40+ 'North America ' => 1 ,
41+ 'Oceania ' => 4 ,
42+ ];
43+ }
44+
45+ public function test_use_case_check_type (): void
46+ {
47+ $ useCase = new GetCountEachRegionUseCase (
48+ $ this ->mockQueryService ()
49+ );
50+
51+ $ result = $ useCase ->handle ();
52+
53+ $ this ->assertInstanceOf (RegionCountDto::class, $ result [0 ]);
54+ }
55+
56+ public function test_use_case_check_data (): void
57+ {
58+ $ useCase = new GetCountEachRegionUseCase (
59+ $ this ->mockQueryService ()
60+ );
61+
62+ $ result = $ useCase ->handle ();
63+
64+ $ this ->assertSame ('Asia ' , $ result [0 ]->region );
65+ $ this ->assertSame (10 , $ result [0 ]->count );
66+ }
67+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace App \Packages \Features \QueryUseCases \UseCase ;
4+
5+ use App \Packages \Features \QueryUseCases \Dto \RegionCountDto ;
6+ use App \Packages \Features \QueryUseCases \QueryServiceInterface \WorldHeritageQueryServiceInterface ;
7+
8+ class GetCountEachRegionUseCase
9+ {
10+ public function __construct (
11+ private readonly WorldHeritageQueryServiceInterface $ queryService
12+ ) {}
13+
14+ /**
15+ * @return RegionCountDto[]
16+ */
17+ public function handle (): array
18+ {
19+ $ result = $ this ->queryService ->getEachRegionsHeritagesCount ();
20+
21+ return array_map (
22+ fn (string $ region , int $ count ) => new RegionCountDto (
23+ region: $ region ,
24+ count: $ count ,
25+ ),
26+ array_keys ($ result ),
27+ array_values ($ result ),
28+ );
29+ }
30+ }
You can’t perform that action at this time.
0 commit comments