Examples for presentation.
This commit is contained in:
58
tests/Unit/BadTest.php
Normal file
58
tests/Unit/BadTest.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use Example\Bad\APIService;
|
||||
use Example\Bad\CalculatorService;
|
||||
use Example\Bad\Controller;
|
||||
use Example\Bad\Repository;
|
||||
use Example\Bad\Product;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
use GuzzleHttp\Psr7\Response;
|
||||
use PDO;
|
||||
use PDOStatement;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class BadTest extends TestCase
|
||||
{
|
||||
public function testBad()
|
||||
{
|
||||
$guzzleClient = $this->createMock(Client::class);
|
||||
|
||||
// make call of controller from the guzzle client
|
||||
$guzzleClient->method('request')->willReturn(
|
||||
new Response(200, [],
|
||||
'[
|
||||
{ "sku" : "x1234", "amount": "10" },
|
||||
{ "sku" : "x1235", "amount": "20" },
|
||||
{ "sku" : "x4567", "amount": "5" }
|
||||
]'
|
||||
)
|
||||
);
|
||||
|
||||
$pdo = $this->createMock(PDO::class);
|
||||
$pdoResult = $this->createMock(PDOStatement::class);
|
||||
$pdoResult->method('fetchAll')->willReturn([
|
||||
(new Product())->setSku("x1234")->setPrice(10),
|
||||
(new Product())->setSku("x1235")->setPrice(20),
|
||||
(new Product())->setSku("x4567")->setPrice(30),
|
||||
]);
|
||||
$pdo->method('query')->willReturn($pdoResult);
|
||||
|
||||
$dbService = new Repository($pdo);
|
||||
$apiService = new ApiService($dbService, $guzzleClient);
|
||||
$calculatorService = new CalculatorService(0.20, $apiService);
|
||||
$controller = new Controller($calculatorService);
|
||||
|
||||
$products = $controller->getProducts(new Request('get', '/api', [], 'cosmetics'));
|
||||
|
||||
$expectedProducts = [
|
||||
(new Product())->setSku("x1234")->setPrice(12)->setQuantity(10),
|
||||
(new Product())->setSku("x1235")->setPrice(24)->setQuantity(20),
|
||||
(new Product())->setSku("x4567")->setPrice(36)->setQuantity(5),
|
||||
];
|
||||
|
||||
$this->assertEquals($expectedProducts, $products);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user