seed(CountriesDatabaseSeeder::class); $this->assertDatabaseHas('countries', [ 'alpha2' => 'GB', 'alpha3' => 'GBR', 'numeric' => '826', 'iso_status' => 'official', ]); $this->assertDatabaseHas('country_subdivisions', [ 'country_alpha2' => 'GB', 'code' => 'GB-ENG', 'name' => 'England', ]); } public function test_it_resolves_country_by_any_iso_3166_1_code(): void { $this->seed(CountriesDatabaseSeeder::class); $this->getJson('/api/countries/resolve/GBR') ->assertOk() ->assertJsonPath('data.alpha2', 'GB'); $this->getJson('/api/countries/resolve/826') ->assertOk() ->assertJsonPath('data.alpha3', 'GBR'); } public function test_it_lists_iso_3166_2_subdivisions_for_country(): void { $this->seed(CountriesDatabaseSeeder::class); $this->getJson('/api/countries/GB/subdivisions') ->assertOk() ->assertJsonFragment(['code' => 'GB-ENG']) ->assertJsonFragment(['code' => 'GB-SCT']); } public function test_validation_rules_support_country_and_subdivision_codes(): void { $this->seed(CountriesDatabaseSeeder::class); $countryRule = new ValidIso3166CountryCode(activeOnly: true, format: 'any'); $subdivisionRule = new ValidIso3166SubdivisionCode(activeOnly: true); $countryFailed = false; $subdivisionFailed = false; $countryRule->validate('country', 'GBR', function () use (&$countryFailed): void { $countryFailed = true; }); $subdivisionRule->validate('subdivision', 'GB-ENG', function () use (&$subdivisionFailed): void { $subdivisionFailed = true; }); $this->assertFalse($countryFailed); $this->assertFalse($subdivisionFailed); } }