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); } }