http://www.phing.info/

Source Code Coverage

Designed for use with PHPUnit, Xdebug and Phing.

Methods: 7 LOC: 197 Statements: 93
Legend: executednot executeddead code
Source file Statements Methods Total coverage
CriterionTest.php 100.0% 57.1% 97.0%
   
1
<?php
2
/**
3
 * Unit test class for Searching through changesets with Criterion objects.
4
 *
5
 * PHP Version 5
6
 *
7
 * @category   Services
8
 * @package    Services_Openstreetmap
9
 * @subpackage UnitTesting
10
 * @author     Ken Guest <kguest@php.net>
11
 * @license    BSD http://www.opensource.org/licenses/bsd-license.php
12
 * @version    Release: @package_version@
13
 * @link       CriterionTest.php
14
 */
15
16
$version = '@package_version@';
17
if (strstr($version, 'package_version')) {
18
    set_include_path(dirname(dirname(__FILE__)) . ':' . get_include_path());
19
}
20
21
require_once 'Services/Openstreetmap.php';
22
23
require_once 'HTTP/Request2.php';
24
require_once 'HTTP/Request2/Adapter/Mock.php';
25
require_once 'PHPUnit/Framework/TestCase.php';
26
27
28
/**
29
 * Unit test class for searching through changesets using Criterion objects.
30
 *
31
 * @category   Services
32
 * @package    Services_Openstreetmap
33
 * @subpackage UnitTesting
34
 * @author     Ken Guest <kguest@php.net>
35
 * @license    BSD http://www.opensource.org/licenses/bsd-license.php
36
 * @link       CriterionTest.php
37
 */
