module Workarea::Factories::Order
Public Instance Methods
complete_checkout(order, options = {})
click to toggle source
# File lib/workarea/testing/factories/order.rb, line 46 def complete_checkout(order, options = {}) shipping_address = factory_defaults(:shipping_address).merge(options[:shipping_address] || {}) billing_address = factory_defaults(:billing_address).merge(options[:billing_address] || {}) payment = factory_defaults(:checkout_payment).tap do |payment| payment[:credit_card].merge(options[:credit_card] || {}) end shipping_service = options[:shipping_service].presence || create_shipping_service.name order.items.each do |item| item.update_attributes!(OrderItemDetails.find!(item.sku).to_h) end checkout = Checkout.new(order) checkout.update( payment.merge( shipping_address: shipping_address, billing_address: billing_address, shipping_service: shipping_service, ) ) checkout.place_order end
create_fraud_decision(overrides = {})
click to toggle source
# File lib/workarea/testing/factories/order.rb, line 105 def create_fraud_decision(overrides = {}) attributes = factory_defaults(:fraud_decision).merge(overrides) Workarea::Order::FraudDecision.new(attributes) end
create_fraudulent_order(overrides = {})
click to toggle source
# File lib/workarea/testing/factories/order.rb, line 76 def create_fraudulent_order(overrides = {}) attributes = factory_defaults(:fraudulent_order).merge(overrides) decision_attributes = attributes.slice(:fraud_decision) decision = create_fraud_decision(decision_attributes[:fraud_decision]) shipping_service = create_shipping_service sku = 'SKU' create_product(variants: [{ sku: sku, regular: 5.to_m }]) details = OrderItemDetails.find(sku) order = Workarea::Order.new(attributes) item = { sku: sku, quantity: 2 }.merge(details.to_h) order.add_item(item) checkout = Checkout.new(order) checkout.update( factory_defaults(:checkout_payment).merge( shipping_address: factory_defaults(:shipping_address), billing_address: factory_defaults(:billing_address), shipping_service: shipping_service.name, ) ) order.set_fraud_decision!(decision) order end
create_order(overrides = {})
click to toggle source
# File lib/workarea/testing/factories/order.rb, line 8 def create_order(overrides = {}) attributes = factory_defaults(:order).merge(overrides) Workarea::Order.new(attributes).tap(&:save!) end
create_placed_order(overrides = {})
click to toggle source
# File lib/workarea/testing/factories/order.rb, line 13 def create_placed_order(overrides = {}) attributes = factory_defaults(:placed_order).merge(overrides) shipping_service = create_shipping_service sku = 'SKU' create_product(variants: [{ sku: sku, regular: 5.to_m }]) details = OrderItemDetails.find(sku) order = Workarea::Order.new(attributes) item = { sku: sku, quantity: 2 }.merge(details.to_h) order.add_item(item) checkout = Checkout.new(order) checkout.update( factory_defaults(:checkout_payment).merge( shipping_address: factory_defaults(:shipping_address), billing_address: factory_defaults(:billing_address), shipping_service: shipping_service.name, ) ) unless checkout.place_order raise( UnplacedOrderError, 'failed placing the order in the create_placed_order factory' ) end forced_attrs = overrides.slice(:placed_at, :update_at, :total_price) order.update_attributes!(forced_attrs) order end