workarea-orderbot 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/ci.yml +58 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +58 -0
- data/Gemfile +17 -0
- data/LICENSE +52 -0
- data/README.md +100 -0
- data/Rakefile +59 -0
- data/app/assets/images/workarea/admin/orderbot/.keep +0 -0
- data/app/assets/images/workarea/storefront/orderbot/.keep +0 -0
- data/app/assets/javascripts/workarea/admin/orderbot/.keep +0 -0
- data/app/assets/javascripts/workarea/storefront/orderbot/.keep +0 -0
- data/app/assets/stylesheets/workarea/admin/orderbot/.keep +0 -0
- data/app/assets/stylesheets/workarea/storefront/orderbot/.keep +0 -0
- data/app/controllers/.keep +0 -0
- data/app/helpers/.keep +0 -0
- data/app/mailers/.keep +0 -0
- data/app/models/workarea/order.decorator +19 -0
- data/app/models/workarea/orderbot/import_log.rb +19 -0
- data/app/models/workarea/orderbot/pricing_import_data.rb +13 -0
- data/app/models/workarea/orderbot/product_import_data.rb +32 -0
- data/app/models/workarea/user.decorator +7 -0
- data/app/services/workarea/orderbot/child_product.rb +108 -0
- data/app/services/workarea/orderbot/filters.rb +33 -0
- data/app/services/workarea/orderbot/order.rb +146 -0
- data/app/services/workarea/orderbot/order/item.rb +69 -0
- data/app/services/workarea/orderbot/order/tender/credit_card.rb +43 -0
- data/app/services/workarea/orderbot/order/tender/general.rb +32 -0
- data/app/services/workarea/orderbot/order/tender/gift_card.rb +32 -0
- data/app/services/workarea/orderbot/order/tender/store_credit.rb +32 -0
- data/app/services/workarea/orderbot/parent_product.rb +87 -0
- data/app/views/.keep +0 -0
- data/app/workers/workarea/orderbot/fulfillment/import_fulfillments.rb +37 -0
- data/app/workers/workarea/orderbot/fulfillment_importer.rb +50 -0
- data/app/workers/workarea/orderbot/inventory/import_inventory.rb +50 -0
- data/app/workers/workarea/orderbot/inventory_importer.rb +57 -0
- data/app/workers/workarea/orderbot/pricing/import_pricing.rb +42 -0
- data/app/workers/workarea/orderbot/pricing_importer.rb +70 -0
- data/app/workers/workarea/orderbot/product/import_child_products.rb +24 -0
- data/app/workers/workarea/orderbot/product/import_parent_products.rb +32 -0
- data/app/workers/workarea/orderbot/product_importer.rb +72 -0
- data/app/workers/workarea/orderbot/save_order.rb +38 -0
- data/bin/rails +25 -0
- data/config/initializers/configurations.rb +60 -0
- data/config/initializers/scheduled_jobs.rb +28 -0
- data/config/initializers/workarea.rb +16 -0
- data/config/routes.rb +2 -0
- data/lib/workarea/orderbot.rb +43 -0
- data/lib/workarea/orderbot/authentication.rb +41 -0
- data/lib/workarea/orderbot/bogus_gateway.rb +629 -0
- data/lib/workarea/orderbot/engine.rb +10 -0
- data/lib/workarea/orderbot/gateway.rb +102 -0
- data/lib/workarea/orderbot/response.rb +29 -0
- data/lib/workarea/orderbot/version.rb +5 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/config/manifest.js +3 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +14 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +2 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +15 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +25 -0
- data/test/dummy/bin/update +25 -0
- data/test/dummy/config.ru +5 -0
- data/test/dummy/config/application.rb +34 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +52 -0
- data/test/dummy/config/environments/production.rb +83 -0
- data/test/dummy/config/environments/test.rb +45 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
- data/test/dummy/config/initializers/assets.rb +12 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/content_security_policy.rb +25 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/workarea.rb +5 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +9 -0
- data/test/dummy/config/locales/en.yml +33 -0
- data/test/dummy/config/puma.rb +34 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/services/workarea/orderbot/order_test.rb +151 -0
- data/test/services/workarea/orderbot/product/child_product_test.rb +255 -0
- data/test/services/workarea/orderbot/product/parent_product_test.rb +106 -0
- data/test/teaspoon_env.rb +6 -0
- data/test/test_helper.rb +10 -0
- data/test/workers/workarea/orderbot/fulfillment/import_fulfillments_test.rb +41 -0
- data/test/workers/workarea/orderbot/fulfillment_importer_test.rb +29 -0
- data/test/workers/workarea/orderbot/inventory/import_inventory_test.rb +49 -0
- data/test/workers/workarea/orderbot/inventory_importer_test.rb +21 -0
- data/test/workers/workarea/orderbot/pricing/import_pricing_test.rb +61 -0
- data/test/workers/workarea/orderbot/pricing_importer_test.rb +29 -0
- data/test/workers/workarea/orderbot/product_importer_test.rb +23 -0
- data/test/workers/workarea/orderbot/save_order_test.rb +41 -0
- data/workarea-orderbot.gemspec +20 -0
- metadata +172 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
module Orderbot
|
5
|
+
module Product
|
6
|
+
class ParentProductTest < Workarea::TestCase
|
7
|
+
def test_process
|
8
|
+
parent_product = create_parent_product
|
9
|
+
|
10
|
+
Orderbot::ParentProduct.new(parent_product).process
|
11
|
+
|
12
|
+
product = Workarea::Catalog::Product.first
|
13
|
+
assert_equal("Blue Tooth USB", product.name)
|
14
|
+
assert_equal("Test", product.description)
|
15
|
+
assert_equal("Electronics", product.filters[:orderbot_category])
|
16
|
+
assert_equal("Accessories", product.filters[:orderbot_group])
|
17
|
+
assert_equal(["BTUSB001"], product.fetch_detail(:upc))
|
18
|
+
assert_equal("generic", product.template)
|
19
|
+
|
20
|
+
parent_product.update_attributes!(
|
21
|
+
product_data: {
|
22
|
+
product_id: 3166006,
|
23
|
+
name: "Blue Tooth USB",
|
24
|
+
sku: "BTUSB01",
|
25
|
+
upc: "BTUSB001",
|
26
|
+
active: true,
|
27
|
+
taxable: true,
|
28
|
+
base_price: 1,
|
29
|
+
orderguide_price: nil,
|
30
|
+
units_of_measure: "Each",
|
31
|
+
weight: 1,
|
32
|
+
shipping_unit_of_measure: "Lbs",
|
33
|
+
has_children: true,
|
34
|
+
parent_id: 0,
|
35
|
+
class_type: "Sales Items",
|
36
|
+
group_id: 20693,
|
37
|
+
group: "Accessories",
|
38
|
+
category: "Electronics",
|
39
|
+
first_variable_value: nil,
|
40
|
+
second_variable_value: nil,
|
41
|
+
descriptive_title: "",
|
42
|
+
description: "NEW DESCRIPTION",
|
43
|
+
other_info: "",
|
44
|
+
creation_date: nil,
|
45
|
+
last_updated: "2019-04-02T13:10:03.29",
|
46
|
+
updated_by: 282517,
|
47
|
+
workarea_info: {
|
48
|
+
template: "ob_test",
|
49
|
+
purchase_start_date: nil,
|
50
|
+
purchase_end_date: nil
|
51
|
+
}
|
52
|
+
}
|
53
|
+
)
|
54
|
+
|
55
|
+
Workarea.config.product_templates = [:ob_test]
|
56
|
+
|
57
|
+
Orderbot::ParentProduct.new(parent_product).process
|
58
|
+
product.reload
|
59
|
+
assert_equal(1, Workarea::Catalog::Product.count)
|
60
|
+
assert_equal("NEW DESCRIPTION", product.description)
|
61
|
+
assert_equal("ob_test", product.template)
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def create_parent_product
|
67
|
+
product_attrs = {
|
68
|
+
product_id: 3166006,
|
69
|
+
name: "Blue Tooth USB",
|
70
|
+
sku: "BTUSB01",
|
71
|
+
upc: "BTUSB001",
|
72
|
+
active: true,
|
73
|
+
taxable: true,
|
74
|
+
base_price: 1,
|
75
|
+
orderguide_price: nil,
|
76
|
+
units_of_measure: "Each",
|
77
|
+
weight: 1,
|
78
|
+
shipping_unit_of_measure: "Lbs",
|
79
|
+
has_children: true,
|
80
|
+
parent_id: 0,
|
81
|
+
class_type: "Sales Items",
|
82
|
+
group_id: 20693,
|
83
|
+
group: "Accessories",
|
84
|
+
category_id: 5462,
|
85
|
+
category: "Electronics",
|
86
|
+
first_variable_value: nil,
|
87
|
+
second_variable_value: nil,
|
88
|
+
descriptive_title: "",
|
89
|
+
description: "Test",
|
90
|
+
other_info: "",
|
91
|
+
creation_date: nil,
|
92
|
+
last_updated: "2019-04-02T13:10:03.29",
|
93
|
+
updated_by: 282517,
|
94
|
+
workarea_info: {
|
95
|
+
template: "",
|
96
|
+
purchase_start_date: nil,
|
97
|
+
purchase_end_date: nil
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
Orderbot::ProductImportData.create!(product_data: product_attrs)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Configure Rails Environment
|
2
|
+
ENV['RAILS_ENV'] = 'test'
|
3
|
+
|
4
|
+
require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
|
5
|
+
require 'rails/test_help'
|
6
|
+
require 'workarea/test_help'
|
7
|
+
|
8
|
+
# Filter out Minitest backtrace while allowing backtrace from other libraries
|
9
|
+
# to be shown.
|
10
|
+
Minitest.backtrace_filter = Minitest::BacktraceFilter.new
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
module Orderbot
|
5
|
+
class Fulfillment::ImportfulFillmentTest < TestCase
|
6
|
+
def test_import_fulfillment
|
7
|
+
order = create_placed_order
|
8
|
+
|
9
|
+
fulfillment_data = {
|
10
|
+
order_id: "123456789",
|
11
|
+
reference_id: "1234",
|
12
|
+
purchase_order: "00984",
|
13
|
+
ship_date: "2020-01-17T20:26:50.889Z",
|
14
|
+
carrier_service_type: "USPS Priority",
|
15
|
+
ship_code: "FED",
|
16
|
+
packages: [
|
17
|
+
{
|
18
|
+
package_id: "3003216",
|
19
|
+
tracking_number: "1Z999AA10123456784",
|
20
|
+
items: [
|
21
|
+
{
|
22
|
+
package_item_id: "3003216",
|
23
|
+
product_id: "3003217",
|
24
|
+
sku: "SKU",
|
25
|
+
quantity: "2"
|
26
|
+
}
|
27
|
+
]
|
28
|
+
}
|
29
|
+
]
|
30
|
+
}
|
31
|
+
|
32
|
+
Workarea::Orderbot::Fulfillment::ImportFulfillments.new.perform(fulfillment_data)
|
33
|
+
|
34
|
+
fulfillment = Workarea::Fulfillment.find(order.id)
|
35
|
+
|
36
|
+
assert_equal(:shipped, fulfillment.status)
|
37
|
+
assert_equal(1, fulfillment.events.size)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
module Orderbot
|
5
|
+
class ImportfulFillmentTest < TestCase
|
6
|
+
def test_fulfillment_importer
|
7
|
+
create_placed_order(id: '1234')
|
8
|
+
create_placed_order(id: '4567')
|
9
|
+
|
10
|
+
Workarea.config.orderbot_api_email_address = "test@workarea.com"
|
11
|
+
Workarea.config.orderbot_api_password = "foobar"
|
12
|
+
|
13
|
+
assert_equal(0, Workarea::Orderbot::ImportLog.count)
|
14
|
+
|
15
|
+
Workarea::Orderbot::FulfillmentImporter.new.perform # uses Workarea::Orderbot::BogusGateway
|
16
|
+
|
17
|
+
full_ship = Workarea::Fulfillment.find('1234')
|
18
|
+
partial_ship = Workarea::Fulfillment.find('4567')
|
19
|
+
|
20
|
+
assert(:shipped, full_ship.status)
|
21
|
+
assert(:partially_shipped, partial_ship.status)
|
22
|
+
|
23
|
+
log = Workarea::Orderbot::ImportLog.where(importer: "fulfillment").first
|
24
|
+
assert(log.started_at.present?)
|
25
|
+
assert(log.finished_at.present?)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
module Orderbot
|
5
|
+
class Inventory::ImportInventoryTest < TestCase
|
6
|
+
def test_import_inventory
|
7
|
+
inventory_data = {
|
8
|
+
distribution_center_id: 454,
|
9
|
+
product_id: 2742840,
|
10
|
+
sku: "4444",
|
11
|
+
quantity_on_hand: 400.0,
|
12
|
+
updated_on: 5.minutes.ago
|
13
|
+
}
|
14
|
+
|
15
|
+
Workarea::Orderbot::Inventory::ImportInventory.new.perform(inventory_data)
|
16
|
+
sku = Workarea::Inventory::Sku.first
|
17
|
+
|
18
|
+
assert_equal(400, sku.available)
|
19
|
+
assert_equal("standard", sku.policy)
|
20
|
+
|
21
|
+
inventory_data[:quantity_on_hand] = 500
|
22
|
+
|
23
|
+
Workarea::Orderbot::Inventory::ImportInventory.new.perform(inventory_data)
|
24
|
+
|
25
|
+
sku.reload
|
26
|
+
|
27
|
+
# assert new sku was not created when upating
|
28
|
+
assert_equal(1, Workarea::Inventory::Sku.count)
|
29
|
+
assert_equal(500, sku.available)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_backordered_inventory
|
33
|
+
inventory_data = {
|
34
|
+
distribution_center_id: 454,
|
35
|
+
product_id: 2742840,
|
36
|
+
sku: "backordersku",
|
37
|
+
quantity_on_hand: 400.0,
|
38
|
+
updated_on: 5.minutes.ago
|
39
|
+
}
|
40
|
+
|
41
|
+
Workarea::Orderbot::Inventory::ImportInventory.new.perform(inventory_data)
|
42
|
+
sku = Workarea::Inventory::Sku.first
|
43
|
+
|
44
|
+
assert_equal(400, sku.available)
|
45
|
+
assert_equal("allow_backorder", sku.policy)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
module Orderbot
|
5
|
+
class ImportInventoryTest < TestCase
|
6
|
+
def test_inventory_importer
|
7
|
+
Workarea.config.orderbot_api_email_address = "test@workarea.com"
|
8
|
+
Workarea.config.orderbot_api_password = "foobar"
|
9
|
+
|
10
|
+
assert_equal(0, Workarea::Orderbot::ImportLog.count)
|
11
|
+
|
12
|
+
Workarea::Orderbot::InventoryImporter.new.perform # uses Workarea::Orderbot::BogusGateway
|
13
|
+
assert_equal(4, Workarea::Inventory::Sku.count)
|
14
|
+
|
15
|
+
log = Workarea::Orderbot::ImportLog.where(importer: "inventory").first
|
16
|
+
assert(log.started_at.present?)
|
17
|
+
assert(log.finished_at.present?)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
module Orderbot
|
5
|
+
class Inventory::ImportInventoryTest < TestCase
|
6
|
+
def test_import_price
|
7
|
+
pricing_data = {
|
8
|
+
force_schedule: nil,
|
9
|
+
last_updated_on: 5.minutes.ago,
|
10
|
+
original_price: 15.0,
|
11
|
+
price: 15.0,
|
12
|
+
product_id: 3592532,
|
13
|
+
sales_end_on: nil,
|
14
|
+
sales_start_on: nil,
|
15
|
+
sku: "SAMEPRICE1"
|
16
|
+
}
|
17
|
+
|
18
|
+
Orderbot::PricingImportData.create!(
|
19
|
+
order_guide_id: 1,
|
20
|
+
pricing_data: pricing_data
|
21
|
+
)
|
22
|
+
|
23
|
+
Workarea::Orderbot::Pricing::ImportPricing.new.perform
|
24
|
+
sku = Workarea::Pricing::Sku.first
|
25
|
+
price = sku.prices.first
|
26
|
+
|
27
|
+
assert_equal(15.to_m, price.regular)
|
28
|
+
refute(price.sale.present?)
|
29
|
+
refute(price.on_sale?)
|
30
|
+
refute(sku.on_sale?)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_import_sales_price
|
34
|
+
pricing_data = {
|
35
|
+
force_schedule: nil,
|
36
|
+
last_updated_on: 5.minutes.ago,
|
37
|
+
original_price: 15.0,
|
38
|
+
price: 10.0,
|
39
|
+
product_id: 3592532,
|
40
|
+
sales_end_on: nil,
|
41
|
+
sales_start_on: nil,
|
42
|
+
sku: "SALEPRICE1"
|
43
|
+
}
|
44
|
+
|
45
|
+
Orderbot::PricingImportData.create!(
|
46
|
+
order_guide_id: 1,
|
47
|
+
pricing_data: pricing_data
|
48
|
+
)
|
49
|
+
|
50
|
+
Workarea::Orderbot::Pricing::ImportPricing.new.perform
|
51
|
+
sku = Workarea::Pricing::Sku.first
|
52
|
+
price = sku.prices.first
|
53
|
+
|
54
|
+
assert_equal(15.to_m, price.regular)
|
55
|
+
assert_equal(10.to_m, price.sale)
|
56
|
+
assert(price.on_sale?)
|
57
|
+
assert(sku.on_sale?)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
class Orderbot::PricingImporterTest < TestCase
|
5
|
+
def test_pricing_import_data
|
6
|
+
Workarea.config.orderbot_api_email_address = "test@workarea.com"
|
7
|
+
Workarea.config.orderbot_api_password = "foobar"
|
8
|
+
Workarea.config.default_order_guide_id = 1
|
9
|
+
|
10
|
+
assert_equal(0, Workarea::Orderbot::ImportLog.count)
|
11
|
+
|
12
|
+
Workarea::Orderbot::PricingImporter.new.perform # uses data from Workarea::Orderbot::Bogusgateway
|
13
|
+
|
14
|
+
assert_equal(3, Workarea::Pricing::Sku.count)
|
15
|
+
|
16
|
+
sale_sku = Workarea::Pricing::Sku.find('SALE1')
|
17
|
+
assert(sale_sku.on_sale?)
|
18
|
+
|
19
|
+
price = sale_sku.prices.first
|
20
|
+
|
21
|
+
assert_equal(45.00.to_m, price.regular)
|
22
|
+
assert_equal(30.00.to_m, price.sale)
|
23
|
+
|
24
|
+
log = Workarea::Orderbot::ImportLog.where(importer: "pricing").first
|
25
|
+
assert(log.started_at.present?)
|
26
|
+
assert(log.finished_at.present?)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
class Orderbot::ProductImporterTest < TestCase
|
5
|
+
def test_product_import_data
|
6
|
+
Workarea.config.orderbot_api_email_address = "test@workarea.com"
|
7
|
+
Workarea.config.orderbot_api_password = "foobar"
|
8
|
+
|
9
|
+
assert_equal(0, Workarea::Orderbot::ImportLog.count)
|
10
|
+
|
11
|
+
Workarea::Orderbot::ProductImporter.new.perform # uses data from Workarea::Orderbot::Bogusgateway
|
12
|
+
|
13
|
+
assert_equal(0, Orderbot::ProductImportData.count)
|
14
|
+
assert_equal(2, Workarea::Catalog::Product.count)
|
15
|
+
assert_equal(3, Workarea::Pricing::Sku.count)
|
16
|
+
assert_equal(3, Workarea::Shipping::Sku.count)
|
17
|
+
|
18
|
+
log = Workarea::Orderbot::ImportLog.where(importer: "product").first
|
19
|
+
assert(log.started_at.present?)
|
20
|
+
assert(log.finished_at.present?)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
class Orderbot::SaveOrderTest < TestCase
|
5
|
+
def test_export_order
|
6
|
+
Workarea.config.orderbot_api_email_address = "test@workarea.com"
|
7
|
+
Workarea.config.orderbot_api_password = "foobar"
|
8
|
+
|
9
|
+
order = create_placed_order
|
10
|
+
|
11
|
+
Workarea::Orderbot::SaveOrder.new.perform(order.id)
|
12
|
+
|
13
|
+
order.reload
|
14
|
+
|
15
|
+
assert(order.orderbot_order_id.present?)
|
16
|
+
assert(order.orderbot_exported?)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_export_order_error
|
20
|
+
Workarea.config.orderbot_api_email_address = "test@workarea.com"
|
21
|
+
Workarea.config.orderbot_api_password = "foobar"
|
22
|
+
|
23
|
+
order = create_placed_order(id: "error")
|
24
|
+
|
25
|
+
assert_raise Workarea::Orderbot::SaveOrder::OrderbotSaveOrderError do
|
26
|
+
Workarea::Orderbot::SaveOrder.new.perform(order.id)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_export_fails_to_create
|
31
|
+
Workarea.config.orderbot_api_email_address = "test@workarea.com"
|
32
|
+
Workarea.config.orderbot_api_password = "foobar"
|
33
|
+
|
34
|
+
order = create_placed_order(id: "failure")
|
35
|
+
|
36
|
+
assert_raise Workarea::Orderbot::SaveOrder::OrderbotSaveOrderError do
|
37
|
+
Workarea::Orderbot::SaveOrder.new.perform(order.id)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
$:.push File.expand_path("lib", __dir__)
|
2
|
+
|
3
|
+
# Maintain your gem's version:
|
4
|
+
require "workarea/orderbot/version"
|
5
|
+
|
6
|
+
# Describe your gem and declare its dependencies:
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = "workarea-orderbot"
|
9
|
+
spec.version = Workarea::Orderbot::VERSION
|
10
|
+
spec.authors = ["Jeff Yucis"]
|
11
|
+
spec.email = ["jyucis@workarea.com"]
|
12
|
+
spec.homepage = "https://github.com/workarea-commerce/workarea-orderbot"
|
13
|
+
spec.summary = "Workarea Integration with Orderbot OMS."
|
14
|
+
spec.description = "Ordebot OMS integration for catalog and order data."
|
15
|
+
spec.license = "Business Software License"
|
16
|
+
|
17
|
+
spec.files = `git ls-files`.split("\n")
|
18
|
+
|
19
|
+
spec.add_dependency 'workarea', '~> 3.5.x'
|
20
|
+
end
|