Вход Регистрация
Файл: vkolhoze.com/vendor/geoip2/geoip2/tests/GeoIp2/Test/Model/CountryTest.php
Строк: 218
<?php

namespace GeoIp2TestModel;

use 
GeoIp2ModelCountry;

class 
CountryTest extends PHPUnit_Framework_TestCase
{

    private 
$raw = array(
        
'continent' => array(
            
'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, array('en'));
    }

    public function 
testObjects()
    {
        
$this->assertInstanceOf(
            
'GeoIp2ModelCountry',
            
$this->model,
            
'minimal GeoIp2::Model::Country object'
        
);
        
$this->assertInstanceOf(
            
'GeoIp2RecordContinent',
            
$this->model->continent
        
);
        
$this->assertInstanceOf(
            
'GeoIp2RecordCountry',
            
$this->model->country
        
);
        
$this->assertInstanceOf(
            
'GeoIp2RecordCountry',
            
$this->model->registeredCountry
        
);
        
$this->assertInstanceOf(
            
'GeoIp2RecordRepresentedCountry',
            
$this->model->representedCountry
        
);
        
$this->assertInstanceOf(
            
'GeoIp2RecordTraits',
            
$this->model->traits
        
);
    }

    public function 
testValues()
    {

        
$this->assertEquals(
            
42,
            
$this->model->continent->geonameId,
            
'continent geoname_id is 42'
        
);

        
$this->assertEquals(
            
'NA',
            
$this->model->continent->code,
            
'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 name'
        
);

        
$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'
        
);
    }

    public function 
testJsonSerialize()
    {
        
$this->assertEquals(
            
$this->raw,
            
$this->model->jsonSerialize(),
            
'jsonSerialize returns initial array'
        
);

        
$this->assertEquals(
            
$this->raw['country'],
            
$this->model->country->jsonSerialize(),
            
'jsonSerialize returns initial array for the record'
        
);

        if (
version_compare(PHP_VERSION'5.4.0''<')) {
            
$this->markTestSkipped('Requires PHP 5.4+.');
        }

        
$this->assertEquals(
            
json_encode($this->raw),
            
json_encode($this->model),
            
'json_encode can be called on the model object directly'
        
);

        
$this->assertEquals(
            
json_encode($this->raw['country']),
            
json_encode($this->model->country),
            
'json_encode can be called on the record object directly'
        
);
    }

    public function 
testIsSet()
    {
        
$this->assertTrue(isset($this->model->traits), 'traits is set');
        
$this->assertFalse(isset($this->model->unknown), 'unknown is not set');

        
$this->assertTrue(
            isset(
$this->model->traits->ipAddress),
            
'ip_address is set'
        
);
        
$this->assertFalse(
            isset(
$this->model->traits->unknown),
            
'unknown trait is not set'
        
);
    }

    
/**
     * @expectedException RuntimeException
     * @expectedExceptionMessage Unknown attribute
     */
    
public function testUnknownRecord()
    {
        
$this->model->unknownRecord;
    }

    
/**
     * @expectedException RuntimeException
     * @expectedExceptionMessage Unknown attribute
     */
    
public function testUnknownTrait()
    {
        
$this->model->traits->unknown;
    }
}
Онлайн: 0
Реклама