Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/app/Models/WorldHeritage.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ class WorldHeritage extends Model
{
protected $table = 'world_heritage_sites';
protected $connection = 'mysql';
public $incrementing = false;
protected $primaryKey = 'id';

protected $fillable = [
'unesco_id',
'id',
'official_name',
'name',
'name_jp',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Packages\Domains\Test\Repository;

use Database\Seeders\CountrySeeder;
use Database\Seeders\DatabaseSeeder;
use Tests\TestCase;
use App\Packages\Domains\WorldHeritageEntity;
use App\Packages\Domains\WorldHeritageEntityCollection;
Expand Down Expand Up @@ -45,8 +46,7 @@ private function arrayData(): array
{
return [
[
'id' => 1,
'unesco_id' => '668',
'id' => 668,
'official_name' => 'Historic Monuments of Ancient Nara',
'name' => 'Historic Monuments of Ancient Nara',
'name_jp' => '古都奈良の文化財',
Expand All @@ -70,33 +70,7 @@ private function arrayData(): array
'unesco_site_url' => 'https://whc.unesco.org/en/list/668/',
],
[
'id' => 2,
'unesco_id' => '1234',
'official_name' => 'Example Heritage Site',
'name' => 'Example Heritage Site',
'name_jp' => '例の文化遺産',
'country' => 'Japan',
'region' => 'Asia',
'state_party' => 'JP',
'state_parties' => ['JP'],
'state_parties_meta' => [
'JP' => ['is_primary' => true, 'inscription_year' => 2000],
],
'category' => 'natural',
'criteria' => ['vii', 'viii'],
'year_inscribed' => 2000,
'area_hectares' => 500.0,
'buffer_zone_hectares' => 400.0,
'is_endangered' => true,
'latitude' => 35.6895,
'longitude' => 139.6917,
'short_description' => 'An example of a natural heritage site.',
'image_url' => '',
'unesco_site_url' => 'https://whc.unesco.org/en/list/1234/',
],
[
'id' => 3,
'unesco_id' => '669',
'id' => 669,
'official_name' => 'Shrines and Temples of Nikko',
'name' => 'Shrines and Temples of Nikko',
'name_jp' => '日光の社寺',
Expand Down Expand Up @@ -127,8 +101,7 @@ public function test_check_return_type(): void
$collection = new WorldHeritageEntityCollection(
array_map(function ($d) {
return new WorldHeritageEntity(
null,
$d['unesco_id'],
$d['id'],
$d['official_name'],
$d['name'],
$d['country'],
Expand Down Expand Up @@ -163,8 +136,7 @@ public function test_check_return_value(): void
$collection = new WorldHeritageEntityCollection(
array_map(function ($data) {
return new WorldHeritageEntity(
null,
$data['unesco_id'],
$data['id'],
$data['official_name'],
$data['name'],
$data['country'],
Expand Down Expand Up @@ -192,10 +164,7 @@ public function test_check_return_value(): void

foreach ($result->getAllHeritages() as $entity) {
foreach (self::arrayData() as $value) {
if ((string)$entity->getUnescoId() !== (string)$value['unesco_id']) {
continue;
}
$this->assertEquals($value['unesco_id'], $entity->getUnescoId());
$this->assertEquals($value['id'], $entity->getId());
$this->assertEquals($value['official_name'], $entity->getOfficialName());
$this->assertEquals($value['name'], $entity->getName());
$this->assertEquals($value['country'], $entity->getCountry());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

namespace App\Packages\Domains\Test\Repository;

use App\Models\Country;
use App\Packages\Domains\WorldHeritageEntity;
use App\Packages\Domains\WorldHeritageRepository;
use Database\Seeders\CountrySeeder;
use Database\Seeders\DatabaseSeeder;
use Illuminate\Support\Facades\DB;
use Tests\TestCase;
use App\Models\WorldHeritage;
use Database\Seeders\CountrySeeder;

class WorldHeritageRepository_insertTest extends TestCase
{
Expand All @@ -32,14 +34,16 @@ private function refresh(): void
if (env('APP_ENV') === 'testing') {
Copy link

Copilot AI Aug 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using env() directly in code is not recommended. Use config('app.env') instead or inject the environment through dependency injection.

Suggested change
if (env('APP_ENV') === 'testing') {
if (config('app.env') === 'testing') {

Copilot uses AI. Check for mistakes.
DB::connection('mysql')->statement('SET FOREIGN_KEY_CHECKS=0;');
WorldHeritage::truncate();
Country::truncate();
DB::table('site_state_parties')->truncate();
DB::connection('mysql')->statement('SET FOREIGN_KEY_CHECKS=1;');
}
}

private static function arraySingleData(): array
{
return [
'unesco_id' => '668',
'id' => 668,
'official_name' => 'Historic Monuments of Ancient Nara',
'name' => 'Historic Monuments of Ancient Nara',
'name_jp' => '古都奈良の文化財',
Expand All @@ -57,9 +61,9 @@ private static function arraySingleData(): array
'short_description' => 'Temples and shrines of the first permanent capital of Japan.',
'image_url' => '',
'unesco_site_url' => 'https://whc.unesco.org/en/list/668/',
'state_parties' => ['JP'],
'state_parties' => ['JPN'],
'state_parties_meta' => [
'JP' => [
'JPN' => [
'is_primary' => true,
'inscription_year' => 1998,
],
Expand All @@ -70,7 +74,7 @@ private static function arraySingleData(): array
private static function arrayMultiData(): array
{
return [
'unesco_id' => 1133,
'id' => 1133,
'official_name' => "Ancient and Primeval Beech Forests of the Carpathians and Other Regions of Europe",
'name' => "Ancient and Primeval Beech Forests",
'name_jp' => null,
Expand All @@ -89,36 +93,35 @@ private static function arrayMultiData(): array
'image_url' => '',
'unesco_site_url' => 'https://whc.unesco.org/en/list/1133/',
'state_parties' => [
'AL','AT','BE','BA','BG','HR','CZ','FR','DE','IT','MK','PL','RO','SK','SI','ES','CH','UA'
'ALB','AUT','BEL','BIH','BGR','HRV','CZE','FRA','DEU','ITA','MKD','POL','ROU','SVK','SVN','ESP','CHE','UKR'
],
'state_parties_meta' => [
'AL' => ['is_primary' => false, 'inscription_year' => 2007],
'AT' => ['is_primary' => false, 'inscription_year' => 2007],
'BE' => ['is_primary' => false, 'inscription_year' => 2007],
'BA' => ['is_primary' => false, 'inscription_year' => 2007],
'BG' => ['is_primary' => false, 'inscription_year' => 2007],
'HR' => ['is_primary' => false, 'inscription_year' => 2007],
'CZ' => ['is_primary' => false, 'inscription_year' => 2007],
'FR' => ['is_primary' => false, 'inscription_year' => 2007],
'DE' => ['is_primary' => false, 'inscription_year' => 2007],
'IT' => ['is_primary' => false, 'inscription_year' => 2007],
'MK' => ['is_primary' => false, 'inscription_year' => 2007],
'PL' => ['is_primary' => false, 'inscription_year' => 2007],
'RO' => ['is_primary' => false, 'inscription_year' => 2007],
'SK' => ['is_primary' => true, 'inscription_year' => 2007],
'SI' => ['is_primary' => false, 'inscription_year' => 2007],
'ES' => ['is_primary' => false, 'inscription_year' => 2007],
'CH' => ['is_primary' => false, 'inscription_year' => 2007],
'UA' => ['is_primary' => false, 'inscription_year' => 2007],
'ALB' => ['is_primary' => false, 'inscription_year' => 2007],
'AUT' => ['is_primary' => false, 'inscription_year' => 2007],
'BEL' => ['is_primary' => false, 'inscription_year' => 2007],
'BIH' => ['is_primary' => false, 'inscription_year' => 2007],
'BGR' => ['is_primary' => false, 'inscription_year' => 2007],
'HRV' => ['is_primary' => false, 'inscription_year' => 2007],
'CZE' => ['is_primary' => false, 'inscription_year' => 2007],
'FRA' => ['is_primary' => false, 'inscription_year' => 2007],
'DEU' => ['is_primary' => false, 'inscription_year' => 2007],
'ITA' => ['is_primary' => false, 'inscription_year' => 2007],
'MKD' => ['is_primary' => false, 'inscription_year' => 2007],
'POL' => ['is_primary' => false, 'inscription_year' => 2007],
'ROU' => ['is_primary' => false, 'inscription_year' => 2007],
'SVK' => ['is_primary' => true, 'inscription_year' => 2007],
'SVN' => ['is_primary' => false, 'inscription_year' => 2007],
'ESP' => ['is_primary' => false, 'inscription_year' => 2007],
'CHE' => ['is_primary' => false, 'inscription_year' => 2007],
'UKR' => ['is_primary' => false, 'inscription_year' => 2007],
],
];
}

public function test_insert_check_single_type(): void
{
$entity = new WorldHeritageEntity(
self::arraySingleData()['id'] ?? null,
self::arraySingleData()['unesco_id'],
self::arraySingleData()['id'],
self::arraySingleData()['official_name'],
self::arraySingleData()['name'],
self::arraySingleData()['country'],
Expand Down Expand Up @@ -148,8 +151,7 @@ public function test_insert_check_single_type(): void
public function test_insert_check_single_value(): void
{
$entity = new WorldHeritageEntity(
self::arraySingleData()['id'] ?? null,
self::arraySingleData()['unesco_id'],
self::arraySingleData()['id'],
self::arraySingleData()['official_name'],
self::arraySingleData()['name'],
self::arraySingleData()['country'],
Expand All @@ -173,7 +175,7 @@ public function test_insert_check_single_value(): void

$result = $this->repository->insertHeritage($entity);

$this->assertEquals(self::arraySingleData()['unesco_id'], $result->getUnescoId());
$this->assertEquals(self::arraySingleData()['id'], $result->getId());
$this->assertEquals(self::arraySingleData()['official_name'], $result->getOfficialName());
$this->assertEquals(self::arraySingleData()['name'], $result->getName());
$this->assertEquals(self::arraySingleData()['country'], $result->getCountry());
Expand All @@ -191,14 +193,12 @@ public function test_insert_check_single_value(): void
$this->assertEquals(self::arraySingleData()['image_url'], $result->getImageUrl());
$this->assertEquals(self::arraySingleData()['unesco_site_url'], $result->getUnescoSiteUrl());
$this->assertEquals(self::arraySingleData()['state_parties'], $result->getStatePartyCodes());
$this->assertEquals(self::arraySingleData()['state_parties_meta'], $result->getStatePartyMeta());
}

public function test_insert_check_multi_type(): void
{
$entity = new WorldHeritageEntity(
self::arrayMultiData()['id'] ?? null,
self::arrayMultiData()['unesco_id'],
self::arrayMultiData()['id'],
self::arrayMultiData()['official_name'],
self::arrayMultiData()['name'],
self::arrayMultiData()['country'],
Expand Down Expand Up @@ -228,8 +228,7 @@ public function test_insert_check_multi_type(): void
public function test_insert_check_multi_value(): void
{
$entity = new WorldHeritageEntity(
self::arrayMultiData()['id'] ?? null,
self::arrayMultiData()['unesco_id'],
self::arrayMultiData()['id'],
self::arrayMultiData()['official_name'],
self::arrayMultiData()['name'],
self::arrayMultiData()['country'],
Expand All @@ -253,7 +252,7 @@ public function test_insert_check_multi_value(): void

$result = $this->repository->insertHeritage($entity);

$this->assertEquals(self::arrayMultiData()['unesco_id'], $result->getUnescoId());
$this->assertEquals(self::arrayMultiData()['id'], $result->getId());
$this->assertEquals(self::arrayMultiData()['official_name'], $result->getOfficialName());
$this->assertEquals(self::arrayMultiData()['name'], $result->getName());
$this->assertEquals(self::arrayMultiData()['country'], $result->getCountry());
Expand All @@ -273,8 +272,8 @@ public function test_insert_check_multi_value(): void
$this->assertEqualsCanonicalizing(self::arrayMultiData()['state_parties'], $result->getStatePartyCodes());
$this->assertEquals(self::arrayMultiData()['state_parties_meta'], $result->getStatePartyMeta());
$this->assertEqualsCanonicalizing(
self::arrayMultiData()['state_parties_meta']['SK'],
$entity->getStatePartyMeta()['SK']
self::arrayMultiData()['state_parties_meta']['SVK'],
$entity->getStatePartyMeta()['SVK']
);
}
}
Loading