workarea-package_products 3.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +20 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  4. data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. data/.gitignore +15 -0
  7. data/CHANGELOG.md +343 -0
  8. data/CODE_OF_CONDUCT.md +3 -0
  9. data/CONTRIBUTING.md +3 -0
  10. data/Gemfile +16 -0
  11. data/LICENSE +52 -0
  12. data/README.md +40 -0
  13. data/Rakefile +52 -0
  14. data/app/assets/javascripts/workarea/storefront/package_products/modules/family_product_add_to_cart.js +83 -0
  15. data/app/assets/javascripts/workarea/storefront/package_products/templates/family_add_to_cart_checkbox.jst.ejs +1 -0
  16. data/app/assets/stylesheets/workarea/admin/package_products/components/_product_cards.scss +7 -0
  17. data/app/assets/stylesheets/workarea/storefront/package_products/components/_product_detail_packaged_products.scss +11 -0
  18. data/app/controllers/workarea/admin/create_catalog_package_products_controller.rb +150 -0
  19. data/app/controllers/workarea/admin/create_catalog_products_controller.decorator +25 -0
  20. data/app/controllers/workarea/storefront/cart_items_controller.decorator +29 -0
  21. data/app/controllers/workarea/storefront/products_controller.decorator +8 -0
  22. data/app/models/workarea/catalog/product.decorator +44 -0
  23. data/app/models/workarea/search/admin/catalog_product.decorator +20 -0
  24. data/app/models/workarea/search/storefront/package_product.rb +40 -0
  25. data/app/queries/workarea/search/product_entries.decorator +8 -0
  26. data/app/seeds/workarea/package_product_seeds.rb +41 -0
  27. data/app/services/workarea/add_package_to_cart.rb +79 -0
  28. data/app/view_models/workarea/admin/product_view_model.decorator +35 -0
  29. data/app/view_models/workarea/storefront/product_templates/family_view_model.rb +6 -0
  30. data/app/view_models/workarea/storefront/product_templates/package_view_model.rb +33 -0
  31. data/app/view_models/workarea/storefront/product_view_model.decorator +13 -0
  32. data/app/views/workarea/admin/catalog_products/_create_package_button.html.haml +1 -0
  33. data/app/views/workarea/admin/catalog_products/_packaged_products_card.html.haml +26 -0
  34. data/app/views/workarea/admin/create_catalog_package_products/categorization.html.haml +64 -0
  35. data/app/views/workarea/admin/create_catalog_package_products/content.html.haml +54 -0
  36. data/app/views/workarea/admin/create_catalog_package_products/details.html.haml +87 -0
  37. data/app/views/workarea/admin/create_catalog_package_products/images.html.haml +57 -0
  38. data/app/views/workarea/admin/create_catalog_package_products/packaged_products.html.haml +79 -0
  39. data/app/views/workarea/admin/create_catalog_package_products/publish.html.haml +61 -0
  40. data/app/views/workarea/admin/create_catalog_package_products/setup.html.haml +68 -0
  41. data/app/views/workarea/admin/create_catalog_products/select.html.haml +34 -0
  42. data/app/views/workarea/storefront/cart_items/package.html.haml +59 -0
  43. data/app/views/workarea/storefront/products/package_show.html.haml +49 -0
  44. data/app/views/workarea/storefront/products/templates/_family.html.haml +42 -0
  45. data/app/views/workarea/storefront/products/templates/_package.html.haml +36 -0
  46. data/app/workers/workarea/update_package_products.rb +21 -0
  47. data/bin/rails +16 -0
  48. data/config/initializers/appends.rb +31 -0
  49. data/config/initializers/configuration.rb +6 -0
  50. data/config/initializers/seeds.rb +1 -0
  51. data/config/locales/en.yml +45 -0
  52. data/config/routes.rb +30 -0
  53. data/lib/tasks/sample_data.rake +16 -0
  54. data/lib/workarea/package_products.rb +10 -0
  55. data/lib/workarea/package_products/engine.rb +8 -0
  56. data/lib/workarea/package_products/version.rb +5 -0
  57. data/test/dummy/Rakefile +6 -0
  58. data/test/dummy/app/assets/config/manifest.js +4 -0
  59. data/test/dummy/app/assets/images/.keep +0 -0
  60. data/test/dummy/app/assets/javascripts/application.js +13 -0
  61. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  62. data/test/dummy/app/controllers/application_controller.rb +3 -0
  63. data/test/dummy/app/controllers/concerns/.keep +0 -0
  64. data/test/dummy/app/helpers/application_helper.rb +2 -0
  65. data/test/dummy/app/jobs/application_job.rb +2 -0
  66. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  67. data/test/dummy/app/models/concerns/.keep +0 -0
  68. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  69. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  70. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  71. data/test/dummy/bin/bundle +3 -0
  72. data/test/dummy/bin/rails +4 -0
  73. data/test/dummy/bin/rake +4 -0
  74. data/test/dummy/bin/setup +34 -0
  75. data/test/dummy/bin/update +29 -0
  76. data/test/dummy/config.ru +5 -0
  77. data/test/dummy/config/application.rb +18 -0
  78. data/test/dummy/config/boot.rb +5 -0
  79. data/test/dummy/config/cable.yml +9 -0
  80. data/test/dummy/config/environment.rb +5 -0
  81. data/test/dummy/config/environments/development.rb +54 -0
  82. data/test/dummy/config/environments/production.rb +83 -0
  83. data/test/dummy/config/environments/test.rb +43 -0
  84. data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
  85. data/test/dummy/config/initializers/assets.rb +11 -0
  86. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  87. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  88. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  89. data/test/dummy/config/initializers/inflections.rb +16 -0
  90. data/test/dummy/config/initializers/mime_types.rb +4 -0
  91. data/test/dummy/config/initializers/session_store.rb +3 -0
  92. data/test/dummy/config/initializers/workarea.rb +5 -0
  93. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  94. data/test/dummy/config/locales/en.yml +23 -0
  95. data/test/dummy/config/puma.rb +47 -0
  96. data/test/dummy/config/routes.rb +5 -0
  97. data/test/dummy/config/secrets.yml +22 -0
  98. data/test/dummy/db/seeds.rb +2 -0
  99. data/test/dummy/lib/assets/.keep +0 -0
  100. data/test/dummy/log/.keep +0 -0
  101. data/test/dummy/public/404.html +67 -0
  102. data/test/dummy/public/422.html +67 -0
  103. data/test/dummy/public/500.html +66 -0
  104. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  105. data/test/dummy/public/apple-touch-icon.png +0 -0
  106. data/test/dummy/public/favicon.ico +1 -0
  107. data/test/integration/workarea/admin/create_catalog_package_products_integration_test.rb +139 -0
  108. data/test/integration/workarea/storefront/package_cart_items_integration_test.rb +47 -0
  109. data/test/integration/workarea/storefront/products_integration_test.decorator +19 -0
  110. data/test/models/workarea/catalog/package_product_test.rb +68 -0
  111. data/test/models/workarea/search/storefront/package_product_test.rb +44 -0
  112. data/test/queries/workarea/search/product_entries_test.decorator +15 -0
  113. data/test/services/workarea/add_package_to_cart_test.rb +46 -0
  114. data/test/system/workarea/admin/activity_system_test.decorator +53 -0
  115. data/test/system/workarea/admin/package_product_copy_system_test.rb +27 -0
  116. data/test/system/workarea/admin/package_products_system_test.rb +101 -0
  117. data/test/system/workarea/admin/product_copy_system_test.decorator +28 -0
  118. data/test/system/workarea/admin/products_system_test.decorator +69 -0
  119. data/test/system/workarea/storefront/categories_with_packages_system_test.rb +172 -0
  120. data/test/system/workarea/storefront/family_product_system_test.rb +58 -0
  121. data/test/system/workarea/storefront/package_product_system_test.rb +42 -0
  122. data/test/test_helper.rb +10 -0
  123. data/test/view_models/workarea/admin/package_product_view_model_test.rb +41 -0
  124. data/test/view_models/workarea/storefront/package_product_view_model_test.rb +27 -0
  125. data/test/view_models/workarea/storefront/package_templates/package_view_model_test.rb +34 -0
  126. data/test/workers/workarea/update_package_products_test.rb +27 -0
  127. data/workarea-package_products.gemspec +24 -0
  128. metadata +189 -0
