Skip to content

Commit 5cfd5b2

Browse files
author
Mario Blazek
committed
Controller tests
1 parent 09011e4 commit 5cfd5b2

10 files changed

Lines changed: 912 additions & 1 deletion

Controller/AirPollutionController.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,10 @@ public function getOzoneData($latitude, $longitude, $datetime = 'current')
5656
$response->setContent($data);
5757
} catch (NotAuthorizedException $e) {
5858
$response->setContent($e->getMessage());
59+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
5960
} catch (NotFoundException $e) {
6061
$response->setContent($e->getMessage());
62+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
6163
}
6264

6365
return $response;
@@ -90,8 +92,10 @@ public function getCarbonMonoxideData($latitude, $longitude, $datetime = 'curren
9092
$response->setContent($data);
9193
} catch (NotAuthorizedException $e) {
9294
$response->setContent($e->getMessage());
95+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
9396
} catch (NotFoundException $e) {
9497
$response->setContent($e->getMessage());
98+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
9599
}
96100

97101
return $response;

Controller/DailyForecastController.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ public function getForecastByCityName($cityName, $numberOfDays = 16, $countryCod
4646
$response->setContent($data);
4747
} catch (NotAuthorizedException $e) {
4848
$response->setContent($e->getMessage());
49+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
4950
} catch (NotFoundException $e) {
5051
$response->setContent($e->getMessage());
52+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
5153
}
5254

5355
return $response;
@@ -70,8 +72,10 @@ public function getForecastByCityId($cityId, $numberOfDays = 16)
7072
$response->setContent($data);
7173
} catch (NotAuthorizedException $e) {
7274
$response->setContent($e->getMessage());
75+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
7376
} catch (NotFoundException $e) {
7477
$response->setContent($e->getMessage());
78+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
7579
}
7680

7781
return $response;
@@ -95,8 +99,10 @@ public function getForecastByCityGeographicCoordinates($latitude, $longitude, $n
9599
$response->setContent($data);
96100
} catch (NotAuthorizedException $e) {
97101
$response->setContent($e->getMessage());
102+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
98103
} catch (NotFoundException $e) {
99104
$response->setContent($e->getMessage());
105+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
100106
}
101107

102108
return $response;

Controller/HourForecastController.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ public function getForecastByCityName($cityName, $countryCode = '')
4545
$response->setContent($data);
4646
} catch (NotAuthorizedException $e) {
4747
$response->setContent($e->getMessage());
48+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
4849
} catch (NotFoundException $e) {
4950
$response->setContent($e->getMessage());
51+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
5052
}
5153

5254
return $response;
@@ -68,8 +70,10 @@ public function getForecastByCityId($cityId)
6870
$response->setContent($data);
6971
} catch (NotAuthorizedException $e) {
7072
$response->setContent($e->getMessage());
73+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
7174
} catch (NotFoundException $e) {
7275
$response->setContent($e->getMessage());
76+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
7377
}
7478

7579
return $response;
@@ -88,12 +92,14 @@ public function getForecastByCityGeographicCoordinates($latitude, $longitude)
8892
$response = new Response();
8993

9094
try {
91-
$data = $this->hourForecast->fetchForecastByCityName($latitude, $longitude);
95+
$data = $this->hourForecast->fetchForecastByCityGeographicCoordinates($latitude, $longitude);
9296
$response->setContent($data);
9397
} catch (NotAuthorizedException $e) {
9498
$response->setContent($e->getMessage());
99+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
95100
} catch (NotFoundException $e) {
96101
$response->setContent($e->getMessage());
102+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
97103
}
98104

99105
return $response;

Controller/UltravioletIndexController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,10 @@ public function getUltravioletIndex($latitude, $longitude, $datetime = 'current'
5656
$response->setContent($data);
5757
} catch (NotAuthorizedException $e) {
5858
$response->setContent($e->getMessage());
59+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
5960
} catch (NotFoundException $e) {
6061
$response->setContent($e->getMessage());
62+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
6163
}
6264

6365
return $response;

Controller/WeatherController.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ public function byGeographicCoordinates($latitude, $longitude)
4646
$response->setContent($data);
4747
} catch (NotAuthorizedException $e) {
4848
$response->setContent($e->getMessage());
49+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
4950
} catch (NotFoundException $e) {
5051
$response->setContent($e->getMessage());
52+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
5153
}
5254

5355
return $response;
@@ -71,8 +73,10 @@ public function byCityName($cityName, $countryCode = '')
7173
$response->setContent($data);
7274
} catch (NotAuthorizedException $e) {
7375
$response->setContent($e->getMessage());
76+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
7477
} catch (NotFoundException $e) {
7578
$response->setContent($e->getMessage());
79+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
7680
}
7781

7882
return $response;
@@ -94,8 +98,10 @@ public function byCityId($cityId)
9498
$response->setContent($data);
9599
} catch (NotAuthorizedException $e) {
96100
$response->setContent($e->getMessage());
101+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
97102
} catch (NotFoundException $e) {
98103
$response->setContent($e->getMessage());
104+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
99105
}
100106

