Overview

Namespaces

  • GeoIp2
    • Database
    • Exception
    • Model
    • Record
    • Test
      • Model
      • WebService
    • WebService
  • MaxMind
    • MinFraud
      • Model
  • None
  • PHP

Classes

  • CountryTest
  • InsightsTest
  • NameTest
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: 
  3: namespace GeoIp2\Test\Model;
  4: 
  5: use GeoIp2\Model\Country;
  6: 
  7: class CountryTest extends \PHPUnit_Framework_TestCase
  8: {
  9: 
 10:     private $raw = array(
 11:         'continent' => array(
 12:             'code' => 'NA',
 13:             'geoname_id' => 42,
 14:             'names' => array('en' => 'North America'),
 15:         ),
 16:         'country' => array(
 17:             'geoname_id' => 1,
 18:             'iso_code' => 'US',
 19:             'names' => array('en' => 'United States of America'),
 20:         ),
 21:         'registered_country' => array(
 22:             'geoname_id' => 2,
 23:             'iso_code' => 'CA',
 24:             'names' => array('en' => 'Canada'),
 25:         ),
 26:         'traits' => array(
 27:             'ip_address' => '1.2.3.4',
 28:         ),
 29:     );
 30: 
 31:     private $model;
 32: 
 33:     public function setUp()
 34:     {
 35:         $this->model = new Country($this->raw, array('en'));
 36:     }
 37: 
 38:     public function testObjects()
 39:     {
 40:         $this->assertInstanceOf(
 41:             'GeoIp2\Model\Country',
 42:             $this->model,
 43:             'minimal GeoIp2::Model::Country object'
 44:         );
 45:         $this->assertInstanceOf(
 46:             'GeoIp2\Record\Continent',
 47:             $this->model->continent
 48:         );
 49:         $this->assertInstanceOf(
 50:             'GeoIp2\Record\Country',
 51:             $this->model->country
 52:         );
 53:         $this->assertInstanceOf(
 54:             'GeoIp2\Record\Country',
 55:             $this->model->registeredCountry
 56:         );
 57:         $this->assertInstanceOf(
 58:             'GeoIp2\Record\RepresentedCountry',
 59:             $this->model->representedCountry
 60:         );
 61:         $this->assertInstanceOf(
 62:             'GeoIp2\Record\Traits',
 63:             $this->model->traits
 64:         );
 65:     }
 66: 
 67:     public function testValues()
 68:     {
 69: 
 70:         $this->assertEquals(
 71:             42,
 72:             $this->model->continent->geonameId,
 73:             'continent geoname_id is 42'
 74:         );
 75: 
 76:         $this->assertEquals(
 77:             'NA',
 78:             $this->model->continent->code,
 79:             'continent code is NA'
 80:         );
 81: 
 82:         $this->assertEquals(
 83:             array('en' => 'North America'),
 84:             $this->model->continent->names,
 85:             'continent names'
 86:         );
 87: 
 88:         $this->assertEquals(
 89:             'North America',
 90:             $this->model->continent->name,
 91:             'continent name is North America'
 92:         );
 93: 
 94:         $this->assertEquals(
 95:             1,
 96:             $this->model->country->geonameId,
 97:             'country geoname_id is 1'
 98:         );
 99: 
100:         $this->assertEquals(
101:             'US',
102:             $this->model->country->isoCode,
103:             'country iso_code is US'
104:         );
105: 
106:         $this->assertEquals(
107:             array('en' => 'United States of America'),
108:             $this->model->country->names,
109:             'country name'
110:         );
111: 
112:         $this->assertEquals(
113:             $this->model->country->name,
114:             'United States of America',
115:             'country name is United States of America'
116:         );
117: 
118:         $this->assertEquals(
119:             null,
120:             $this->model->country->confidence,
121:             'country confidence is undef'
122:         );
123: 
124:         $this->assertEquals(
125:             2,
126:             $this->model->registeredCountry->geonameId,
127:             'registered_country geoname_id is 2'
128:         );
129: 
130:         $this->assertEquals(
131:             'CA',
132:             $this->model->registeredCountry->isoCode,
133:             'registered_country iso_code is CA'
134:         );
135: 
136:         $this->assertEquals(
137:             array('en' => 'Canada'),
138:             $this->model->registeredCountry->names,
139:             'registered_country names'
140:         );
141: 
142:         $this->assertEquals(
143:             'Canada',
144:             $this->model->registeredCountry->name,
145:             'registered_country name is Canada'
146:         );
147: 
148:         foreach (array('isAnonymousProxy', 'isSatelliteProvider') as $meth) {
149:             $this->assertEquals(
150:                 0,
151:                 $this->model->traits->$meth,
152:                 "traits $meth returns 0 by default"
153:             );
154:         }
155: 
156:         $this->assertEquals(
157:             $this->raw,
158:             $this->model->raw,
159:             'raw method returns raw input'
160:         );
161:     }
162: 
163:     public function testJsonSerialize()
164:     {
165:         $this->assertEquals(
166:             $this->raw,
167:             $this->model->jsonSerialize(),
168:             'jsonSerialize returns initial array'
169:         );
170: 
171:         $this->assertEquals(
172:             $this->raw['country'],
173:             $this->model->country->jsonSerialize(),
174:             'jsonSerialize returns initial array for the record'
175:         );
176: 
177:         if (version_compare(PHP_VERSION, '5.4.0', '<')) {
178:             $this->markTestSkipped('Requires PHP 5.4+.');
179:         }
180: 
181:         $this->assertEquals(
182:             json_encode($this->raw),
183:             json_encode($this->model),
184:             'json_encode can be called on the model object directly'
185:         );
186: 
187:         $this->assertEquals(
188:             json_encode($this->raw['country']),
189:             json_encode($this->model->country),
190:             'json_encode can be called on the record object directly'
191:         );
192:     }
193: 
194:     public function testIsSet()
195:     {
196:         $this->assertTrue(isset($this->model->traits), 'traits is set');
197:         $this->assertFalse(isset($this->model->unknown), 'unknown is not set');
198: 
199:         $this->assertTrue(
200:             isset($this->model->traits->ipAddress),
201:             'ip_address is set'
202:         );
203:         $this->assertFalse(
204:             isset($this->model->traits->unknown),
205:             'unknown trait is not set'
206:         );
207:     }
208: 
209:     /**
210:      * @expectedException RuntimeException
211:      * @expectedExceptionMessage Unknown attribute
212:      */
213:     public function testUnknownRecord()
214:     {
215:         $this->model->unknownRecord;
216:     }
217: 
218:     /**
219:      * @expectedException RuntimeException
220:      * @expectedExceptionMessage Unknown attribute
221:      */
222:     public function testUnknownTrait()
223:     {
224:         $this->model->traits->unknown;
225:     }
226: }
227: 
minFraud Score and Insights PHP API v0.1.0 API documentation generated by ApiGen