tests for offline payments and paypal standard
This commit is contained in:
		| @@ -3,11 +3,13 @@ | ||||
| namespace Modules\OfflinePayments\Http\Controllers; | ||||
|  | ||||
| use App\Abstracts\Http\Controller; | ||||
| use App\Utilities\Modules; | ||||
| use Illuminate\Http\Response; | ||||
| use Modules\OfflinePayments\Http\Requests\Setting as Request; | ||||
| use Modules\OfflinePayments\Http\Requests\SettingGet as GRequest; | ||||
| 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 | ||||
| { | ||||
| @@ -32,56 +34,24 @@ class Settings extends Controller | ||||
|      */ | ||||
|     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))) { | ||||
|             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']]); | ||||
|             $message = trans('messages.success.updated', ['type' => $payment_method['name']]); | ||||
|         } else { | ||||
|             $methods[] = [ | ||||
|                 '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'), | ||||
|             ]; | ||||
|             $payment_method = $this->dispatch(new CreatePaymentMethod($request)); | ||||
|  | ||||
|             $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(); | ||||
|  | ||||
|         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) | ||||
|     { | ||||
|         $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(); | ||||
|  | ||||
|         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, | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user