Skip to content

Commit 75f2b3f

Browse files
committed
Add HasFactory trait to Payment model. Use app() instead of new. <commit message>
1 parent fb65fd7 commit 75f2b3f

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

src/Models/Payment.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
1010
use Damms005\LaravelMultipay\Contracts\PaymentHandlerInterface;
1111
use Damms005\LaravelMultipay\Services\PaymentHandlers\BasePaymentHandler;
12+
use Illuminate\Database\Eloquent\Factories\HasFactory;
1213

1314
/**
1415
* @property int $id
@@ -38,6 +39,7 @@
3839
class Payment extends Model
3940
{
4041
use SoftDeletes;
42+
use HasFactory;
4143

4244
protected $guarded = ['id'];
4345

src/Services/PaymentHandlers/BasePaymentHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ public function reQueryUnsuccessfulPayment(Payment $unsuccessfulPayment): ?ReQue
234234
/** @var PaymentHandlerInterface **/
235235
$handler = new (PaymentService::getHandlerFqcn($unsuccessfulPayment->payment_processor_name));
236236

237-
$reQueryResponse = $handler->reQuery($unsuccessfulPayment);
237+
$reQueryResponse = app(get_class($handler))->reQuery($unsuccessfulPayment);
238238

239239
if ($reQueryResponse == null) {
240240
return null;

tests/PaymentRequeryTest.php

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
<?php
22

33
use Mockery\Mock;
4+
use Illuminate\Support\Str;
45
use Illuminate\Support\Facades\Event;
56
use Damms005\LaravelMultipay\Models\Payment;
7+
use Damms005\LaravelMultipay\ValueObjects\ReQuery;
68
use Damms005\LaravelMultipay\Services\PaymentHandlers\Remita;
79
use Damms005\LaravelMultipay\Contracts\PaymentHandlerInterface;
810
use Damms005\LaravelMultipay\Services\PaymentHandlers\BasePaymentHandler;
911
use Damms005\LaravelMultipay\Events\SuccessfulLaravelMultipayPaymentEvent;
10-
use Damms005\LaravelMultipay\ValueObjects\ReQuery;
1112

1213
beforeEach(function () {
1314
$payment = createPayment();
@@ -40,18 +41,24 @@
4041
return $mock;
4142
});
4243

43-
app()->make(BasePaymentHandler::class)->reQueryUnsuccessfulPayment(new Payment());
44+
app()->make(BasePaymentHandler::class)->reQueryUnsuccessfulPayment(
45+
Payment::factory()->create(['payment_processor_name' => Remita::getUniquePaymentHandlerName()])
46+
);
4447
});
4548

4649
it('fires success events for re-query of successful payments', function () {
47-
app()->bind(PaymentHandlerInterface::class, function () {
50+
app()->bind(Remita::class, function () {
4851
/** @var Mock<TObject> */
4952
$mock = mock(Remita::class);
5053
$mock->makePartial();
5154

5255
$mock->expects('reQuery')->andReturn(
5356
new ReQuery(
54-
payment: new Payment(['is_success' => true]),
57+
payment: Payment::factory()->create([
58+
'is_success' => true,
59+
'transaction_reference' => Str::random(),
60+
'payment_processor_name' => Remita::getUniquePaymentHandlerName(),
61+
]),
5562
responseDetails: ['status' => 'Successful'],
5663
),
5764
);
@@ -60,7 +67,12 @@
6067
});
6168

6269
Event::fake();
63-
app()->make(BasePaymentHandler::class)->reQueryUnsuccessfulPayment(new Payment());
70+
71+
app()
72+
->make(BasePaymentHandler::class)
73+
->reQueryUnsuccessfulPayment(
74+
Payment::factory()->create(['payment_processor_name' => Remita::getUniquePaymentHandlerName()])
75+
);
6476

6577
Event::assertDispatched(SuccessfulLaravelMultipayPaymentEvent::class);
6678
});
@@ -85,7 +97,9 @@
8597

8698
Event::fake();
8799

88-
app()->make(BasePaymentHandler::class)->reQueryUnsuccessfulPayment(new Payment());
100+
app()->make(BasePaymentHandler::class)->reQueryUnsuccessfulPayment(
101+
Payment::factory()->create(['payment_processor_name' => Remita::getUniquePaymentHandlerName()])
102+
);
89103

90104
Event::assertNotDispatched(SuccessfulLaravelMultipayPaymentEvent::class);
91105
});

0 commit comments

Comments
 (0)