134 lines
5.0 KiB
PHP
134 lines
5.0 KiB
PHP
<?php
|
|
namespace Tests\Unit\Repository\MediosPago\Toku;
|
|
|
|
use PDO;
|
|
use PHPUnit\Framework\Attributes\Depends;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Faker;
|
|
use Incoviba\Common\Define;
|
|
use Incoviba\Model;
|
|
use Incoviba\Repository;
|
|
|
|
class InvoiceTest extends TestCase
|
|
{
|
|
protected Define\Connection $connection;
|
|
protected PDO $pdo;
|
|
protected Model\Venta\Cuota $cuota;
|
|
protected Repository\Venta\Cuota $cuotaRepository;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$dsn = "mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_DATABASE']}";
|
|
$this->pdo = new PDO($dsn, $_ENV['DB_USER'], $_ENV['DB_PASSWORD']);
|
|
|
|
$this->connection = $this->getMockBuilder(Define\Connection::class)
|
|
->disableOriginalConstructor()->getMock();
|
|
$this->connection->method('getPDO')->willReturn($this->pdo);
|
|
|
|
$faker = Faker\Factory::create();
|
|
|
|
$this->cuota = $this->getMockBuilder(Model\Venta\Cuota::class)
|
|
->disableOriginalConstructor()->getMock();
|
|
$this->cuota->id = $faker->randomNumber();
|
|
|
|
$this->cuotaRepository = $this->getMockBuilder(Repository\Venta\Cuota::class)
|
|
->disableOriginalConstructor()->getMock();
|
|
$this->cuotaRepository->method('fetchById')->willReturn($this->cuota);
|
|
}
|
|
|
|
public function testCreate(): void
|
|
{
|
|
$repository = new Repository\MediosPago\Toku\Invoice($this->connection, $this->cuotaRepository);
|
|
|
|
$faker = Faker\Factory::create();
|
|
$data = [
|
|
'cuota_id' => $this->cuota->id,
|
|
'toku_id' => $faker->ean13(),
|
|
];
|
|
|
|
$invoice = $repository->create($data);
|
|
|
|
$this->assertEquals($this->cuota->id, $invoice->cuota->id);
|
|
$this->assertEquals($data['toku_id'], $invoice->toku_id);
|
|
}
|
|
public function testSave(): Model\MediosPago\Toku\Invoice
|
|
{
|
|
$repository = new Repository\MediosPago\Toku\Invoice($this->connection, $this->cuotaRepository);
|
|
|
|
$faker = Faker\Factory::create();
|
|
$data = [
|
|
'cuota_id' => $this->cuota->id,
|
|
'toku_id' => $faker->ean13(),
|
|
];
|
|
|
|
$invoice = $repository->create($data);
|
|
$invoice = $repository->save($invoice);
|
|
$this->assertNotNull($invoice->id);
|
|
$this->assertEquals($this->cuota->id, $invoice->cuota->id);
|
|
$this->assertEquals($data['toku_id'], $invoice->toku_id);
|
|
|
|
return $invoice;
|
|
}
|
|
#[Depends('testSave')]
|
|
public function testFetch(Model\MediosPago\Toku\Invoice $reference): void
|
|
{
|
|
$result = [
|
|
'id' => $reference->id,
|
|
'cuota_id' => $this->cuota->id,
|
|
'toku_id' => $reference->toku_id,
|
|
];
|
|
$resultSet = $this->getMockBuilder(\PDOStatement::class)
|
|
->disableOriginalConstructor()->getMock();
|
|
$resultSet->method('fetch')->willReturn($result);
|
|
$this->connection->method('execute')->willReturn($resultSet);
|
|
|
|
$repository = new Repository\MediosPago\Toku\Invoice($this->connection, $this->cuotaRepository);
|
|
|
|
$invoice = $repository->fetchById($reference->id);
|
|
$this->assertInstanceOf(Model\MediosPago\Toku\Invoice::class, $invoice);
|
|
$this->assertEquals($reference->id, $invoice->id);
|
|
$this->assertEquals($this->cuota->id, $invoice->cuota->id);
|
|
$this->assertEquals($reference->toku_id, $invoice->toku_id);
|
|
}
|
|
#[Depends('testSave')]
|
|
public function testFetchByCuota(Model\MediosPago\Toku\Invoice $reference): void
|
|
{
|
|
$result = [
|
|
'id' => $reference->id,
|
|
'cuota_id' => $this->cuota->id,
|
|
'toku_id' => $reference->toku_id,
|
|
];
|
|
$resultSet = $this->getMockBuilder(\PDOStatement::class)
|
|
->disableOriginalConstructor()->getMock();
|
|
$resultSet->method('fetch')->willReturn($result);
|
|
$this->connection->method('execute')->willReturn($resultSet);
|
|
|
|
$repository = new Repository\MediosPago\Toku\Invoice($this->connection, $this->cuotaRepository);
|
|
|
|
$invoice = $repository->fetchByCuota($this->cuota->id);
|
|
$this->assertEquals($reference->id, $invoice->id);
|
|
$this->assertEquals($this->cuota->id, $invoice->cuota->id);
|
|
$this->assertEquals($reference->toku_id, $invoice->toku_id);
|
|
}
|
|
#[Depends('testSave')]
|
|
public function testFetchByTokuId(Model\MediosPago\Toku\Invoice $reference): void
|
|
{
|
|
$result = [
|
|
'id' => $reference->id,
|
|
'cuota_id' => $this->cuota->id,
|
|
'toku_id' => $reference->toku_id,
|
|
];
|
|
$resultSet = $this->getMockBuilder(\PDOStatement::class)
|
|
->disableOriginalConstructor()->getMock();
|
|
$resultSet->method('fetch')->willReturn($result);
|
|
$this->connection->method('execute')->willReturn($resultSet);
|
|
|
|
$repository = new Repository\MediosPago\Toku\Invoice($this->connection, $this->cuotaRepository);
|
|
|
|
$invoice = $repository->fetchByTokuId($reference->toku_id);
|
|
$this->assertEquals($reference->id, $invoice->id);
|
|
$this->assertEquals($this->cuota->id, $invoice->cuota->id);
|
|
$this->assertEquals($reference->toku_id, $invoice->toku_id);
|
|
}
|
|
}
|