diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php index 11c4a4026..43bea0b2b 100755 --- a/packages/Webkul/Admin/src/Resources/lang/de/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -2,6 +2,7 @@ return array ( 'save' => 'Speichern', + 'copy-of' => 'Kopie von', 'create' => 'Erstellen', 'update' => 'Update', 'delete' => 'Löschen', diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 3836352aa..91b4f9852 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -2,6 +2,7 @@ return [ 'save' => 'Save', + 'copy-of' => 'Copy of', 'create' => 'Create', 'update' => 'Update', 'delete' => 'Delete', diff --git a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php index daaeeb0e9..bf2fa96c6 100644 --- a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php +++ b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php @@ -85,10 +85,21 @@ class CartRuleController extends Controller $copiedCartRule = $originalCartRule ->replicate() - ->fill(['status' => 0]); + ->fill([ + 'status' => 0, + 'name' => __('admin::app.copy-of') . ' ' . $originalCartRule->name, + ]); $copiedCartRule->save(); + foreach($copiedCartRule->channels as $channel) { + $copiedCartRule->channels()->save($channel); + } + + foreach($copiedCartRule->customer_groups as $group) { + $copiedCartRule->customer_groups()->save($group); + } + return view($this->_config['view'], [ 'cartRule' => $copiedCartRule, ]); diff --git a/tests/functional/CartRule/CartRuleCopyCest.php b/tests/functional/CartRule/CartRuleCopyCest.php index 5b0a08301..7b6c5281d 100644 --- a/tests/functional/CartRule/CartRuleCopyCest.php +++ b/tests/functional/CartRule/CartRuleCopyCest.php @@ -3,6 +3,7 @@ namespace Tests\Functional\CartRule; use FunctionalTester; +use Illuminate\Support\Facades\DB; use Webkul\CartRule\Models\CartRule; class CartRuleCopyCest @@ -16,19 +17,44 @@ class CartRuleCopyCest 'status' => 1, ]); - $count = count(cartRule::all()); + DB::table('cart_rule_channels')->insert([ + 'cart_rule_id' => $original->id, + 'channel_id' => 1, + ]); + + DB::table('cart_rule_customer_groups')->insert([ + 'cart_rule_id' => $original->id, + 'customer_group_id' => 1, + ]); + + $count = count(CartRule::all()); $I->amOnAdminRoute('admin.cart-rules.copy', ['id' => $original->id]); $I->seeRecord(CartRule::class, [ 'id' => $original->id + 1, 'status' => 0, - 'name' => $original->name, + 'name' => 'Copy of ' . $original->name, ]); $I->assertCount($count + 1, CartRule::all()); + $I->assertEquals( + DB::table('cart_rule_channels') + ->pluck('cart_rule_id', 'channel_id') + ->toArray(), + [1 => $original->id + 1] + ); + + $I->assertEquals( + DB::table('cart_rule_customer_groups') + ->pluck('cart_rule_id', 'customer_group_id') + ->toArray(), + [1 => $original->id + 1] + ); + $I->seeResponseCodeIsSuccessful(); + $I->seeCurrentRouteIs('admin.cart-rules.copy'); } }