Skip to content

Commit 67d5598

Browse files
committed
tests: added language and unit system trait tests
1 parent b3e5f68 commit 67d5598

5 files changed

+84
-0
lines changed

src/Test/Util/TestCollectionResponseTrait.php

+2
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ public function testCollectionResponse(
2424
$response = $this->api->$resource()->$method(...$args);
2525
$this->assertContainsOnlyInstancesOf($responseClass, $response);
2626
}
27+
28+
abstract public static function provideCollectionResponseData(): \Generator;
2729
}

src/Test/Util/TestItemResponseTrait.php

+2
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ public function testItemResponse(
2424
$response = $this->api->$resource()->$method(...$args);
2525
$this->assertInstanceOf($responseClass, $response);
2626
}
27+
28+
abstract public static function provideItemResponseData(): \Generator;
2729
}

src/Test/Util/TestValidationExceptionTrait.php

+2
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ public function testValidationException(string $resource, string $method, ?array
1313
$this->expectException(ValidationException::class);
1414
$this->api->$resource()->$method(...$args);
1515
}
16+
17+
abstract public static function provideValidationExceptionData(): \Generator;
1618
}
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace Integration;
4+
5+
use ProgrammatorDev\OpenWeatherMap\Resource\Resource;
6+
use ProgrammatorDev\OpenWeatherMap\Resource\Util\LanguageTrait;
7+
use ProgrammatorDev\OpenWeatherMap\Test\AbstractTest;
8+
use ProgrammatorDev\Validator\Exception\ValidationException;
9+
10+
class LanguageTraitTest extends AbstractTest
11+
{
12+
private Resource $resource;
13+
14+
protected function setUp(): void
15+
{
16+
parent::setUp();
17+
18+
$this->resource = new class($this->api) extends Resource {
19+
use LanguageTrait;
20+
21+
public function getLanguage(): string
22+
{
23+
return $this->api->getQueryDefault('lang');
24+
}
25+
};
26+
}
27+
28+
public function testMethods(): void
29+
{
30+
$this->assertSame('pt', $this->resource->withLanguage('pt')->getLanguage());
31+
$this->assertSame('en', $this->resource->getLanguage()); // back to default value
32+
}
33+
34+
public function testValidationException(): void
35+
{
36+
$this->expectException(ValidationException::class);
37+
$this->resource->withLanguage('invalid');
38+
}
39+
}
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace Integration;
4+
5+
use ProgrammatorDev\OpenWeatherMap\Resource\Resource;
6+
use ProgrammatorDev\OpenWeatherMap\Resource\Util\UnitSystemTrait;
7+
use ProgrammatorDev\OpenWeatherMap\Test\AbstractTest;
8+
use ProgrammatorDev\Validator\Exception\ValidationException;
9+
10+
class UnitSystemTraitTest extends AbstractTest
11+
{
12+
private Resource $resource;
13+
14+
protected function setUp(): void
15+
{
16+
parent::setUp();
17+
18+
$this->resource = new class($this->api) extends Resource {
19+
use UnitSystemTrait;
20+
21+
public function getUnitSystem(): string
22+
{
23+
return $this->api->getQueryDefault('units');
24+
}
25+
};
26+
}
27+
28+
public function testMethods(): void
29+
{
30+
$this->assertSame('imperial', $this->resource->withUnitSystem('imperial')->getUnitSystem());
31+
$this->assertSame('metric', $this->resource->getUnitSystem()); // back to default value
32+
}
33+
34+
public function testValidationException(): void
35+
{
36+
$this->expectException(ValidationException::class);
37+
$this->resource->withUnitSystem('invalid');
38+
}
39+
}

0 commit comments

Comments
 (0)