mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-03 09:24:33 -04:00
Fixes for tests (#3262)
* Working on Refunds * Refund tests * fixes for tests
This commit is contained in:
parent
133e56dd0b
commit
956d4ba12e
@ -141,7 +141,7 @@ class ValidRefundableRequest implements Rule
|
|||||||
|
|
||||||
$refundable_amount = ($paymentable->pivot->amount - $paymentable->pivot->refunded);
|
$refundable_amount = ($paymentable->pivot->amount - $paymentable->pivot->refunded);
|
||||||
|
|
||||||
if($request_invoice['amount'] > $refundable_amount){
|
if($request_invoice['refunded'] > $refundable_amount){
|
||||||
|
|
||||||
$invoice = $paymentable->paymentable;
|
$invoice = $paymentable->paymentable;
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ class ValidRefundableRequest implements Rule
|
|||||||
|
|
||||||
$refundable_amount = ($paymentable->pivot->amount - $paymentable->pivot->refunded);
|
$refundable_amount = ($paymentable->pivot->amount - $paymentable->pivot->refunded);
|
||||||
|
|
||||||
if($request_invoice['amount'] > $refundable_amount){
|
if($request_credit['refunded'] > $refundable_amount){
|
||||||
|
|
||||||
$credit = $paymentable->paymentable;
|
$credit = $paymentable->paymentable;
|
||||||
|
|
||||||
|
@ -60,17 +60,15 @@ class ValidRefundableInvoices implements Rule
|
|||||||
foreach ($value as $val) {
|
foreach ($value as $val) {
|
||||||
if ($val['invoice_id'] == $invoice->id) {
|
if ($val['invoice_id'] == $invoice->id) {
|
||||||
|
|
||||||
if($val['refunded'] > ($invoice->amount - $invoice->balance))
|
if($val['refunded'] > ($invoice->amount - $invoice->balance)){
|
||||||
$this->error_msg = "Attempting to refund more than is possible for an invoice";
|
$this->error_msg = "Attempting to refund more than is possible for an invoice";
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,11 +233,13 @@ class Invoice extends BaseModel
|
|||||||
|
|
||||||
public function isRefundable() : bool
|
public function isRefundable() : bool
|
||||||
{
|
{
|
||||||
if($this->is_deleted){
|
// if($this->is_deleted){
|
||||||
return false;
|
// return false;
|
||||||
} elseif ($this->balance <= 0)
|
// } elseif ($this->balance <= 0)
|
||||||
return false;
|
// return false;
|
||||||
|
|
||||||
|
if($this->is_deleted)
|
||||||
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -120,12 +120,12 @@ trait Refundable
|
|||||||
|
|
||||||
private function refundPaymentWithInvoices($data)
|
private function refundPaymentWithInvoices($data)
|
||||||
{
|
{
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function refundPaymentWithInvoicesAndCredits($data)
|
private function refundPaymentWithInvoicesAndCredits($data)
|
||||||
{
|
{
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createCreditLineItems()
|
private function createCreditLineItems()
|
||||||
|
@ -27,7 +27,7 @@ use Tests\TestCase;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
* @covers App\Models\InvoiceInvitation\InvoiceInvitationFactory
|
* @covers App\Models\InvoiceInvitation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class InvitationTest extends TestCase
|
class InvitationTest extends TestCase
|
||||||
|
@ -79,7 +79,7 @@ class InvoiceEmailTest extends TestCase
|
|||||||
//fire any events
|
//fire any events
|
||||||
|
|
||||||
|
|
||||||
sleep(5);//here to cope with mailtrap time delays
|
//sleep(5);//here to cope with mailtrap time delays
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ class RefundTest extends TestCase
|
|||||||
$this->invoice->status_id = Invoice::STATUS_SENT;
|
$this->invoice->status_id = Invoice::STATUS_SENT;
|
||||||
|
|
||||||
$this->invoice->line_items = $this->buildLineItems();
|
$this->invoice->line_items = $this->buildLineItems();
|
||||||
$this->invoice->uses_inclusive_Taxes = false;
|
$this->invoice->uses_inclusive_taxes = false;
|
||||||
|
|
||||||
$this->invoice->save();
|
$this->invoice->save();
|
||||||
|
|
||||||
@ -288,6 +288,50 @@ class RefundTest extends TestCase
|
|||||||
$data = [
|
$data = [
|
||||||
'id' => $this->encodePrimaryKey($payment->id),
|
'id' => $this->encodePrimaryKey($payment->id),
|
||||||
'refunded' => 50,
|
'refunded' => 50,
|
||||||
|
'invoices' => [
|
||||||
|
[
|
||||||
|
'invoice_id' => $this->invoice->hashed_id,
|
||||||
|
'refunded' => $this->invoice->amount
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'date' => '2020/12/12',
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = false;
|
||||||
|
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->post('/api/v1/payments/refund', $data);
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testRefundValidationWithInValidInvoiceProvided()
|
||||||
|
{
|
||||||
|
$client = ClientFactory::create($this->company->id, $this->user->id);
|
||||||
|
$client->save();
|
||||||
|
|
||||||
|
$this->invoice = InvoiceFactory::create($this->company->id,$this->user->id);//stub the company and user_id
|
||||||
|
$this->invoice->client_id = $client->id;
|
||||||
|
$this->invoice->status_id = Invoice::STATUS_SENT;
|
||||||
|
|
||||||
|
$this->invoice->line_items = $this->buildLineItems();
|
||||||
|
$this->invoice->uses_inclusive_taxes = false;
|
||||||
|
|
||||||
|
$this->invoice->save();
|
||||||
|
|
||||||
|
$this->invoice_calc = new InvoiceSum($this->invoice);
|
||||||
|
$this->invoice_calc->build();
|
||||||
|
|
||||||
|
$this->invoice = $this->invoice_calc->getInvoice();
|
||||||
|
$this->invoice->save();
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'amount' => 50,
|
||||||
|
'client_id' => $client->hashed_id,
|
||||||
'invoices' => [
|
'invoices' => [
|
||||||
[
|
[
|
||||||
'invoice_id' => $this->invoice->hashed_id,
|
'invoice_id' => $this->invoice->hashed_id,
|
||||||
@ -295,6 +339,53 @@ class RefundTest extends TestCase
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
'date' => '2020/12/12',
|
'date' => '2020/12/12',
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->post('/api/v1/payments', $data);
|
||||||
|
|
||||||
|
|
||||||
|
$arr = $response->json();
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
$payment_id = $arr['data']['id'];
|
||||||
|
|
||||||
|
$this->assertEquals(50, $arr['data']['amount']);
|
||||||
|
|
||||||
|
$payment = Payment::whereId($this->decodePrimaryKey($payment_id))->first();
|
||||||
|
|
||||||
|
$this->assertNotNull($payment);
|
||||||
|
$this->assertNotNull($payment->invoices());
|
||||||
|
$this->assertEquals(1, $payment->invoices()->count());
|
||||||
|
|
||||||
|
$this->invoice = InvoiceFactory::create($this->company->id,$this->user->id);//stub the company and user_id
|
||||||
|
$this->invoice->client_id = $client->id;
|
||||||
|
$this->invoice->status_id = Invoice::STATUS_SENT;
|
||||||
|
|
||||||
|
$this->invoice->line_items = $this->buildLineItems();
|
||||||
|
$this->invoice->uses_inclusive_taxes = false;
|
||||||
|
|
||||||
|
$this->invoice->save();
|
||||||
|
|
||||||
|
$this->invoice_calc = new InvoiceSum($this->invoice);
|
||||||
|
$this->invoice_calc->build();
|
||||||
|
|
||||||
|
$this->invoice = $this->invoice_calc->getInvoice();
|
||||||
|
$this->invoice->save();
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'id' => $this->encodePrimaryKey($payment->id),
|
||||||
|
'refunded' => 50,
|
||||||
|
'invoices' => [
|
||||||
|
[
|
||||||
|
'invoice_id' => $this->invoice->hashed_id,
|
||||||
|
'refunded' => $this->invoice->amount
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'date' => '2020/12/12',
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = false;
|
$response = false;
|
||||||
@ -304,19 +395,16 @@ class RefundTest extends TestCase
|
|||||||
'X-API-SECRET' => config('ninja.api_secret'),
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
'X-API-TOKEN' => $this->token,
|
'X-API-TOKEN' => $this->token,
|
||||||
])->post('/api/v1/payments/refund', $data);
|
])->post('/api/v1/payments/refund', $data);
|
||||||
}catch( ValidationException $e)
|
}catch(ValidationException $e)
|
||||||
{
|
{
|
||||||
|
|
||||||
$message = json_decode($e->validator->getMessageBag(),1);
|
$message = json_decode($e->validator->getMessageBag(),1);
|
||||||
|
|
||||||
\Log::error($message);
|
\Log::error($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->assertStatus(200);
|
if($response)
|
||||||
|
$response->assertStatus(302);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ use Tests\TestCase;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
* @covers App\Utils\Traits\MakesReminder
|
* @covers App\Utils\Traits\MakesReminders
|
||||||
*/
|
*/
|
||||||
class CheckRemindersTest extends TestCase
|
class CheckRemindersTest extends TestCase
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user