101107
return $response;
@@ -118,8 +124,10 @@ public function byZipCode($zipCode, $countryCode = '')
118124
$response->setContent($data);
119125
} catch (NotAuthorizedException $e) {
120126
$response->setContent($e->getMessage());
127+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
121128
} catch (NotFoundException $e) {
122129
$response->setContent($e->getMessage());
130+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
123131
}
124132

125133
return $response;
@@ -148,8 +156,10 @@ public function byRectangleZone($longitudeLeft, $latitudeBottom, $logitudeRigth,
148156
$response->setContent($data);
149157
} catch (NotAuthorizedException $e) {
150158
$response->setContent($e->getMessage());
159+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
151160
} catch (NotFoundException $e) {
152161
$response->setContent($e->getMessage());
162+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
153163
}
154164

155165
return $response;
@@ -174,8 +184,10 @@ public function byCircle($latitude, $longitude, $cluster = 'yes', $numberOfCitie
174184
$response->setContent($data);
175185
} catch (NotAuthorizedException $e) {
176186
$response->setContent($e->getMessage());
187+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
177188
} catch (NotFoundException $e) {
178189
$response->setContent($e->getMessage());
190+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
179191
}
180192

181193
return $response;
@@ -203,8 +215,10 @@ public function byCityIds(Request $request)
203215
$response->setContent($data);
204216
} catch (NotAuthorizedException $e) {
205217
$response->setContent($e->getMessage());
218+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
206219
} catch (NotFoundException $e) {
207220
$response->setContent($e->getMessage());
221+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
208222
}
209223

210224
return $response;

Controller/WeatherStationsController.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ public function getFromOnStationById($stationId)
4444
$response->setContent($data);
4545
} catch (NotAuthorizedException $e) {
4646
$response->setContent($e->getMessage());
47+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
4748
} catch (NotFoundException $e) {
4849
$response->setContent($e->getMessage());
50+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
4951
}
5052

5153
return $response;
@@ -77,8 +79,10 @@ public function getFromSeveralByRectangleZone($longitudeTopLeft, $latitudeTopLef
7779
$response->setContent($data);
7880
} catch (NotAuthorizedException $e) {
7981
$response->setContent($e->getMessage());
82+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
8083
} catch (NotFoundException $e) {
8184
$response->setContent($e->getMessage());
85+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
8286
}
8387

8488
return $response;
@@ -102,8 +106,10 @@ public function getFromSeveralByGeoPoint($latitude, $longitude, $numberOfStation
102106
$response->setContent($data);
103107
} catch (NotAuthorizedException $e) {
104108
$response->setContent($e->getMessage());
109+
$response->setStatusCode(Response::HTTP_UNAUTHORIZED);
105110
} catch (NotFoundException $e) {
106111
$response->setContent($e->getMessage());
112+
$response->setStatusCode(Response::HTTP_NOT_FOUND);
107113
}
108114

