tests for offline payments and paypal standard
This commit is contained in:
parent
e85b79b357
commit
6cf90cb5cd
@ -3,11 +3,13 @@
|
|||||||
namespace Modules\OfflinePayments\Http\Controllers;
|
namespace Modules\OfflinePayments\Http\Controllers;
|
||||||
|
|
||||||
use App\Abstracts\Http\Controller;
|
use App\Abstracts\Http\Controller;
|
||||||
use App\Utilities\Modules;
|
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use Modules\OfflinePayments\Http\Requests\Setting as Request;
|
use Modules\OfflinePayments\Http\Requests\Setting as Request;
|
||||||
use Modules\OfflinePayments\Http\Requests\SettingGet as GRequest;
|
use Modules\OfflinePayments\Http\Requests\SettingGet as GRequest;
|
||||||
use Modules\OfflinePayments\Http\Requests\SettingDelete as DRequest;
|
use Modules\OfflinePayments\Http\Requests\SettingDelete as DRequest;
|
||||||
|
use Modules\OfflinePayments\Jobs\CreatePaymentMethod;
|
||||||
|
use Modules\OfflinePayments\Jobs\DeletePaymentMethod;
|
||||||
|
use Modules\OfflinePayments\Jobs\UpdatePaymentMethod;
|
||||||
|
|
||||||
class Settings extends Controller
|
class Settings extends Controller
|
||||||
{
|
{
|
||||||
@ -32,56 +34,24 @@ class Settings extends Controller
|
|||||||
*/
|
*/
|
||||||
public function update(Request $request)
|
public function update(Request $request)
|
||||||
{
|
{
|
||||||
$methods = json_decode(setting('offline-payments.methods'), true);
|
if (!empty($request->get('update_code'))) {
|
||||||
|
$payment_method = $this->dispatch(new UpdatePaymentMethod($request));
|
||||||
|
|
||||||
if (!empty($request->get('update_code', null))) {
|
$message = trans('messages.success.updated', ['type' => $payment_method['name']]);
|
||||||
foreach ($methods as $key => $method) {
|
|
||||||
if ($method['code'] != $request->get('update_code')) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$method = explode('.', $request->get('update_code'));
|
|
||||||
|
|
||||||
$methods[$key] = [
|
|
||||||
'code' => 'offline-payments.' . $request->get('code') . '.' . $method[2],
|
|
||||||
'name' => $request->get('name'),
|
|
||||||
'customer' => $request->get('customer'),
|
|
||||||
'order' => $request->get('order'),
|
|
||||||
'description' => $request->get('description'),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$message = trans('messages.success.updated', ['type' => $request['name']]);
|
|
||||||
} else {
|
} else {
|
||||||
$methods[] = [
|
$payment_method = $this->dispatch(new CreatePaymentMethod($request));
|
||||||
'code' => 'offline-payments.' . $request->get('code') . '.' . (count($methods) + 1),
|
|
||||||
'name' => $request->get('name'),
|
|
||||||
'customer' => $request->get('customer'),
|
|
||||||
'order' => $request->get('order'),
|
|
||||||
'description' => $request->get('description'),
|
|
||||||
];
|
|
||||||
|
|
||||||
$message = trans('messages.success.added', ['type' => $request->get('name')]);
|
$message = trans('messages.success.added', ['type' => $payment_method['name']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
setting()->set('offline-payments.methods', json_encode($methods));
|
|
||||||
|
|
||||||
setting()->save();
|
|
||||||
|
|
||||||
Modules::clearPaymentMethodsCache();
|
|
||||||
|
|
||||||
$response = [
|
|
||||||
'status' => null,
|
|
||||||
'success' => true,
|
|
||||||
'error' => false,
|
|
||||||
'message' => $message,
|
|
||||||
'data' => null,
|
|
||||||
'redirect' => route('offline-payments.settings.edit'),
|
|
||||||
];
|
|
||||||
|
|
||||||
flash($message)->success();
|
flash($message)->success();
|
||||||
|
|
||||||
return response()->json($response);
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
'error' => false,
|
||||||
|
'message' => $message,
|
||||||
|
'redirect' => route('offline-payments.settings.edit'),
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -132,31 +102,10 @@ class Settings extends Controller
|
|||||||
*/
|
*/
|
||||||
public function destroy(DRequest $request)
|
public function destroy(DRequest $request)
|
||||||
{
|
{
|
||||||
$code = $request->get('code');
|
$payment_method = $this->dispatch(new DeletePaymentMethod($request));
|
||||||
|
|
||||||
$methods = json_decode(setting('offline-payments.methods'), true);
|
$message = trans('messages.success.deleted', ['type' => $payment_method['name']]);
|
||||||
|
|
||||||
$remove = false;
|
|
||||||
|
|
||||||
foreach ($methods as $key => $method) {
|
|
||||||
if ($method['code'] != $code) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$remove = $methods[$key];
|
|
||||||
unset($methods[$key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set Api Token
|
|
||||||
setting()->set('offline-payments.methods', json_encode($methods));
|
|
||||||
|
|
||||||
setting()->save();
|
|
||||||
|
|
||||||
Modules::clearPaymentMethodsCache();
|
|
||||||
|
|
||||||
$message = trans('messages.success.deleted', ['type' => $remove['name']]);
|
|
||||||
|
|
||||||
// because it show notification.
|
|
||||||
//flash($message)->success();
|
//flash($message)->success();
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
|
49
modules/OfflinePayments/Jobs/CreatePaymentMethod.php
Normal file
49
modules/OfflinePayments/Jobs/CreatePaymentMethod.php
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\OfflinePayments\Jobs;
|
||||||
|
|
||||||
|
use App\Abstracts\Job;
|
||||||
|
use App\Utilities\Modules;
|
||||||
|
|
||||||
|
class CreatePaymentMethod extends Job
|
||||||
|
{
|
||||||
|
protected $request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new job instance.
|
||||||
|
*
|
||||||
|
* @param $request
|
||||||
|
*/
|
||||||
|
public function __construct($request)
|
||||||
|
{
|
||||||
|
$this->request = $this->getRequestInstance($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the job.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$methods = json_decode(setting('offline-payments.methods'), true);
|
||||||
|
|
||||||
|
$payment_method = [
|
||||||
|
'code' => 'offline-payments.' . $this->request->get('code') . '.' . (count($methods) + 1),
|
||||||
|
'name' => $this->request->get('name'),
|
||||||
|
'customer' => $this->request->get('customer'),
|
||||||
|
'order' => $this->request->get('order'),
|
||||||
|
'description' => $this->request->get('description'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$methods[] = $payment_method;
|
||||||
|
|
||||||
|
setting()->set('offline-payments.methods', json_encode($methods));
|
||||||
|
|
||||||
|
setting()->save();
|
||||||
|
|
||||||
|
Modules::clearPaymentMethodsCache();
|
||||||
|
|
||||||
|
return $payment_method;
|
||||||
|
}
|
||||||
|
}
|
53
modules/OfflinePayments/Jobs/DeletePaymentMethod.php
Normal file
53
modules/OfflinePayments/Jobs/DeletePaymentMethod.php
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\OfflinePayments\Jobs;
|
||||||
|
|
||||||
|
use App\Abstracts\Job;
|
||||||
|
use App\Utilities\Modules;
|
||||||
|
|
||||||
|
class DeletePaymentMethod extends Job
|
||||||
|
{
|
||||||
|
protected $request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new job instance.
|
||||||
|
*
|
||||||
|
* @param $request
|
||||||
|
*/
|
||||||
|
public function __construct($request)
|
||||||
|
{
|
||||||
|
$this->request = $this->getRequestInstance($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the job.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$methods = json_decode(setting('offline-payments.methods'), true);
|
||||||
|
|
||||||
|
$payment_method = [];
|
||||||
|
|
||||||
|
$code = $this->request->get('code');
|
||||||
|
|
||||||
|
foreach ($methods as $key => $method) {
|
||||||
|
if ($method['code'] != $code) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$payment_method = $methods[$key];
|
||||||
|
|
||||||
|
unset($methods[$key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
setting()->set('offline-payments.methods', json_encode($methods));
|
||||||
|
|
||||||
|
setting()->save();
|
||||||
|
|
||||||
|
Modules::clearPaymentMethodsCache();
|
||||||
|
|
||||||
|
return $payment_method;
|
||||||
|
}
|
||||||
|
}
|
61
modules/OfflinePayments/Jobs/UpdatePaymentMethod.php
Normal file
61
modules/OfflinePayments/Jobs/UpdatePaymentMethod.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\OfflinePayments\Jobs;
|
||||||
|
|
||||||
|
use App\Abstracts\Job;
|
||||||
|
use App\Utilities\Modules;
|
||||||
|
|
||||||
|
class UpdatePaymentMethod extends Job
|
||||||
|
{
|
||||||
|
protected $request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new job instance.
|
||||||
|
*
|
||||||
|
* @param $request
|
||||||
|
*/
|
||||||
|
public function __construct($request)
|
||||||
|
{
|
||||||
|
$this->request = $this->getRequestInstance($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the job.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$methods = json_decode(setting('offline-payments.methods'), true);
|
||||||
|
|
||||||
|
$payment_method = [];
|
||||||
|
|
||||||
|
$code = $this->request->get('update_code');
|
||||||
|
|
||||||
|
foreach ($methods as $key => $method) {
|
||||||
|
if ($method['code'] != $code) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$method = explode('.', $code);
|
||||||
|
|
||||||
|
$payment_method = [
|
||||||
|
'code' => 'offline-payments.' . $this->request->get('code') . '.' . $method[2],
|
||||||
|
'name' => $this->request->get('name'),
|
||||||
|
'customer' => $this->request->get('customer'),
|
||||||
|
'order' => $this->request->get('order'),
|
||||||
|
'description' => $this->request->get('description'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$methods[$key] = $payment_method;
|
||||||
|
}
|
||||||
|
|
||||||
|
setting()->set('offline-payments.methods', json_encode($methods));
|
||||||
|
|
||||||
|
setting()->save();
|
||||||
|
|
||||||
|
Modules::clearPaymentMethodsCache();
|
||||||
|
|
||||||
|
return $payment_method;
|
||||||
|
}
|
||||||
|
}
|
109
modules/OfflinePayments/Tests/Feature/SettingsTest.php
Normal file
109
modules/OfflinePayments/Tests/Feature/SettingsTest.php
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\OfflinePayments\Tests\Feature;
|
||||||
|
|
||||||
|
use Modules\OfflinePayments\Jobs\CreatePaymentMethod;
|
||||||
|
use Tests\Feature\FeatureTestCase;
|
||||||
|
|
||||||
|
class SettingsTest extends FeatureTestCase
|
||||||
|
{
|
||||||
|
public function testItShouldSeeOfflinePaymentsInSettingsListPage()
|
||||||
|
{
|
||||||
|
$this->loginAs()
|
||||||
|
->get(route('settings.index'))
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertSeeText(trans('offline-payments::general.description'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldSeeOfflinePaymentsSettingsListPage()
|
||||||
|
{
|
||||||
|
$this->loginAs()
|
||||||
|
->get(route('offline-payments.settings.edit'))
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertSeeText(trans('offline-payments::general.payment_gateways'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldSeeOfflinePaymentsSettingsCreatePage()
|
||||||
|
{
|
||||||
|
$this->loginAs()
|
||||||
|
->get(route('offline-payments.settings.edit'))
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertSeeText(trans('offline-payments::general.add_new'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldCreateOfflinePaymentsSettings()
|
||||||
|
{
|
||||||
|
$request = $this->getRequest();
|
||||||
|
|
||||||
|
$message = trans('messages.success.added', ['type' => $request['name']]);
|
||||||
|
|
||||||
|
$this->loginAs()
|
||||||
|
->post(route('offline-payments.settings.update'), $request)
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertJson([
|
||||||
|
'success' => true,
|
||||||
|
'message' => $message,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldSeeOfflinePaymentsSettingsUpdatePage()
|
||||||
|
{
|
||||||
|
$payment_method = $this->dispatch(new CreatePaymentMethod($this->getRequest()));
|
||||||
|
|
||||||
|
$this->loginAs()
|
||||||
|
->post(route('offline-payments.settings.get', ['code' => $payment_method['code']]))
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertJson([
|
||||||
|
'success' => true,
|
||||||
|
'data' => [
|
||||||
|
'name' => $payment_method['name'],
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldUpdateOfflinePaymentsSettings()
|
||||||
|
{
|
||||||
|
$request = $this->getRequest();
|
||||||
|
|
||||||
|
$payment_method = $this->dispatch(new CreatePaymentMethod($request));
|
||||||
|
|
||||||
|
$request['name'] = $this->faker->text(10);
|
||||||
|
$request['update_code'] = $payment_method['code'];
|
||||||
|
|
||||||
|
$message = trans('messages.success.updated', ['type' => $request['name']]);
|
||||||
|
|
||||||
|
$this->loginAs()
|
||||||
|
->post(route('offline-payments.settings.update'), $request)
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertJson([
|
||||||
|
'success' => true,
|
||||||
|
'message' => $message,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldDeleteAccount()
|
||||||
|
{
|
||||||
|
$payment_method = $this->dispatch(new CreatePaymentMethod($this->getRequest()));
|
||||||
|
|
||||||
|
$message = trans('messages.success.deleted', ['type' => $payment_method['name']]);
|
||||||
|
|
||||||
|
$this->loginAs()
|
||||||
|
->delete(route('offline-payments.settings.delete', ['code' => $payment_method['code']]))
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertJson([
|
||||||
|
'success' => true,
|
||||||
|
'message' => $message,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRequest()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => $this->faker->text(10),
|
||||||
|
'code' => 'offline-payments.cash.99',
|
||||||
|
'customer' => 1,
|
||||||
|
'order' => 1,
|
||||||
|
'description' => $this->faker->paragraph,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
45
modules/PaypalStandard/Tests/Feature/SettingsTest.php
Normal file
45
modules/PaypalStandard/Tests/Feature/SettingsTest.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\PaypalStandard\Tests\Feature;
|
||||||
|
|
||||||
|
use Tests\Feature\FeatureTestCase;
|
||||||
|
|
||||||
|
class SettingsTest extends FeatureTestCase
|
||||||
|
{
|
||||||
|
public function testItShouldSeePaypalStandardInSettingsListPage()
|
||||||
|
{
|
||||||
|
$this->loginAs()
|
||||||
|
->get(route('settings.index'))
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertSeeText(trans('paypal-standard::general.description'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldSeePaypalStandardSettingsUpdatePage()
|
||||||
|
{
|
||||||
|
$this->loginAs()
|
||||||
|
->get(route('settings.module.edit', ['alias' => 'paypal-standard']))
|
||||||
|
->assertStatus(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItShouldUpdatePaypalStandardSettings()
|
||||||
|
{
|
||||||
|
$this->loginAs()
|
||||||
|
->patch(route('settings.module.edit', ['alias' => 'paypal-standard']), $this->getRequest())
|
||||||
|
->assertStatus(200);
|
||||||
|
|
||||||
|
$this->assertFlashLevel('success');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRequest()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => $this->faker->name,
|
||||||
|
'email' => $this->faker->safeEmail,
|
||||||
|
'mode' => 'sandbox',
|
||||||
|
'transaction' => 'sale',
|
||||||
|
'customer' => 1,
|
||||||
|
'debug' => 1,
|
||||||
|
'order' => 1,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user