make a prefix to the copied cart rule ('copy of XXX') and properly save related channels and customer groups after replication

This commit is contained in:
Herbert Maschke 2020-06-03 09:24:40 +02:00
parent bac17a08fb
commit 6ee005dda0
4 changed files with 42 additions and 3 deletions

View File

@ -2,6 +2,7 @@
return array (
'save' => 'Speichern',
'copy-of' => 'Kopie von',
'create' => 'Erstellen',
'update' => 'Update',
'delete' => 'Löschen',

View File

@ -2,6 +2,7 @@
return [
'save' => 'Save',
'copy-of' => 'Copy of',
'create' => 'Create',
'update' => 'Update',
'delete' => 'Delete',

View File

@ -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,
]);

View File

@ -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');
}
}