diff --git a/tests/Unit/Config/TransactionEventModelTest.php b/tests/Unit/Config/TransactionEventModelTest.php new file mode 100644 index 0000000..d761907 --- /dev/null +++ b/tests/Unit/Config/TransactionEventModelTest.php @@ -0,0 +1,13 @@ + $this->createProvider($this->checkoutService)->getId(), + 'account_id' => $this->createAccount($this->checkoutService)->getId(), + ]; + + $transactionEventWithPayment = TransactionEvent::factory()->for(Payment::factory()->create($usingServiceables))->create(['status_code' => CheckoutStatus::AUTHORIZED]); + $this->assertInstanceOf(Payment::class, $transactionEventWithPayment->payment); + + ServiceConfig::set('checkout', 'models.' . Payment::class, TestPayment::class); + $transactionEventWithOverriddenPayment = TransactionEvent::factory()->for(Payment::factory()->create($usingServiceables))->create(['status_code' => CheckoutStatus::AUTHORIZED]); + $this->assertInstanceOf(TestPayment::class, $transactionEventWithOverriddenPayment->payment); + } + + #[Test] + public function retrieve_transaction_event_transactionable() + { + $usingServiceables = [ + 'provider_id' => $this->createProvider($this->checkoutService)->getId(), + 'account_id' => $this->createAccount($this->checkoutService)->getId(), + ]; + + $transactionEvent = TransactionEvent::factory()->for(Payment::factory()->create($usingServiceables))->create(['status_code' => CheckoutStatus::AUTHORIZED]); + $this->assertNull($transactionEvent->transactionable); + + $transactionEventWithTransactionable = TransactionEvent::factory()->for($paymentForTransactionEventWithTransactionable = Payment::factory()->create($usingServiceables))->for(Refund::factory()->for($paymentForTransactionEventWithTransactionable)->create(), 'transactionable')->create(['status_code' => CheckoutStatus::AUTHORIZED]); + $this->assertInstanceOf(Refund::class, $transactionEventWithTransactionable->transactionable); + + ServiceConfig::set('checkout', 'models.' . Dispute::class, TestDispute::class); + $transactionEventWithOverriddenTransactionable = TransactionEvent::factory()->for($paymentForTransactionEventWithOverriddenTransactionable = Payment::factory()->create($usingServiceables))->create(['status_code' => CheckoutStatus::AUTHORIZED]); + $transactionEventWithOverriddenTransactionable->transactionable()->associate(transform(Dispute::factory()->for($paymentForTransactionEventWithOverriddenTransactionable)->create(), fn ($dispute) => TestDispute::find($dispute->id))); + $this->assertInstanceOf(TestDispute::class, $transactionEventWithOverriddenTransactionable->transactionable); + } +} diff --git a/tests/Unit/TransactionEventModelTest.php b/tests/Unit/TransactionEventModelTest.php deleted file mode 100644 index ed0451d..0000000 --- a/tests/Unit/TransactionEventModelTest.php +++ /dev/null @@ -1,40 +0,0 @@ -create(['status_code' => CheckoutStatus::AUTHORIZED]); - $this->assertInstanceOf(Payment::class, $transactionEventWithPayment->payment); - - ServiceConfig::set('checkout', 'models.' . Payment::class, TestPayment::class); - $transactionEventWithOverriddenPayment = TransactionEvent::factory()->create(['status_code' => CheckoutStatus::AUTHORIZED]); - $this->assertInstanceOf(TestPayment::class, $transactionEventWithOverriddenPayment->payment); - } - - #[Test] - public function retrieve_transaction_event_transactionable() - { - $transactionEvent = TransactionEvent::factory()->create(['status_code' => CheckoutStatus::AUTHORIZED]); - $this->assertNull($transactionEvent->transactionable); - - $transactionEventWithTransactionable = TransactionEvent::factory()->for(Payment::factory(), 'transactionable')->create(['status_code' => CheckoutStatus::AUTHORIZED]); - $this->assertInstanceOf(Payment::class, $transactionEventWithTransactionable->transactionable); - - ServiceConfig::set('checkout', 'models.' . Payment::class, TestPayment::class); - $transactionEventWithOverriddenTransactionable = TransactionEvent::factory()->create(['status_code' => CheckoutStatus::AUTHORIZED]); - $transactionEventWithOverriddenTransactionable->transactionable()->associate(transform(Payment::factory()->create(), fn ($payment) => TestPayment::find($payment->id))); - $this->assertInstanceOf(TestPayment::class, $transactionEventWithOverriddenTransactionable->transactionable); - } -}