@@ -0,0 +1,47 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Storefront
5
+ class PackageCartItemsIntegrationTest < Workarea::IntegrationTest
6
+ include Storefront::IntegrationTest
7
+
8
+ def test_package
9
+ dwoos_product = create_product(variants: [{ sku: 'DWOOS1' }])
10
+ create_inventory(
11
+ id: dwoos_product.skus.first,
12
+ policy: 'displayable_when_out_of_stock',
13
+ available: 0
14
+ )
15
+ standard_product = create_product
16
+ create_inventory(id: standard_product.skus.first)
17
+ family_product = create_product(
18
+ template: 'family',
19
+ product_ids: [dwoos_product.id, standard_product.id]
20
+ )
21
+ dwoos_sku = dwoos_product.skus.first
22
+ standard_sku = standard_product.skus.first
23
+
24
+ post storefront.package_cart_items_path, params: {
25
+ product_id: family_product.id,
26
+ items: {
27
+ '0' => {
28
+ product_id: dwoos_product.id,
29
+ sku: dwoos_sku,
30
+ quantity: 1
31
+ },
32
+ '1' => {
33
+ product_id: standard_product.id,
34
+ sku: standard_sku,
35
+ quantity: 1
36
+ }
37
+ }
38
+ }
39
+ skus_in_cart = Order.last.items.map(&:sku)
40
+
41
+ assert_response(:success)
42
+ assert_includes(skus_in_cart, standard_sku)
43
+ refute_includes(skus_in_cart, dwoos_sku)
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,19 @@
1
+ module Workarea
2
+ decorate Storefront::ProductsIntegrationTest, with: :package_products do
3
+ def test_rendering_via_params
4
+ category = create_category
5
+ product = create_product(product_ids: [create_product.id])
6
+
7
+ Workarea.config.product_templates.each do |template|
8
+ next if template == :test_product
9
+ product.update_attributes!(template: template)
10
+
11
+ get storefront.product_path(product, via: category.to_gid_param)
12
+ assert_select(
13
+ 'form.product-details__add-to-cart-form input[name="via"][value=?]',
14
+ category.to_gid_param
15
+ )
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,68 @@
1
+ require 'test_helper'
2
+ module Workarea
3
+ module Catalog
4
+ # TODO: change to ProductTest decorator after base test is converted
5
+ class PackageProductTest < TestCase
6
+ setup :set_products
7
+
8
+ def set_products
9
+ @product_one = create_product(id: 'PROD1', variants: [{ sku: 'SKU1' }, { sku: 'SKU2' }])
10
+ @product_two = create_product(id: 'PROD2', variants: [{ sku: 'SKU3' }])
11
+ @product_three = create_product(id: 'PROD3', variants: [{ sku: 'SKU4' }])
12
+ @package = create_product(id: 'PACK', template: 'package', product_ids: %w(PROD1 PROD2), variants: [])
13
+ end
14
+
15
+ def test_validations
16
+ @package.product_ids << ''
17
+ assert_equal(3, @package.product_ids.count)
18
+ @package.save
19
+
20
+ assert_equal(2, @package.product_ids.count)
21
+ assert_equal(%w(PROD1 PROD2), @package.product_ids)
22
+ end
23
+
24
+ def test_find_for_update_by_sku
25
+ results = Product.find_for_update_by_sku('SKU4')
26
+ assert_equal([@product_three], results)
27
+
28
+ results = Product.find_for_update_by_sku('SKU1')
29
+ assert_equal([@product_one, @package], results)
30
+ end
31
+
32
+ def test_packages_containing
33
+ results = Product.packages_containing('PROD1')
34
+ assert_equal([@package], results)
35
+ end
36
+
37
+ def test_package?
38
+ @product_one.template = 'package'
39
+ assert(@product_one.package?)
40
+
41
+ @product_one.template = 'generic'
42
+ @product_one.product_ids = [1, 2]
43
+ assert(@product_one.package?)
44
+
45
+ @product_one.product_ids = []
46
+ refute(@product_one.package?)
47
+ end
48
+
49
+ def test_family?
50
+ @product_one.template = 'family'
51
+ assert(@product_one.family?)
52
+ end
53
+
54
+ def test_active?
55
+ @product_one.active = true
56
+ @product_one.variants.clear
57
+
58
+ refute(@product_one.active?)
59
+
60
+ @product_one.active = true
61
+ @product_one.product_ids = [1, 2]
62
+ @product_one.variants.clear
63
+
64
+ assert(@product_one.active?)
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,44 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Search
5
+ class Storefront
6
+ class PackageProductTest < TestCase
7
+ def packaged_products
8
+ @packaged_products ||= [
9
+ create_product(variants: [{ sku: 'SKU1' }]),
10
+ create_product(variants: [{ sku: 'SKU2' }]),
11
+ create_product(variants: [{ sku: 'SKU3' }])
12
+ ]
13
+ end
14
+
15
+ def product
16
+ @product ||= Catalog::Product.new(
17
+ product_ids: packaged_products.map(&:id)
18
+ )
19
+ end
20
+
21
+ def search_model
22
+ @search_model ||= PackageProduct.new(product)
23
+ end
24
+
25
+ def test_skus
26
+ assert_equal(3, search_model.skus.length)
27
+ assert_includes(search_model.skus, 'SKU1')
28
+ assert_includes(search_model.skus, 'SKU2')
29
+ assert_includes(search_model.skus, 'SKU3')
30
+ end
31
+
32
+ def test_variant_count
33
+ assert_equal(3, search_model.variant_count)
34
+ end
35
+
36
+ def test_packaged_products_handles_nonexistent_ids
37
+ product.product_ids << 'foo'
38
+
39
+ assert_equal(3, search_model.send(:packaged_products).size)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,15 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ decorate Search::ProductEntriesTest, with: :package_products do
5
+ def test_package_product_entries
6
+ products = Array.new(2) { create_product }
7
+ products.first.product_ids = ['ABC', '123']
8
+
9
+ entries = Search::ProductEntries.new(products).entries
10
+ assert_equal(2, entries.size)
11
+ assert_equal(Search::Storefront::PackageProduct, entries.first.class)
12
+ assert_equal(Search::Storefront::Product, entries.last.class)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,46 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ class AddPackageToCartTest < TestCase
5
+ setup :set_products
6
+
7
+ def set_products
8
+ @products = [
9
+ create_product(
10
+ id: 'PROD1',
11
+ variants: [{ sku: 'SKU1', regular: 5.00 }]
12
+ ),
13
+ create_product(
14
+ id: 'PROD2',
15
+ variants: [{ sku: 'SKU2', regular: 10.00 }]
16
+ )
17
+ ]
18
+ end
19
+
20
+ def params
21
+ @params ||= ActionController::Parameters.new(
22
+ items: {
23
+ 1 => { product_id: 'PROD1', sku: 'SKU1', quantity: 2 },
24
+ 2 => { product_id: 'PROD2', sku: 'SKU2', quantity: 1 }
25
+ }
26
+ )
27
+ end
28
+
29
+ def test_save
30
+ order = create_order
31
+
32
+ add_to_cart = AddPackageToCart.new(order, params)
33
+
34
+ result = add_to_cart.save
35
+ order.reload
36
+
37
+ assert(result)
38
+ assert_equal(2, order.items.count)
39
+
40
+ item = order.items.first
41
+ assert_equal('PROD1', item.product_id)
42
+ assert_equal('SKU1', item.sku)
43
+ assert_equal(2, item.quantity)
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,53 @@
1
+ module Workarea
2
+ decorate Admin::ActivitySystemTest do
3
+ def test_shows_a_filterable_list_of_activity_in_the_admin
4
+ visit admin.create_catalog_products_path
5
+ click_button t('workarea.admin.create_catalog_products.select.button')
6
+ fill_in 'product[name]', with: 'Testing Product'
7
+ click_button 'save_setup'
8
+
9
+ visit admin.create_releases_path
10
+ fill_in 'release[name]', with: 'Foo'
11
+ click_button 'save_setup'
12
+
13
+ visit admin.activity_path
14
+ assert(page.has_content?('Ben Crouse'))
15
+ assert(
16
+ page.has_content?(
17
+ t(
18
+ 'workarea.admin.activities.catalog_product_create_html',
19
+ name: 'Testing Product'
20
+ )
21
+ )
22
+ )
23
+ assert(
24
+ page.has_content?(
25
+ t(
26
+ 'workarea.admin.activities.release_create_html',
27
+ name: 'Foo'
28
+ )
29
+ )
30
+ )
31
+ select 'release', from: 'type'
32
+ page.execute_script("$('#activity_form').submit()") # because autosubmit control
33
+
34
+ assert(
35
+ page.has_no_content?(
36
+ t(
37
+ 'workarea.admin.activities.catalog_product_create_html',
38
+ name: 'Testing Product'
39
+ )
40
+ )
41
+ )
42
+ assert(page.has_content?('Ben Crouse'))
43
+ assert(
44
+ page.has_content?(
45
+ t(
46
+ 'workarea.admin.activities.release_create_html',
47
+ name: 'Foo'
48
+ )
49
+ )
50
+ )
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Admin
5
+ class PackageProductCopySystemTest < Workarea::SystemTest
6
+ include Admin::IntegrationTest
7
+
8
+ def test_copy_package_product
9
+ product = create_product(template: 'package')
10
+
11
+ visit admin.catalog_product_path(product)
12
+ click_link t('workarea.admin.catalog_products.show.copy_product')
13
+
14
+ fill_in 'product[id]', with: 'FOOBAR'
15
+
16
+ click_button 'create_copy'
17
+ assert(page.has_content?('Success'))
18
+ assert_current_path(
19
+ admin.edit_create_catalog_package_product_path(
20
+ "#{product.slug}-1",
21
+ continue: true
22
+ )
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,101 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Admin
5
+ class PackageProductsSystemTest < Workarea::SystemTest
6
+ include Admin::IntegrationTest
7
+
8
+ def test_adding_packaged_products
9
+ create_product(name: 'Foo')
10
+ create_product(name: 'Bar')
11
+ product = create_product(template: 'package')
12
+ visit admin.catalog_product_path(product)
13
+
14
+ click_link t('workarea.admin.catalog_products.cards.packaged_products.title')
15
+ assert(page.has_content?('Foo'))
16
+ assert(page.has_content?('Bar'))
17
+
18
+ click_link 'Foo'
19
+ assert(page.has_content?('Success'))
20
+ assert(page.has_selector?('.product-summary__remove'))
21
+ click_link t('workarea.admin.featured_products.select.sort_link')
22
+
23
+ assert(page.has_content?('Foo'))
24
+ assert(page.has_no_content?('Bar'))
25
+ click_link t('workarea.admin.featured_products.edit.browse_link')
26
+
27
+ assert(page.has_selector?('.product-summary__remove'))
28
+ click_link 'Foo'
29
+ assert(page.has_content?('Success'))
30
+ assert(page.has_no_selector?('.product-summary__remove'))
31
+ click_link t('workarea.admin.featured_products.select.sort_link')
32
+
33
+ assert(page.has_no_content?('Foo'))
34
+ assert(page.has_no_content?('Bar'))
35
+ end
36
+
37
+ def test_creating_a_package_product
38
+ create_category(name: 'Test Category')
39
+ create_product(name: 'Foo')
40
+ create_product(name: 'Bar')
41
+
42
+ visit admin.catalog_products_path
43
+
44
+ click_link 'Add New Product'
45
+
46
+ choose 'product_type_package'
47
+ click_button 'select_product_type'
48
+
49
+ fill_in 'product[name]', with: 'Test Package'
50
+ click_button 'save_setup'
51
+
52
+ assert(page.has_content?('Success'))
53
+ assert(page.has_content?(t('workarea.admin.create_catalog_package_products.packaged_products.title', product_name: 'Test Package')))
54
+
55
+ click_link('Foo')
56
+ assert(page.has_content?('Success'))
57
+ click_link('Bar')
58
+ assert(page.has_content?('Success'))
59
+
60
+ click_link(t('workarea.admin.create_catalog_package_products.packaged_products.continue_to_images'))
61
+ assert(page.has_content?(t('workarea.admin.create_catalog_products.images.add_images', product_name: 'Test Package')))
62
+
63
+ attach_file 'images[][image]', product_image_file_path
64
+ click_button 'save_images'
65
+
66
+ assert(page.has_content?('Success'))
67
+ assert(page.has_content?(t('workarea.admin.create_catalog_products.details.add_details', product_name: 'Test Package')))
68
+ click_button 'save_details'
69
+
70
+ assert(page.has_content?('Success'))
71
+ assert(page.has_content?(t('workarea.admin.create_catalog_products.content.add_content', product_name: 'Test Package')))
72
+
73
+ page.execute_script(<<-js
74
+ $("body", $("iframe.wysihtml-sandbox").contents())
75
+ .text("Description")
76
+ js
77
+ )
78
+
79
+ click_button 'save_content'
80
+
81
+ assert(page.has_content?('Success'))
82
+ assert(page.has_content?(t('workarea.admin.create_catalog_products.categorization.categorize', product_name: 'Test Package')))
83
+
84
+ find('.select2-selection--multiple').click
85
+ assert(page.has_content?('Test Category'))
86
+ find('.select2-results__option', text: 'Test Category').click
87
+
88
+ click_button 'add_categories'
89
+ assert(page.has_content?('Success'))
90
+ assert(page.has_content?('Test Category'))
91
+ click_link t('workarea.admin.create_catalog_products.categorization.continue_to_publish')
92
+
93
+ assert(page.has_content?(t('workarea.admin.create_catalog_products.publish.when_does_it_go_live', product_name: 'Test Package')))
94
+ click_button 'publish'
95
+
96
+ assert(page.has_content?('Success'))
97
+ assert(page.has_content?(t('workarea.admin.catalog_products.cards.packaged_products.title')))
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ decorate Admin::ProductCopySystemTest, with: :package_products do
5
+ def test_copy_from_create_workflow
6
+ create_product(name: 'Original Product')
7
+
8
+ visit admin.create_catalog_products_path
9
+ click_button t('workarea.admin.create_catalog_products.select.button')
10
+
11
+ click_link t('workarea.admin.create_catalog_products.setup.copy_button')
12
+
13
+ find('.select2-selection--single').click
14
+ find('.select2-results__option', text: 'Original Product').click
15
+
16
+ fill_in 'product[id]', with: 'FOOBAR'
17
+
18
+ click_button 'create_copy'
19
+ assert(page.has_content?('Success'))
20
+ assert_current_path(
21
+ admin.edit_create_catalog_product_path(
22
+ 'original-product-1',
23
+ continue: true
24
+ )
25
+ )
26
+ end
27
+ end
28
+ end