38
class CriterionTest extends PHPUnit_Framework_TestCase
39
{
40
    public function testSearchByUser()
41
    {
42 1
        $mock = new HTTP_Request2_Adapter_Mock();
43 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
44 1
        $mock->addResponse(fopen(__DIR__ . '/responses/changesets_11324.xml', 'rb'));
45
46
        $config = array(
47 1
            'adapter'  => $mock,
48 1
            'server'   => 'http://api06.dev.openstreetmap.org/',
49 1
        );
50 1
        $osm = new Services_Openstreetmap($config);
51 1
        $changesets = $osm->searchChangesets(
52 1
            array(new Services_Openstreetmap_Criterion('user', 11324))
53 1
        );
54 1
        $this->assertInstanceOf('Services_Openstreetmap_Changesets', $changesets);
55 1
        $diff = false;
56 1
        foreach($changesets as $changeset) {
57 1
            if ($changeset->getUid() != 11324) {
58
                $diff = true;
59
            }
60 1
        }
61 1
        $this->assertFalse($diff, 'Unexpected UID present in changeset data');
62
    }
63
64
    /**
65
     * Search by an unrecognised constraint type ('uid').
66
     *
67
     * @expectedException InvalidArgumentException
68
     * @expectedExceptionMessage Unknown constraint type
69
     */
70
    public function testSearchInvalid()
71
    {
72 1
        $mock = new HTTP_Request2_Adapter_Mock();
73 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
74
75
        $config = array(
76 1
            'adapter'  => $mock,
77 1
            'server'   => 'http://api06.dev.openstreetmap.org/',
78 1
        );
79 1
        $osm = new Services_Openstreetmap($config);
80 1
        $changesets = $osm->searchChangesets(
81 1
            array(new Services_Openstreetmap_Criterion('uid', 11324))
82
        );
83
    }
84
85
    public function testSearchByDisplayName()
86
    {
87 1
        $mock = new HTTP_Request2_Adapter_Mock();
88 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
89 1
        $mock->addResponse(fopen(__DIR__ . '/responses/changesets_11324.xml', 'rb'));
90
91
        $config = array(
92 1
            'adapter'  => $mock,
93 1
            'server'   => 'http://api06.dev.openstreetmap.org/',
94 1
        );
95 1
        $osm = new Services_Openstreetmap($config);
96 1
        $changesets = $osm->searchChangesets(
97 1
            array(new Services_Openstreetmap_Criterion('display_name', 'kenguest'))
98 1
        );
99 1
        $this->assertInstanceOf('Services_Openstreetmap_Changesets', $changesets);
100
    }
101
102
    /**
103
     * Check that an exception is thrown if attempting to search by both
104
     * user id and display_name
105
     *
106
     * @expectedException InvalidArgumentException
107
     * @expectedExceptionMessage Can't supply both user and display_name criteria
108
     */
109
    public function testSearchByDisplayNameAndUser()
110
    {
111 1
        $mock = new HTTP_Request2_Adapter_Mock();
112 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
113 1
        $mock->addResponse(fopen(__DIR__ . '/responses/changesets_11324.xml', 'rb'));
114
115
        $config = array(
116 1
            'adapter'  => $mock,
117 1
            'server'   => 'http://api06.dev.openstreetmap.org/',
118 1
        );
119 1
        $osm = new Services_Openstreetmap($config);
120 1
        $display_name = new Services_Openstreetmap_Criterion('display_name', 'kenguest');
121 1
        $this->assertEquals($display_name->type(), 'display_name');
122 1
        $user = new Services_Openstreetmap_Criterion('user', 11324);
123 1
        $changesets = $osm->searchChangesets(array($display_name, $user));
124
        $this->assertInstanceOf('Services_Openstreetmap_Changesets', $changesets);
125
    }
126
127
    public function testSearchByBbox()
128
    {
129 1
        $mock = new HTTP_Request2_Adapter_Mock();
130 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
131 1
        $mock->addResponse(fopen(__DIR__ . '/responses/changesets_11324.xml', 'rb'));
132
133
        $config = array(
134 1
            'adapter'  => $mock,
135 1
            'server'   => 'http://api06.dev.openstreetmap.org/',
136 1
        );
137 1
        $osm = new Services_Openstreetmap($config);
138 1
        $changesets = $osm->searchChangesets(
139
            array(
140 1
                new Services_Openstreetmap_Criterion('bbox', -8.0590275, 52.9347449, -7.9966939, 52.9611999),
141
            )
142 1
        );
143 1
        $this->assertInstanceOf('Services_Openstreetmap_Changesets', $changesets);
144
    }
145
146
    public function testSearchByMultipleCriteria()
147
    {
148 1
        $mock = new HTTP_Request2_Adapter_Mock();
149 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
150 1
        $mock->addResponse(fopen(__DIR__ . '/responses/changesets_11324.xml', 'rb'));
151
152
        $config = array(
153 1
            'adapter'  => $mock,
154 1
            'server'   => 'http://api06.dev.openstreetmap.org/',
155 1
        );
156 1
        $osm = new Services_Openstreetmap($config);
157
158 1
        $user = new Services_Openstreetmap_Criterion('user', 11324);
159 1
        $this->assertEquals($user->type(), 'user');
160 1
        $this->assertEquals($user->query(), 'user=11324');
161
162 1
        $bbox = new Services_Openstreetmap_Criterion('bbox', -8.0590275, 52.9347449, -7.9966939, 52.9611999);
163 1
        $this->assertEquals($bbox->type(), 'bbox');
164 1
        $this->assertEquals($bbox->query(), 'bbox=-8.0590275,52.9347449,-7.9966939,52.9611999');
165
166 1
        $closed = new Services_Openstreetmap_Criterion('closed');
167 1
        $this->assertEquals($closed->type(), 'closed');
168 1
        $this->assertEquals($closed->query(), 'closed');
169
170 1
        $changesets = $osm->searchChangesets( array($user, $bbox, $closed));
171 1
        $this->assertInstanceOf('Services_Openstreetmap_Changesets', $changesets);
172
    }
173
174
    public function testTimeAfterOnly()
175
    {
176
177 1
        $mock = new HTTP_Request2_Adapter_Mock();
178 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
179 1
        $mock->addResponse(fopen(__DIR__ . '/responses/changeset_search_timespan.xml', 'rb'));
180
181
        $config = array(
182 1
            'adapter'  => $mock,
183 1
            'server'   => 'http://api06.dev.openstreetmap.org/',
184 1
        );
185 1
        $osm = new Services_Openstreetmap($config);
186
187 1
        $time = '17 November 2011';
188 1
        $time2 = '29 November 2011';
189 1
        $display_name = new Services_Openstreetmap_Criterion('display_name', 'kenguest');
190 1
        $c = new Services_Openstreetmap_Criterion('time', $time, $time2);
191 1
        $this->assertEquals($c->query(), "time=2011-11-17T00%3A00%3A00Z%2C2011-11-29T00%3A00%3A00Z");
192 1
        $changesets = $osm->searchChangesets(array($display_name, $c));
193 1
        $this->assertInstanceOf('Services_Openstreetmap_Changesets', $changesets);
194
   }
195
}
196
// vim:set et ts=4 sw=4:
197
?>


Report generated at 2012-01-31T21:54:38Z