workarea-testing 3.4.12
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.
- checksums.yaml +7 -0
- data/LICENSE +52 -0
- data/README.md +19 -0
- data/app/assets/javascripts/workarea/admin/spec_helper.js +1 -0
- data/app/assets/javascripts/workarea/core/feature_test_helper.js +15 -0
- data/app/assets/javascripts/workarea/core/spec_helper.js +45 -0
- data/app/assets/javascripts/workarea/storefront/spec_helper.js +2 -0
- data/app/assets/stylesheets/workarea/admin/_feature_test_helper.scss +16 -0
- data/app/assets/stylesheets/workarea/core/_feature_test_helper.scss +8 -0
- data/lib/workarea/admin/integration_test.rb +15 -0
- data/lib/workarea/core/discount_condition_tests.rb +100 -0
- data/lib/workarea/core/featured_products_test.rb +30 -0
- data/lib/workarea/core/navigable_test.rb +68 -0
- data/lib/workarea/generator_test.rb +5 -0
- data/lib/workarea/integration_test.rb +45 -0
- data/lib/workarea/performance_test.rb +135 -0
- data/lib/workarea/storefront/breakpoint_helpers.rb +27 -0
- data/lib/workarea/storefront/catalog_customization_test_class.rb +28 -0
- data/lib/workarea/storefront/integration_test.rb +82 -0
- data/lib/workarea/storefront/pagination_view_model_test.rb +56 -0
- data/lib/workarea/storefront/product_browsing_view_model_test.rb +38 -0
- data/lib/workarea/storefront/system_test.rb +142 -0
- data/lib/workarea/system_test.rb +161 -0
- data/lib/workarea/test_case.rb +197 -0
- data/lib/workarea/test_help.rb +67 -0
- data/lib/workarea/testing/cassette_persister.rb +40 -0
- data/lib/workarea/testing/custom_capybara_matchers.rb +18 -0
- data/lib/workarea/testing/decoration_reporter.rb +37 -0
- data/lib/workarea/testing/deferred_garbage_collection.rb +21 -0
- data/lib/workarea/testing/elasticsearch_response.json +1 -0
- data/lib/workarea/testing/engine.rb +6 -0
- data/lib/workarea/testing/example_document.pdf +0 -0
- data/lib/workarea/testing/factories/bulk_action.rb +17 -0
- data/lib/workarea/testing/factories/catalog.rb +66 -0
- data/lib/workarea/testing/factories/comment.rb +12 -0
- data/lib/workarea/testing/factories/content.rb +38 -0
- data/lib/workarea/testing/factories/data_file.rb +21 -0
- data/lib/workarea/testing/factories/fulfillment.rb +21 -0
- data/lib/workarea/testing/factories/insights.rb +32 -0
- data/lib/workarea/testing/factories/metrics.rb +25 -0
- data/lib/workarea/testing/factories/navigation.rb +30 -0
- data/lib/workarea/testing/factories/order.rb +77 -0
- data/lib/workarea/testing/factories/payment.rb +37 -0
- data/lib/workarea/testing/factories/performance/catalog.rb +92 -0
- data/lib/workarea/testing/factories/pricing.rb +59 -0
- data/lib/workarea/testing/factories/recommendation.rb +17 -0
- data/lib/workarea/testing/factories/search.rb +72 -0
- data/lib/workarea/testing/factories/user.rb +24 -0
- data/lib/workarea/testing/factories.rb +146 -0
- data/lib/workarea/testing/factory_configuration.rb +90 -0
- data/lib/workarea/testing/indexes.rb +22 -0
- data/lib/workarea/testing/locale_routing_fixes.rb +33 -0
- data/lib/workarea/testing/product_image.jpg +0 -0
- data/lib/workarea/testing/teaspoon.rb +186 -0
- data/lib/workarea/testing/user_avatar.jpg +0 -0
- data/lib/workarea/testing/warning_suppressor.rb +59 -0
- data/lib/workarea/view_test.rb +40 -0
- data/workarea-testing.gemspec +29 -0
- metadata +240 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Content
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_asset(overrides = {})
|
7
|
+
attributes = factory_defaults(:asset).merge(overrides)
|
8
|
+
Workarea::Content::Asset.create!(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_content(overrides = {})
|
12
|
+
attributes = factory_defaults(:content).merge(overrides)
|
13
|
+
Workarea::Content.create!(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_page(overrides = {})
|
17
|
+
attributes = factory_defaults(:page).merge(overrides)
|
18
|
+
Workarea::Content::Page.create!(attributes)
|
19
|
+
end
|
20
|
+
|
21
|
+
def pdf_file_path
|
22
|
+
Factories::Content.pdf_file_path
|
23
|
+
end
|
24
|
+
|
25
|
+
def pdf_file
|
26
|
+
Factories::Content.pdf_file
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.pdf_file_path
|
30
|
+
Testing::Engine.root.join('lib', 'workarea', 'testing', 'example_document.pdf')
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.pdf_file
|
34
|
+
IO.read(pdf_file_path)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module DataFile
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_import(overrides = {})
|
7
|
+
attributes = factory_defaults(:import).merge(overrides)
|
8
|
+
Workarea::DataFile::Import.create!(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_export(overrides = {})
|
12
|
+
attributes = factory_defaults(:export).merge(overrides)
|
13
|
+
Workarea::DataFile::Export.create!(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def tax_rates_csv_path
|
17
|
+
"#{Core::Engine.root}/test/fixtures/tax_rates.csv"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Fulfillment
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def fulfill_order(order)
|
7
|
+
fulfillment = Fulfillment.find(order.id) rescue nil
|
8
|
+
fulfillment ||= create_fulfillment_from_order(order)
|
9
|
+
fulfillment.ship_items(
|
10
|
+
'1z1243',
|
11
|
+
order.items.map { |i| { id: i.id, quantity: i.quantity } }
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_fulfillment_from_order(order)
|
16
|
+
create = CreateFulfillment.new(order).tap(&:perform)
|
17
|
+
create.fulfillment
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Insights
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_hot_products(overrides = {})
|
7
|
+
attributes = factory_defaults(:hot_products).merge(overrides)
|
8
|
+
Workarea::Insights::HotProducts.create!(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_cold_products(overrides = {})
|
12
|
+
attributes = factory_defaults(:cold_products).merge(overrides)
|
13
|
+
Workarea::Insights::ColdProducts.create!(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_top_products(overrides = {})
|
17
|
+
attributes = factory_defaults(:top_products).merge(overrides)
|
18
|
+
Workarea::Insights::TopProducts.create!(attributes)
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_trending_products(overrides = {})
|
22
|
+
attributes = factory_defaults(:trending_products).merge(overrides)
|
23
|
+
Workarea::Insights::TrendingProducts.create!(attributes)
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_top_discounts(overrides = {})
|
27
|
+
attributes = factory_defaults(:top_discounts).merge(overrides)
|
28
|
+
Workarea::Insights::TopDiscounts.create!(attributes)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Metrics
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
mattr_accessor :product_by_week_count, :search_by_week_count
|
7
|
+
self.product_by_week_count = 0
|
8
|
+
self.search_by_week_count = 0
|
9
|
+
|
10
|
+
def create_product_by_week(overrides = {})
|
11
|
+
attributes = factory_defaults(:insights_product_by_week).merge(overrides)
|
12
|
+
Workarea::Metrics::ProductByWeek.create!(attributes).tap do
|
13
|
+
Factories::Metrics.product_by_week_count += 1
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_search_by_week(overrides = {})
|
18
|
+
attributes = factory_defaults(:insights_search_by_week).merge(overrides)
|
19
|
+
Workarea::Metrics::SearchByWeek.create!(attributes).tap do
|
20
|
+
Factories::Metrics.search_by_week_count += 1
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Navigation
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_taxon(overrides = {})
|
7
|
+
attributes = factory_defaults(:taxon).merge(overrides)
|
8
|
+
Workarea::Navigation::Taxon.create!(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_redirect(overrides = {})
|
12
|
+
attributes = factory_defaults(:redirect).merge(overrides)
|
13
|
+
Workarea::Navigation::Redirect.create!(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_menu(overrides = {})
|
17
|
+
attributes = factory_defaults(:menu).merge(overrides)
|
18
|
+
Workarea::Navigation::Menu.create!(attributes)
|
19
|
+
end
|
20
|
+
|
21
|
+
def redirects_csv_path
|
22
|
+
"#{Core::Engine.root}/test/fixtures/redirects.csv"
|
23
|
+
end
|
24
|
+
|
25
|
+
def redirects_fail_csv_path
|
26
|
+
"#{Core::Engine.root}/test/fixtures/redirects_fail.csv"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Order
|
4
|
+
class UnplacedOrderError < RuntimeError; end
|
5
|
+
|
6
|
+
Factories.add(self)
|
7
|
+
|
8
|
+
def create_order(overrides = {})
|
9
|
+
attributes = factory_defaults(:order).merge(overrides)
|
10
|
+
Workarea::Order.new(attributes).tap(&:save!)
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_placed_order(overrides = {})
|
14
|
+
attributes = factory_defaults(:placed_order).merge(overrides)
|
15
|
+
|
16
|
+
shipping_service = create_shipping_service
|
17
|
+
sku = 'SKU'
|
18
|
+
create_product(variants: [{ sku: sku, regular: 5.to_m }])
|
19
|
+
details = OrderItemDetails.find(sku)
|
20
|
+
order = Workarea::Order.new(attributes)
|
21
|
+
item = { sku: sku, quantity: 2 }.merge(details.to_h)
|
22
|
+
|
23
|
+
order.add_item(item)
|
24
|
+
|
25
|
+
checkout = Checkout.new(order)
|
26
|
+
checkout.update(
|
27
|
+
factory_defaults(:checkout_payment).merge(
|
28
|
+
shipping_address: factory_defaults(:shipping_address),
|
29
|
+
billing_address: factory_defaults(:billing_address),
|
30
|
+
shipping_service: shipping_service.name,
|
31
|
+
)
|
32
|
+
)
|
33
|
+
|
34
|
+
unless checkout.place_order
|
35
|
+
raise(
|
36
|
+
UnplacedOrderError,
|
37
|
+
'failed placing the order in the create_placed_order factory'
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
forced_attrs = overrides.slice(:placed_at, :update_at, :total_price)
|
42
|
+
order.update_attributes!(forced_attrs)
|
43
|
+
order
|
44
|
+
end
|
45
|
+
|
46
|
+
def complete_checkout(order, options = {})
|
47
|
+
shipping_address =
|
48
|
+
factory_defaults(:shipping_address).merge(options[:shipping_address] || {})
|
49
|
+
|
50
|
+
billing_address =
|
51
|
+
factory_defaults(:billing_address).merge(options[:billing_address] || {})
|
52
|
+
|
53
|
+
payment = factory_defaults(:checkout_payment).tap do |payment|
|
54
|
+
payment[:credit_card].merge(options[:credit_card] || {})
|
55
|
+
end
|
56
|
+
|
57
|
+
shipping_service = options[:shipping_service].presence ||
|
58
|
+
create_shipping_service.name
|
59
|
+
|
60
|
+
order.items.each do |item|
|
61
|
+
item.update_attributes!(OrderItemDetails.find!(item.sku).to_h)
|
62
|
+
end
|
63
|
+
|
64
|
+
checkout = Checkout.new(order)
|
65
|
+
checkout.update(
|
66
|
+
payment.merge(
|
67
|
+
shipping_address: shipping_address,
|
68
|
+
billing_address: billing_address,
|
69
|
+
shipping_service: shipping_service,
|
70
|
+
)
|
71
|
+
)
|
72
|
+
|
73
|
+
checkout.place_order
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Payment
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_payment(overrides = {})
|
7
|
+
attributes = factory_defaults(:payment).merge(overrides)
|
8
|
+
Workarea::Payment.create!(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_payment_profile(overrides = {})
|
12
|
+
attributes = factory_defaults(:payment_profile).merge(overrides)
|
13
|
+
Workarea::Payment::Profile.create!(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_saved_credit_card(overrides = {})
|
17
|
+
attributes = factory_defaults(:saved_credit_card).merge(overrides)
|
18
|
+
Workarea::Payment::SavedCreditCard.create!(attributes)
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_transaction(overrides = {})
|
22
|
+
attributes = factory_defaults(:transaction).merge(overrides)
|
23
|
+
Workarea::Payment::Transaction.create!(attributes)
|
24
|
+
end
|
25
|
+
|
26
|
+
def capture_order(order)
|
27
|
+
payment = Workarea::Payment.find(order.id)
|
28
|
+
capture = Workarea::Payment::Capture.new(
|
29
|
+
payment: payment,
|
30
|
+
amounts: payment.tenders.reduce({}) { |m, t| m.merge(t.id => t.capturable_amount) }
|
31
|
+
)
|
32
|
+
|
33
|
+
capture.complete!
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Performance
|
4
|
+
module Catalog
|
5
|
+
Factories.add(self)
|
6
|
+
|
7
|
+
def create_complex_variant
|
8
|
+
@sku_counter ||= 0
|
9
|
+
|
10
|
+
details =
|
11
|
+
if @sku_counter < variant_details.length
|
12
|
+
variant_details[@sku_counter]
|
13
|
+
else
|
14
|
+
variant_details[@sku_counter % variant_details.length]
|
15
|
+
end
|
16
|
+
|
17
|
+
@sku_counter += 1
|
18
|
+
|
19
|
+
attributes = {
|
20
|
+
sku: "sku#{@sku_counter}",
|
21
|
+
details: details
|
22
|
+
}
|
23
|
+
|
24
|
+
create_pricing_sku(
|
25
|
+
id: attributes[:sku],
|
26
|
+
msrp: (rand * 215.0).round(2),
|
27
|
+
prices: [
|
28
|
+
{ regular: (rand * 101.1).round(2), sale: (rand * 98.6).round(2), min_quantity: 1 },
|
29
|
+
{ regular: (rand * 101.1).round(2), sale: (rand * 98.6).round(2), min_quantity: 2 },
|
30
|
+
{ regular: (rand * 101.1).round(2), sale: (rand * 98.6).round(2), min_quantity: 5 }
|
31
|
+
]
|
32
|
+
)
|
33
|
+
|
34
|
+
create_inventory(
|
35
|
+
id: attributes[:sku],
|
36
|
+
policy: 'standard',
|
37
|
+
available: (rand * 100).round + 10,
|
38
|
+
reserve: (rand * 5).round
|
39
|
+
)
|
40
|
+
|
41
|
+
Workarea::Catalog::Variant.new(attributes)
|
42
|
+
end
|
43
|
+
|
44
|
+
def create_complex_product(overrides = {})
|
45
|
+
attributes = { variants: [], details: {} }.merge(overrides)
|
46
|
+
|
47
|
+
product = create_product(attributes)
|
48
|
+
product.variants = Array.new(100) { create_complex_variant } unless product.variants.any?
|
49
|
+
|
50
|
+
colors = product.variants.flat_map { |v| v.fetch_detail('Color') }.uniq!
|
51
|
+
sizes = product.variants.flat_map { |v| v.fetch_detail('Size') }.uniq!
|
52
|
+
materials = product.variants.flat_map { |v| v.fetch_detail('Material') }.uniq!
|
53
|
+
|
54
|
+
colors.each do |color|
|
55
|
+
product.images.build(image: product_image_file, option: color)
|
56
|
+
end
|
57
|
+
|
58
|
+
product.filters = { 'Color' => colors, 'Size' => sizes, 'Material' => materials }
|
59
|
+
product.save
|
60
|
+
product
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def variant_details
|
66
|
+
return @variant_details if defined?(@variant_details)
|
67
|
+
details = {
|
68
|
+
'Color' => %w(Red Orange Yellow Green Blue Indigo Violet),
|
69
|
+
'Size' => %w(X-Small Small Medium Large X-Large XX-Large),
|
70
|
+
'Material' => %w(Cotton Wool Silk Polyester)
|
71
|
+
}
|
72
|
+
|
73
|
+
@variant_details = []
|
74
|
+
|
75
|
+
details['Color'].each do |color|
|
76
|
+
details['Size'].each do |size|
|
77
|
+
details['Material'].each do |material|
|
78
|
+
@variant_details << {
|
79
|
+
'Color' => [color],
|
80
|
+
'Size' => [size],
|
81
|
+
'Material' => [material]
|
82
|
+
}
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
@variant_details.shuffle
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Pricing
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_buy_some_get_some_discount(overrides = {})
|
7
|
+
attributes = factory_defaults(:buy_some_get_some_discount).merge(overrides)
|
8
|
+
Workarea::Pricing::Discount::BuySomeGetSome.create!(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_category_discount(overrides = {})
|
12
|
+
attributes = factory_defaults(:category_discount).merge(overrides)
|
13
|
+
Workarea::Pricing::Discount::Category.create!(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_code_list(overrides = {})
|
17
|
+
attributes = factory_defaults(:code_list).merge(overrides)
|
18
|
+
Workarea::Pricing::Discount::CodeList.new(attributes).tap do |code_list|
|
19
|
+
code_list.save!
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_free_gift_discount(overrides = {})
|
24
|
+
attributes = factory_defaults(:free_gift_discount).merge(overrides)
|
25
|
+
Workarea::Pricing::Discount::FreeGift.create!(attributes)
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_order_total_discount(overrides = {})
|
29
|
+
attributes = factory_defaults(:order_total_discount).merge(overrides)
|
30
|
+
Workarea::Pricing::Discount::OrderTotal.create!(attributes)
|
31
|
+
end
|
32
|
+
|
33
|
+
def create_pricing_sku(overrides = {})
|
34
|
+
attributes = factory_defaults(:pricing_sku).merge(overrides)
|
35
|
+
Workarea::Pricing::Sku.new(attributes).tap(&:save!)
|
36
|
+
end
|
37
|
+
|
38
|
+
def create_product_attribute_discount(overrides = {})
|
39
|
+
attributes = factory_defaults(:product_attribute_discount).merge(overrides)
|
40
|
+
Workarea::Pricing::Discount::ProductAttribute.create!(attributes)
|
41
|
+
end
|
42
|
+
|
43
|
+
def create_product_discount(overrides = {})
|
44
|
+
attributes = factory_defaults(:product_discount).merge(overrides)
|
45
|
+
Workarea::Pricing::Discount::Product.create!(attributes)
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_quantity_fixed_price_discount(overrides = {})
|
49
|
+
attributes = factory_defaults(:quantity_fixed_price_discount).merge(overrides)
|
50
|
+
Workarea::Pricing::Discount::QuantityFixedPrice.create!(attributes)
|
51
|
+
end
|
52
|
+
|
53
|
+
def create_shipping_discount(overrides = {})
|
54
|
+
attributes = factory_defaults(:shipping_discount).merge(overrides)
|
55
|
+
Workarea::Pricing::Discount::Shipping.create!(attributes)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Recommendation
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_recommendations(overrides = {})
|
7
|
+
attributes = factory_defaults(:recommendations).merge(overrides)
|
8
|
+
Workarea::Recommendation::Settings.create!(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_user_activity(overrides = {})
|
12
|
+
attributes = factory_defaults(:user_activity).merge(overrides)
|
13
|
+
Workarea::Recommendation::UserActivity.create!(attributes)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module Search
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_search_settings(overrides = {})
|
7
|
+
Workarea::Search::Settings.create!(overrides)
|
8
|
+
end
|
9
|
+
|
10
|
+
def create_search_customization(overrides = {})
|
11
|
+
attributes = factory_defaults(:search_customization).merge(overrides)
|
12
|
+
Workarea::Search::Customization.create!(attributes)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_product_search(options = {})
|
16
|
+
result = Workarea::Search::ProductSearch.new
|
17
|
+
|
18
|
+
allow(result).to receive_messages(
|
19
|
+
create_product_browse_search_options(options)
|
20
|
+
)
|
21
|
+
|
22
|
+
result
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_category_browse_search(options = {})
|
26
|
+
result = Workarea::Search::CategoryBrowse.new
|
27
|
+
|
28
|
+
allow(result).to receive_messages(
|
29
|
+
create_product_browse_search_options(options)
|
30
|
+
)
|
31
|
+
|
32
|
+
result
|
33
|
+
end
|
34
|
+
|
35
|
+
def create_admin_search(options = {})
|
36
|
+
result = Workarea::Search::AdminSearch.new
|
37
|
+
options.reverse_merge!(factory_defaults(:admin_search))
|
38
|
+
|
39
|
+
options[:results] = PagedArray.from(
|
40
|
+
options[:results],
|
41
|
+
options[:page],
|
42
|
+
options[:per_page],
|
43
|
+
options[:total]
|
44
|
+
)
|
45
|
+
|
46
|
+
allow(result).to receive_messages(options)
|
47
|
+
|
48
|
+
result
|
49
|
+
end
|
50
|
+
|
51
|
+
def elasticsearch_response
|
52
|
+
file = "#{File.dirname(__FILE__)}/../elasticsearch_response.json"
|
53
|
+
JSON.parse(IO.read(file))
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_product_browse_search_options(options = {})
|
57
|
+
options.reverse_merge!(factory_defaults(:product_browse_search_options))
|
58
|
+
|
59
|
+
options[:results] = options[:products].map do |product|
|
60
|
+
{ catalog_id: product.id, model: product, option: nil }
|
61
|
+
end
|
62
|
+
|
63
|
+
options.except(:products)
|
64
|
+
end
|
65
|
+
|
66
|
+
def update_search_settings(overrides = {})
|
67
|
+
attributes = factory_defaults(:search_settings).merge(overrides)
|
68
|
+
Workarea::Search::Settings.current.update_attributes!(attributes)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Factories
|
3
|
+
module User
|
4
|
+
Factories.add(self)
|
5
|
+
|
6
|
+
def create_user(overrides = {})
|
7
|
+
attributes = factory_defaults(:user).merge(overrides)
|
8
|
+
|
9
|
+
Workarea::User.new(attributes).tap do |user|
|
10
|
+
user.save!
|
11
|
+
Factories.user_count += 1
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def user_avatar_file_path
|
16
|
+
Factories::User.user_avatar_file_path
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.user_avatar_file_path
|
20
|
+
Testing::Engine.root.join('lib', 'workarea', 'testing', 'user_avatar.jpg')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|