1use strict;
2use warnings;
3
4use lib 't/lib';
5
6use Test::GeoIP2 qw(
7    test_model_class
8    test_model_class_with_empty_record
9    test_model_class_with_unknown_keys
10);
11use Test::More 0.88;
12
13use GeoIP2::Model::City;
14
15{
16    my %raw = (
17        city => {
18            geoname_id => 9876,
19            names      => { en => 'Minneapolis' },
20        },
21        continent => {
22            code       => 'NA',
23            geoname_id => 42,
24            names      => { en => 'North America' },
25        },
26        country => {
27            geoname_id => 1,
28            iso_code   => 'US',
29            names      => {
30                'de'    => 'Nordamerika',
31                'en'    => 'North America',
32                'es'    => 'América del Norte',
33                'fr'    => 'Amérique du Nord',
34                'ja'    => '北アメリカ',
35                'pt-BR' => 'América do Norte',
36                'ru'    => 'Северная Америка',
37                'zh-CN' => '北美洲',
38            },
39        },
40        location => {
41            accuracy_radius => 1500,
42            latitude        => 44.98,
43            longitude       => 93.2636,
44            metro_code      => 765,
45            time_zone       => 'America/Chicago',
46        },
47        maxmind => {
48            queries_remaining => 42,
49        },
50        postal => {
51            code => '12345',
52        },
53        registered_country => {
54            geoname_id => 2,
55            iso_code   => 'CA',
56            names      => { en => 'Canada' },
57        },
58        represented_country => {
59            geoname_id => 3,
60            iso_code   => 'GB',
61            names      => { en => 'United Kingdom' },
62        },
63        subdivisions => [
64            {
65                geoname_id => 574635,
66                iso_code   => 'MN',
67                names      => { en => 'Minnesota' },
68            },
69        ],
70        traits => {
71            autonomous_system_number       => 1234,
72            autonomous_system_organization => 'AS Organization',
73            domain                         => 'example.com',
74            ip_address                     => '1.2.3.4',
75            is_satellite_provider          => 1,
76            isp                            => 'Comcast',
77            organization                   => 'Blorg',
78        },
79    );
80
81    test_model_class( 'GeoIP2::Model::City', \%raw );
82}
83
84{
85    test_model_class_with_empty_record('GeoIP2::Model::City');
86    test_model_class_with_unknown_keys('GeoIP2::Model::City');
87}
88
89done_testing();
90