diff --git a/src/GeoIP2/Model/Country.php b/src/GeoIP2/Model/Country.php index 41548ac..478aa79 100644 --- a/src/GeoIP2/Model/Country.php +++ b/src/GeoIP2/Model/Country.php @@ -30,9 +30,9 @@ class Country return isset($this->raw[$field]) ? $this->raw[$field] : Array(); } - public function __get ($var) + public function __get ($attr) { - if ($var != "instance" && isset($this->$var)) return $this->$var; + if ($attr != "instance" && isset($this->$attr)) return $this->$attr; throw new \RuntimeException("Unknown attribute: $attr"); } diff --git a/tests/GeoIP2/Test/Model/CountryTest.php b/tests/GeoIP2/Test/Model/CountryTest.php new file mode 100644 index 0000000..e535659 --- /dev/null +++ b/tests/GeoIP2/Test/Model/CountryTest.php @@ -0,0 +1,130 @@ + array( + 'continent_code' => 'NA', + 'geoname_id' => 42, + 'names' => array( 'en' => 'North America' ), + ), + 'country' => array( + 'geoname_id' => 1, + 'iso_code' => 'US', + 'names' => array( 'en' => 'United States of America' ), + ), + 'registered_country' => array( + 'geoname_id' => 2, + 'iso_code' => 'CA', + 'names' => array( 'en' => 'Canada' ), + ), + 'traits' => array( + 'ip_address' => '1.2.3.4', + ), + ); + + private $model; + + public function setUp () { + $this->model = new Country($this->raw, ['en']); + + } + + public function testObjects () { + $this->assertInstanceOf('GeoIP2\Model\Country', $this->model, + 'minimal GeoIP2::Model::Country object'); + $this->assertInstanceOf('GeoIP2\Record\Continent', $this->model->continent); + $this->assertInstanceOf('GeoIP2\Record\Country', $this->model->country); + $this->assertInstanceOf('GeoIP2\Record\Country', $this->model->registeredCountry); + $this->assertInstanceOf('GeoIP2\Record\RepresentedCountry', + $this->model->representedCountry); + $this->assertInstanceOf('GeoIP2\Record\Traits', $this->model->traits); + } + + public function testValues() { + + $this->assertEquals(42, $this->model->continent->geonameId, + 'continent geoname_id is 42'); + + $this->assertEquals('NA', $this->model->continent->continentCode, + 'continent continent_code is NA'); + + $this->assertEquals(array( 'en' => 'North America' ), + $this->model->continent->names, + 'continent names'); + + $this->assertEquals( + 'North America', + $this->model->continent->name, + 'continent name is North America'); + + $this->assertEquals( + 1, + $this->model->country->geonameId, + 'country geoname_id is 1' + ); + + $this->assertEquals( + 'US', + $this->model->country->isoCode, + 'country iso_code is US' + ); + + $this->assertEquals( + array( 'en' => 'United States of America' ), + $this->model->country->names, + 'country names' + ); + + $this->assertEquals( + $this->model->country->name, + 'United States of America', + 'country name is United States of America' + ); + + $this->assertEquals( + null, + $this->model->country->confidence, + 'country confidence is undef' + ); + + $this->assertEquals(2, $this->model->registeredCountry->geonameId, + 'registered_country geoname_id is 2' + ); + + $this->assertEquals('CA', + $this->model->registeredCountry->isoCode, + 'registered_country iso_code is CA' + ); + + $this->assertEquals( + array( 'en' => 'Canada' ), + $this->model->registeredCountry->names, + 'registered_country names' + ); + + $this->assertEquals( + 'Canada', + $this->model->registeredCountry->name, + 'registered_country name is Canada' + ); + + foreach (array( 'isAnonymousProxy', 'isSatelliteProvider' ) as $meth) { + + $this->assertEquals(0, $this->model->traits->$meth, + "traits $meth returns 0 by default" + ); + } + + $this->assertEquals( + $this->raw, + $this->model->raw, + 'raw method returns raw input' + ); + } +}