77use Illuminate \Support \Facades \DB ;
88use Tests \TestCase ;
99use App \Models \WorldHeritage ;
10+ use Database \Seeders \CountrySeeder ;
1011
1112class WorldHeritageRepository_insertTest extends TestCase
1213{
@@ -15,7 +16,8 @@ protected function setUp(): void
1516 {
1617 parent ::setUp ();
1718 $ this ->refresh ();
18-
19+ $ seeder = new CountrySeeder ();
20+ $ seeder ->run ();
1921 $ this ->repository = app (WorldHeritageRepository::class);
2022 }
2123
@@ -34,7 +36,7 @@ private function refresh(): void
3436 }
3537 }
3638
37- private static function arrayData (): array
39+ private static function arraySingleData (): array
3840 {
3941 return [
4042 'unesco_id ' => '668 ' ,
@@ -43,9 +45,9 @@ private static function arrayData(): array
4345 'name_jp ' => '古都奈良の文化財 ' ,
4446 'country ' => 'Japan ' ,
4547 'region ' => 'Asia ' ,
46- 'state_party ' => 'JP ' ,
4748 'category ' => 'cultural ' ,
4849 'criteria ' => ['ii ' , 'iii ' , 'v ' ],
50+ 'state_party ' => null ,
4951 'year_inscribed ' => 1998 ,
5052 'area_hectares ' => 442.0 ,
5153 'buffer_zone_hectares ' => 320.0 ,
@@ -55,81 +57,224 @@ private static function arrayData(): array
5557 'short_description ' => 'Temples and shrines of the first permanent capital of Japan. ' ,
5658 'image_url ' => '' ,
5759 'unesco_site_url ' => 'https://whc.unesco.org/en/list/668/ ' ,
60+ 'state_parties ' => ['JP ' ],
61+ 'state_parties_meta ' => [
62+ 'JP ' => [
63+ 'is_primary ' => true ,
64+ 'inscription_year ' => 1998 ,
65+ ],
66+ ],
5867 ];
5968 }
6069
61- public function test_insert_check_type (): void
70+ private static function arrayMultiData (): array
71+ {
72+ return [
73+ 'unesco_id ' => 1133 ,
74+ 'official_name ' => "Ancient and Primeval Beech Forests of the Carpathians and Other Regions of Europe " ,
75+ 'name ' => "Ancient and Primeval Beech Forests " ,
76+ 'name_jp ' => null ,
77+ 'country ' => 'Slovakia ' ,
78+ 'region ' => 'Europe ' ,
79+ 'category ' => 'natural ' ,
80+ 'criteria ' => ['ix ' ],
81+ 'state_party ' => null ,
82+ 'year_inscribed ' => 2007 ,
83+ 'area_hectares ' => 99947.81 ,
84+ 'buffer_zone_hectares ' => 296275.8 ,
85+ 'is_endangered ' => false ,
86+ 'latitude ' => 0.0 ,
87+ 'longitude ' => 0.0 ,
88+ 'short_description ' => 'Transnational serial property of European beech forests illustrating post-glacial expansion and ecological processes across Europe. ' ,
89+ 'image_url ' => '' ,
90+ 'unesco_site_url ' => 'https://whc.unesco.org/en/list/1133/ ' ,
91+ 'state_parties ' => [
92+ 'AL ' ,'AT ' ,'BE ' ,'BA ' ,'BG ' ,'HR ' ,'CZ ' ,'FR ' ,'DE ' ,'IT ' ,'MK ' ,'PL ' ,'RO ' ,'SK ' ,'SI ' ,'ES ' ,'CH ' ,'UA '
93+ ],
94+ 'state_parties_meta ' => [
95+ 'AL ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
96+ 'AT ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
97+ 'BE ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
98+ 'BA ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
99+ 'BG ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
100+ 'HR ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
101+ 'CZ ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
102+ 'FR ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
103+ 'DE ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
104+ 'IT ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
105+ 'MK ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
106+ 'PL ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
107+ 'RO ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
108+ 'SK ' => ['is_primary ' => true , 'inscription_year ' => 2007 ],
109+ 'SI ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
110+ 'ES ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
111+ 'CH ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
112+ 'UA ' => ['is_primary ' => false , 'inscription_year ' => 2007 ],
113+ ],
114+ ];
115+ }
116+
117+ public function test_insert_check_single_type (): void
118+ {
119+ $ entity = new WorldHeritageEntity (
120+ self ::arraySingleData ()['id ' ] ?? null ,
121+ self ::arraySingleData ()['unesco_id ' ],
122+ self ::arraySingleData ()['official_name ' ],
123+ self ::arraySingleData ()['name ' ],
124+ self ::arraySingleData ()['country ' ],
125+ self ::arraySingleData ()['region ' ],
126+ self ::arraySingleData ()['category ' ],
127+ self ::arraySingleData ()['year_inscribed ' ],
128+ self ::arraySingleData ()['latitude ' ],
129+ self ::arraySingleData ()['longitude ' ],
130+ self ::arraySingleData ()['is_endangered ' ],
131+ self ::arraySingleData ()['name_jp ' ],
132+ self ::arraySingleData ()['state_party ' ],
133+ self ::arraySingleData ()['criteria ' ],
134+ self ::arraySingleData ()['area_hectares ' ],
135+ self ::arraySingleData ()['buffer_zone_hectares ' ],
136+ self ::arraySingleData ()['short_description ' ],
137+ self ::arraySingleData ()['image_url ' ],
138+ self ::arraySingleData ()['unesco_site_url ' ],
139+ self ::arraySingleData ()['state_parties ' ],
140+ self ::arraySingleData ()['state_parties_meta ' ]
141+ );
142+
143+ $ result = $ this ->repository ->insertHeritage ($ entity );
144+
145+ $ this ->assertInstanceOf (WorldHeritageEntity::class, $ result );
146+ }
147+
148+ public function test_insert_check_single_value (): void
62149 {
63150 $ entity = new WorldHeritageEntity (
64- null ,
65- self ::arrayData ()['unesco_id ' ],
66- self ::arrayData ()['official_name ' ],
67- self ::arrayData ()['name ' ],
68- self ::arrayData ()['country ' ],
69- self ::arrayData ()['region ' ],
70- self ::arrayData ()['category ' ],
71- self ::arrayData ()['year_inscribed ' ],
72- self ::arrayData ()['is_endangered ' ],
73- self ::arrayData ()['latitude ' ],
74- self ::arrayData ()['longitude ' ],
75- self ::arrayData ()['name_jp ' ],
76- self ::arrayData ()['state_party ' ],
77- self ::arrayData ()['criteria ' ],
78- self ::arrayData ()['area_hectares ' ],
79- self ::arrayData ()['buffer_zone_hectares ' ],
80- self ::arrayData ()['short_description ' ],
81- self ::arrayData ()['image_url ' ],
82- self ::arrayData ()['unesco_site_url ' ]
151+ self ::arraySingleData ()['id ' ] ?? null ,
152+ self ::arraySingleData ()['unesco_id ' ],
153+ self ::arraySingleData ()['official_name ' ],
154+ self ::arraySingleData ()['name ' ],
155+ self ::arraySingleData ()['country ' ],
156+ self ::arraySingleData ()['region ' ],
157+ self ::arraySingleData ()['category ' ],
158+ self ::arraySingleData ()['year_inscribed ' ],
159+ self ::arraySingleData ()['latitude ' ],
160+ self ::arraySingleData ()['longitude ' ],
161+ self ::arraySingleData ()['is_endangered ' ],
162+ self ::arraySingleData ()['name_jp ' ],
163+ self ::arraySingleData ()['state_party ' ],
164+ self ::arraySingleData ()['criteria ' ],
165+ self ::arraySingleData ()['area_hectares ' ],
166+ self ::arraySingleData ()['buffer_zone_hectares ' ],
167+ self ::arraySingleData ()['short_description ' ],
168+ self ::arraySingleData ()['image_url ' ],
169+ self ::arraySingleData ()['unesco_site_url ' ],
170+ self ::arraySingleData ()['state_parties ' ],
171+ self ::arraySingleData ()['state_parties_meta ' ]
172+ );
173+
174+ $ result = $ this ->repository ->insertHeritage ($ entity );
175+
176+ $ this ->assertEquals (self ::arraySingleData ()['unesco_id ' ], $ result ->getUnescoId ());
177+ $ this ->assertEquals (self ::arraySingleData ()['official_name ' ], $ result ->getOfficialName ());
178+ $ this ->assertEquals (self ::arraySingleData ()['name ' ], $ result ->getName ());
179+ $ this ->assertEquals (self ::arraySingleData ()['country ' ], $ result ->getCountry ());
180+ $ this ->assertEquals (self ::arraySingleData ()['region ' ], $ result ->getRegion ());
181+ $ this ->assertEquals (self ::arraySingleData ()['category ' ], $ result ->getCategory ());
182+ $ this ->assertEquals (self ::arraySingleData ()['year_inscribed ' ], $ result ->getYearInscribed ());
183+ $ this ->assertEquals (self ::arraySingleData ()['latitude ' ], $ result ->getLatitude ());
184+ $ this ->assertEquals (self ::arraySingleData ()['longitude ' ], $ result ->getLongitude ());
185+ $ this ->assertEquals (self ::arraySingleData ()['is_endangered ' ], $ result ->isEndangered ());
186+ $ this ->assertEquals (self ::arraySingleData ()['name_jp ' ], $ result ->getNameJp ());
187+ $ this ->assertEquals (self ::arraySingleData ()['criteria ' ], $ result ->getCriteria ());
188+ $ this ->assertEquals (self ::arraySingleData ()['area_hectares ' ], $ result ->getAreaHectares ());
189+ $ this ->assertEquals (self ::arraySingleData ()['buffer_zone_hectares ' ], $ result ->getBufferZoneHectares ());
190+ $ this ->assertEquals (self ::arraySingleData ()['short_description ' ], $ result ->getShortDescription ());
191+ $ this ->assertEquals (self ::arraySingleData ()['image_url ' ], $ result ->getImageUrl ());
192+ $ this ->assertEquals (self ::arraySingleData ()['unesco_site_url ' ], $ result ->getUnescoSiteUrl ());
193+ $ this ->assertEquals (self ::arraySingleData ()['state_parties ' ], $ result ->getStatePartyCodes ());
194+ $ this ->assertEquals (self ::arraySingleData ()['state_parties_meta ' ], $ result ->getStatePartyMeta ());
195+ }
196+
197+ public function test_insert_check_multi_type (): void
198+ {
199+ $ entity = new WorldHeritageEntity (
200+ self ::arrayMultiData ()['id ' ] ?? null ,
201+ self ::arrayMultiData ()['unesco_id ' ],
202+ self ::arrayMultiData ()['official_name ' ],
203+ self ::arrayMultiData ()['name ' ],
204+ self ::arrayMultiData ()['country ' ],
205+ self ::arrayMultiData ()['region ' ],
206+ self ::arrayMultiData ()['category ' ],
207+ self ::arrayMultiData ()['year_inscribed ' ],
208+ self ::arrayMultiData ()['is_endangered ' ],
209+ self ::arrayMultiData ()['latitude ' ],
210+ self ::arrayMultiData ()['longitude ' ],
211+ self ::arrayMultiData ()['name_jp ' ],
212+ self ::arrayMultiData ()['state_party ' ],
213+ self ::arrayMultiData ()['criteria ' ],
214+ self ::arrayMultiData ()['area_hectares ' ],
215+ self ::arrayMultiData ()['buffer_zone_hectares ' ],
216+ self ::arrayMultiData ()['short_description ' ],
217+ self ::arrayMultiData ()['image_url ' ],
218+ self ::arrayMultiData ()['unesco_site_url ' ],
219+ self ::arrayMultiData ()['state_parties ' ],
220+ self ::arrayMultiData ()['state_parties_meta ' ]
83221 );
84222
85223 $ result = $ this ->repository ->insertHeritage ($ entity );
86224
87225 $ this ->assertInstanceOf (WorldHeritageEntity::class, $ result );
88226 }
89227
90- public function test_insert_check_value (): void
228+ public function test_insert_check_multi_value (): void
91229 {
92230 $ entity = new WorldHeritageEntity (
93- null ,
94- self ::arrayData ()['unesco_id ' ],
95- self ::arrayData ()['official_name ' ],
96- self ::arrayData ()['name ' ],
97- self ::arrayData ()['country ' ],
98- self ::arrayData ()['region ' ],
99- self ::arrayData ()['category ' ],
100- self ::arrayData ()['year_inscribed ' ],
101- self ::arrayData ()['latitude ' ],
102- self ::arrayData ()['longitude ' ],
103- self ::arrayData ()['is_endangered ' ],
104- self ::arrayData ()['name_jp ' ],
105- self ::arrayData ()['state_party ' ],
106- self ::arrayData ()['criteria ' ],
107- self ::arrayData ()['area_hectares ' ],
108- self ::arrayData ()['buffer_zone_hectares ' ],
109- self ::arrayData ()['short_description ' ],
110- self ::arrayData ()['image_url ' ],
111- self ::arrayData ()['unesco_site_url ' ]
231+ self ::arrayMultiData ()['id ' ] ?? null ,
232+ self ::arrayMultiData ()['unesco_id ' ],
233+ self ::arrayMultiData ()['official_name ' ],
234+ self ::arrayMultiData ()['name ' ],
235+ self ::arrayMultiData ()['country ' ],
236+ self ::arrayMultiData ()['region ' ],
237+ self ::arrayMultiData ()['category ' ],
238+ self ::arrayMultiData ()['year_inscribed ' ],
239+ self ::arrayMultiData ()['is_endangered ' ],
240+ self ::arrayMultiData ()['latitude ' ],
241+ self ::arrayMultiData ()['longitude ' ],
242+ self ::arrayMultiData ()['name_jp ' ],
243+ self ::arrayMultiData ()['state_party ' ],
244+ self ::arrayMultiData ()['criteria ' ],
245+ self ::arrayMultiData ()['area_hectares ' ],
246+ self ::arrayMultiData ()['buffer_zone_hectares ' ],
247+ self ::arrayMultiData ()['short_description ' ],
248+ self ::arrayMultiData ()['image_url ' ],
249+ self ::arrayMultiData ()['unesco_site_url ' ],
250+ self ::arrayMultiData ()['state_parties ' ],
251+ self ::arrayMultiData ()['state_parties_meta ' ]
112252 );
113253
114254 $ result = $ this ->repository ->insertHeritage ($ entity );
115255
116- $ this ->assertEquals (self ::arrayData ()['unesco_id ' ], $ result ->getUnescoId ());
117- $ this ->assertEquals (self ::arrayData ()['official_name ' ], $ result ->getOfficialName ());
118- $ this ->assertEquals (self ::arrayData ()['name ' ], $ result ->getName ());
119- $ this ->assertEquals (self ::arrayData ()['name_jp ' ], $ result ->getNameJp ());
120- $ this ->assertEquals (self ::arrayData ()['country ' ], $ result ->getCountry ());
121- $ this ->assertEquals (self ::arrayData ()['region ' ], $ result ->getRegion ());
122- $ this ->assertEquals (self ::arrayData ()['state_party ' ], $ result ->getStateParty ());
123- $ this ->assertEquals (self ::arrayData ()['category ' ], $ result ->getCategory ());
124- $ this ->assertEquals (self ::arrayData ()['criteria ' ], $ result ->getCriteria ());
125- $ this ->assertEquals (self ::arrayData ()['year_inscribed ' ], $ result ->getYearInscribed ());
126- $ this ->assertEquals (self ::arrayData ()['area_hectares ' ], $ result ->getAreaHectares ());
127- $ this ->assertEquals (self ::arrayData ()['buffer_zone_hectares ' ], $ result ->getBufferZoneHectares ());
128- $ this ->assertEquals (self ::arrayData ()['is_endangered ' ], $ result ->isEndangered ());
129- $ this ->assertEquals (self ::arrayData ()['latitude ' ], $ result ->getLatitude ());
130- $ this ->assertEquals (self ::arrayData ()['longitude ' ], $ result ->getLongitude ());
131- $ this ->assertEquals (self ::arrayData ()['short_description ' ], $ result ->getShortDescription ());
132- $ this ->assertEquals (self ::arrayData ()['image_url ' ], $ result ->getImageUrl ());
133- $ this ->assertEquals (self ::arrayData ()['unesco_site_url ' ], $ result ->getUnescoSiteUrl ());
256+ $ this ->assertEquals (self ::arrayMultiData ()['unesco_id ' ], $ result ->getUnescoId ());
257+ $ this ->assertEquals (self ::arrayMultiData ()['official_name ' ], $ result ->getOfficialName ());
258+ $ this ->assertEquals (self ::arrayMultiData ()['name ' ], $ result ->getName ());
259+ $ this ->assertEquals (self ::arrayMultiData ()['country ' ], $ result ->getCountry ());
260+ $ this ->assertEquals (self ::arrayMultiData ()['region ' ], $ result ->getRegion ());
261+ $ this ->assertEquals (self ::arrayMultiData ()['category ' ], $ result ->getCategory ());
262+ $ this ->assertEquals (self ::arrayMultiData ()['year_inscribed ' ], $ result ->getYearInscribed ());
263+ $ this ->assertEquals (self ::arrayMultiData ()['is_endangered ' ], $ result ->isEndangered ());
264+ $ this ->assertEquals (self ::arrayMultiData ()['latitude ' ], $ result ->getLatitude ());
265+ $ this ->assertEquals (self ::arrayMultiData ()['longitude ' ], $ result ->getLongitude ());
266+ $ this ->assertEquals (self ::arrayMultiData ()['name_jp ' ], $ result ->getNameJp ());
267+ $ this ->assertEquals (self ::arrayMultiData ()['criteria ' ], $ result ->getCriteria ());
268+ $ this ->assertEquals (self ::arrayMultiData ()['area_hectares ' ], $ result ->getAreaHectares ());
269+ $ this ->assertEquals (self ::arrayMultiData ()['buffer_zone_hectares ' ], $ result ->getBufferZoneHectares ());
270+ $ this ->assertEquals (self ::arrayMultiData ()['short_description ' ], $ result ->getShortDescription ());
271+ $ this ->assertEquals (self ::arrayMultiData ()['image_url ' ], $ result ->getImageUrl ());
272+ $ this ->assertEquals (self ::arrayMultiData ()['unesco_site_url ' ], $ result ->getUnescoSiteUrl ());
273+ $ this ->assertEqualsCanonicalizing (self ::arrayMultiData ()['state_parties ' ], $ result ->getStatePartyCodes ());
274+ $ this ->assertEquals (self ::arrayMultiData ()['state_parties_meta ' ], $ result ->getStatePartyMeta ());
275+ $ this ->assertEqualsCanonicalizing (
276+ self ::arrayMultiData ()['state_parties_meta ' ]['SK ' ],
277+ $ entity ->getStatePartyMeta ()['SK ' ]
278+ );
134279 }
135280}
0 commit comments