109115
return $response;
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
<?php
2+
3+
namespace Netgen\Bundle\OpenWeatherMapBundle\Tests\Controller;
4+
5+
use Netgen\Bundle\OpenWeatherMapBundle\Controller\DailyForecastController;
6+
use Netgen\Bundle\OpenWeatherMapBundle\Core\DailyForecast;
7+
use Netgen\Bundle\OpenWeatherMapBundle\Exception\NotAuthorizedException;
8+
use Netgen\Bundle\OpenWeatherMapBundle\Exception\NotFoundException;
9+
use Symfony\Component\HttpFoundation\Response;
10+
11+
class DailyForecastControllerTest extends \PHPUnit_Framework_TestCase
12+
{
13+
public function testGetForecastByCityName()
14+
{
15+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
16+
->disableOriginalConstructor()
17+
->setMethods(array('fetchForecastByCityName'))
18+
->getMock();
19+
20+
$dailyForecast->expects($this->once())
21+
->willReturn('some_data')
22+
->method('fetchForecastByCityName');
23+
24+
$dailyForecastController = new DailyForecastController($dailyForecast);
25+
$response = $dailyForecastController->getForecastByCityName('London', 10, 'uk');
26+
27+
$this->assertInstanceOf(Response::class, $response);
28+
}
29+
30+
public function testGetForecastByCityNameWithNotAuthorizedException()
31+
{
32+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
33+
->disableOriginalConstructor()
34+
->setMethods(array('fetchForecastByCityName'))
35+
->getMock();
36+
37+
$dailyForecast->expects($this->once())
38+
->willThrowException(new NotAuthorizedException('Not authorized'))
39+
->method('fetchForecastByCityName');
40+
41+
$dailyForecastController = new DailyForecastController($dailyForecast);
42+
$response = $dailyForecastController->getForecastByCityName('London', 10, 'uk');
43+
44+
$this->assertInstanceOf(Response::class, $response);
45+
$this->assertEquals('Not authorized', $response->getContent());
46+
$this->assertEquals(Response::HTTP_UNAUTHORIZED, $response->getStatusCode());
47+
}
48+
49+
public function testGetForecastByCityNameWithNotFoundException()
50+
{
51+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
52+
->disableOriginalConstructor()
53+
->setMethods(array('fetchForecastByCityName'))
54+
->getMock();
55+
56+
$dailyForecast->expects($this->once())
57+
->willThrowException(new NotFoundException('Not found'))
58+
->method('fetchForecastByCityName');
59+
60+
$dailyForecastController = new DailyForecastController($dailyForecast);
61+
$response = $dailyForecastController->getForecastByCityName('London', 10, 'uk');
62+
63+
$this->assertInstanceOf(Response::class, $response);
64+
$this->assertEquals('Not found', $response->getContent());
65+
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
66+
}
67+
68+
public function testGetForecastByCityId()
69+
{
70+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
71+
->disableOriginalConstructor()
72+
->setMethods(array('fetchForecastByCityId'))
73+
->getMock();
74+
75+
$dailyForecast->expects($this->once())
76+
->willReturn('some_data')
77+
->method('fetchForecastByCityId');
78+
79+
$dailyForecastController = new DailyForecastController($dailyForecast);
80+
$response = $dailyForecastController->getForecastByCityId(9040, 10);
81+
82+
$this->assertInstanceOf(Response::class, $response);
83+
}
84+
85+
public function testGetForecastByCityIdWithNotAuthorizedException()
86+
{
87+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
88+
->disableOriginalConstructor()
89+
->setMethods(array('fetchForecastByCityId'))
90+
->getMock();
91+
92+
$dailyForecast->expects($this->once())
93+
->willThrowException(new NotAuthorizedException('Not authorized'))
94+
->method('fetchForecastByCityId');
95+
96+
$dailyForecastController = new DailyForecastController($dailyForecast);
97+
$response = $dailyForecastController->getForecastByCityId(9040, 10);
98+
99+
$this->assertInstanceOf(Response::class, $response);
100+
$this->assertEquals('Not authorized', $response->getContent());
101+
$this->assertEquals(Response::HTTP_UNAUTHORIZED, $response->getStatusCode());
102+
}
103+
104+
public function testGetForecastByCityIdWithNotFoundException()
105+
{
106+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
107+
->disableOriginalConstructor()
108+
->setMethods(array('fetchForecastByCityId'))
109+
->getMock();
110+
111+
$dailyForecast->expects($this->once())
112+
->willThrowException(new NotFoundException('Not found'))
113+
->method('fetchForecastByCityId');
114+
115+
$dailyForecastController = new DailyForecastController($dailyForecast);
116+
$response = $dailyForecastController->getForecastByCityId(9040, 10);
117+
118+
$this->assertInstanceOf(Response::class, $response);
119+
$this->assertEquals('Not found', $response->getContent());
120+
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
121+
}
122+
123+
public function testGetForecastByCityGeographicCoordinates()
124+
{
125+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
126+
->disableOriginalConstructor()
127+
->setMethods(array('fetchForecastByCityGeographicCoordinates'))
128+
->getMock();
129+
130+
$dailyForecast->expects($this->once())
131+
->willReturn('some_data')
132+
->method('fetchForecastByCityGeographicCoordinates');
133+
134+
$dailyForecastController = new DailyForecastController($dailyForecast);
135+
$response = $dailyForecastController->getForecastByCityGeographicCoordinates(32, 123, 10);
136+
137+
$this->assertInstanceOf(Response::class, $response);
138+
}
139+
140+
public function testGetForecastByCityGeographicCoordinatesWithNotAuthorizedException()
141+
{
142+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
143+
->disableOriginalConstructor()
144+
->setMethods(array('fetchForecastByCityGeographicCoordinates'))
145+
->getMock();
146+
147+
$dailyForecast->expects($this->once())
148+
->willThrowException(new NotAuthorizedException('Not authorized'))
149+
->method('fetchForecastByCityGeographicCoordinates');
150+
151+
$dailyForecastController = new DailyForecastController($dailyForecast);
152+
$response = $dailyForecastController->getForecastByCityGeographicCoordinates(32, 123, 10);
153+
154+
$this->assertInstanceOf(Response::class, $response);
155+
$this->assertEquals('Not authorized', $response->getContent());
156+
$this->assertEquals(Response::HTTP_UNAUTHORIZED, $response->getStatusCode());
157+
}
158+
159+
public function testGetForecastByCityGeographicCoordinatesWithNotFoundException()
160+
{
161+
$dailyForecast = $this->getMockBuilder(DailyForecast::class)
162+
->disableOriginalConstructor()
163+
->setMethods(array('fetchForecastByCityGeographicCoordinates'))
164+
->getMock();
165+
166+
$dailyForecast->expects($this->once())
167+
->willThrowException(new NotFoundException('Not found'))
168+
->method('fetchForecastByCityGeographicCoordinates');
169+
170+
$dailyForecastController = new DailyForecastController($dailyForecast);
171+
$response = $dailyForecastController->getForecastByCityGeographicCoordinates(32, 123, 10);
172+
173+
$this->assertInstanceOf(Response::class, $response);
174+
$this->assertEquals('Not found', $response->getContent());
175+
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
176+
}
177+
}

0 commit comments

Comments
 (0)