From dcaae0370a18a78ef871719584718e644f20c83b Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Mon, 26 Feb 2018 12:56:13 -0600 Subject: [PATCH 01/19] started tests --- spec/models/odoo/country_spec.rb | 0 spec/models/spree/order_spec.rb | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 spec/models/odoo/country_spec.rb create mode 100644 spec/models/spree/order_spec.rb diff --git a/spec/models/odoo/country_spec.rb b/spec/models/odoo/country_spec.rb new file mode 100644 index 0000000..e69de29 diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb new file mode 100644 index 0000000..ef8a73e --- /dev/null +++ b/spec/models/spree/order_spec.rb @@ -0,0 +1,12 @@ +require 'rails_helper' + +describe Spree::Order, type: :model do + + context '#state_changes_to_complete' do + it should 'return state completed' do + + expect (Spree::Order.state_machine)to eq(:completed) + end + end + +end From e92773932eb74df44581b62fe887bdf7c5a2eece Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Wed, 21 Mar 2018 11:44:47 -0600 Subject: [PATCH 02/19] Setup of order factory --- spec/factories/order.rb | 14 ++++++++++++++ spec/models/spree/order_spec.rb | 8 +------- spec/rails_helper.rb | 3 +++ 3 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 spec/factories/order.rb diff --git a/spec/factories/order.rb b/spec/factories/order.rb new file mode 100644 index 0000000..1f4c7f4 --- /dev/null +++ b/spec/factories/order.rb @@ -0,0 +1,14 @@ +FactoryBot.define do + factory :order, class: Spree::Order do + firstname "Joseph" + lastname "Martinez" + address1 "Third street #875" + address2 "" + city "Manzanillo" + country_id "157" + state_id "2235" + state_name "Colima" + zipcode "28017" + phone "3143334456" + end +end diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index ef8a73e..4ddd546 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -1,12 +1,6 @@ require 'rails_helper' describe Spree::Order, type: :model do - - context '#state_changes_to_complete' do - it should 'return state completed' do - - expect (Spree::Order.state_machine)to eq(:completed) - end - end + let!(:store) { create(:store) } end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 5d7bd17..1fe4657 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -4,6 +4,9 @@ require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' require 'capybara/rails' +require 'spree/testing_support/url_helpers' +require 'spree/testing_support/controller_requests' +require 'support/factory_bot' # Requires supporting ruby files with custom matchers and macros, etc, in # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are From f76e99efb3f8a2b0f7ded5a70ca4c428a60e584e Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Mon, 26 Mar 2018 23:51:08 -0600 Subject: [PATCH 03/19] rubocop fixes --- app/models/odoo/country.rb | 1 - app/models/odoo/order_line.rb | 2 +- app/models/odoo/partner.rb | 5 ++--- lib/odoo_service.rb | 1 - solidus_odoo.gemspec | 12 ++++++------ spec/models/spree/order_spec.rb | 1 - spec/spec_helper.rb | 1 + 7 files changed, 10 insertions(+), 13 deletions(-) diff --git a/app/models/odoo/country.rb b/app/models/odoo/country.rb index 1593a0e..a754163 100644 --- a/app/models/odoo/country.rb +++ b/app/models/odoo/country.rb @@ -6,4 +6,3 @@ def self.find(order) end end end - diff --git a/app/models/odoo/order_line.rb b/app/models/odoo/order_line.rb index ef7a00e..c45bf3e 100644 --- a/app/models/odoo/order_line.rb +++ b/app/models/odoo/order_line.rb @@ -20,6 +20,7 @@ def product end private + def item_information { name: product.name, @@ -28,6 +29,5 @@ def item_information product_uom_qty: line_item.quantity } end - end end diff --git a/app/models/odoo/partner.rb b/app/models/odoo/partner.rb index af5d992..f4095e7 100644 --- a/app/models/odoo/partner.rb +++ b/app/models/odoo/partner.rb @@ -1,6 +1,5 @@ module Odoo class Partner - attr_accessor :order, :state, :country def self.find_or_create(order) @@ -23,6 +22,7 @@ def create end private + def partner_attributes { name: order.name, @@ -33,7 +33,7 @@ def partner_attributes country_id: country.id, phone: order.ship_address.phone, email: order.email, - function: order.number #provisional while testing + function: order.number # provisional while testing } end @@ -44,6 +44,5 @@ def state def country @country ||= Country.find(order) end - end end diff --git a/lib/odoo_service.rb b/lib/odoo_service.rb index a5de35d..0a28301 100644 --- a/lib/odoo_service.rb +++ b/lib/odoo_service.rb @@ -3,4 +3,3 @@ def self.create_order(order) Odoo::Order.create(order) end end - diff --git a/solidus_odoo.gemspec b/solidus_odoo.gemspec index 1c5de1f..c433c81 100644 --- a/solidus_odoo.gemspec +++ b/solidus_odoo.gemspec @@ -15,22 +15,22 @@ Gem::Specification.new do |s| s.files = Dir["{app,config,db,lib}/**/*", 'LICENSE', 'Rakefile', 'README.md'] solidus_version = ['>= 1.0', '< 3'] - s.add_dependency 'solidus_core', solidus_version - s.add_dependency 'solidus_backend', solidus_version - s.add_dependency 'solidus_api', solidus_version s.add_dependency 'ooor' + s.add_dependency 'solidus_api', solidus_version + s.add_dependency 'solidus_backend', solidus_version + s.add_dependency 'solidus_core', solidus_version s.add_dependency 'solidus_support' s.add_development_dependency 'capybara' - s.add_development_dependency 'poltergeist' s.add_development_dependency 'coffee-rails' - s.add_development_dependency 'sass-rails' s.add_development_dependency 'database_cleaner' s.add_development_dependency 'factory_bot' s.add_development_dependency 'factory_bot_rails' + s.add_development_dependency 'poltergeist' + s.add_development_dependency 'pry-rails' s.add_development_dependency 'rspec-rails' s.add_development_dependency 'rubocop' + s.add_development_dependency 'sass-rails' s.add_development_dependency 'simplecov' s.add_development_dependency 'sqlite3' - s.add_development_dependency 'pry-rails' end diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 4ddd546..926ae50 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -2,5 +2,4 @@ describe Spree::Order, type: :model do let!(:store) { create(:store) } - end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f4f43f4..3a1a86f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,5 +1,6 @@ # Run Coverage report require 'simplecov' +require 'solidus_odoo/factories' SimpleCov.start do add_filter 'spec/dummy' add_group 'Controllers', 'app/controllers' From 3f19938d8210c08c98390c24e189eb567572bc73 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Tue, 27 Mar 2018 18:42:37 -0600 Subject: [PATCH 04/19] Setup RSPEC Tests --- Gemfile | 2 +- lib/solidus_odoo/factories.rb | 2 +- solidus_odoo.gemspec | 3 ++- spec/factories/order.rb | 14 ---------- spec/models/spree/order_spec.rb | 10 +++++-- spec/rails_helper.rb | 47 --------------------------------- spec/spec_helper.rb | 1 - 7 files changed, 12 insertions(+), 67 deletions(-) delete mode 100644 spec/factories/order.rb delete mode 100644 spec/rails_helper.rb diff --git a/Gemfile b/Gemfile index 859a420..4fe8b24 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,7 @@ gem 'solidus', github: 'solidusio/solidus', branch: 'v2.4' gem 'solidus_auth_devise', '~> 1.0' group :test, :development do - gem 'rspec-rails', '~> 3.0.0' + gem 'rspec-rails' end gemspec diff --git a/lib/solidus_odoo/factories.rb b/lib/solidus_odoo/factories.rb index b57337d..a292a62 100644 --- a/lib/solidus_odoo/factories.rb +++ b/lib/solidus_odoo/factories.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them. # # Example adding this to your spec_helper will load these Factories for use: diff --git a/solidus_odoo.gemspec b/solidus_odoo.gemspec index c433c81..c712752 100644 --- a/solidus_odoo.gemspec +++ b/solidus_odoo.gemspec @@ -15,11 +15,11 @@ Gem::Specification.new do |s| s.files = Dir["{app,config,db,lib}/**/*", 'LICENSE', 'Rakefile', 'README.md'] solidus_version = ['>= 1.0', '< 3'] - s.add_dependency 'ooor' s.add_dependency 'solidus_api', solidus_version s.add_dependency 'solidus_backend', solidus_version s.add_dependency 'solidus_core', solidus_version s.add_dependency 'solidus_support' + s.add_dependency 'ooor' s.add_development_dependency 'capybara' s.add_development_dependency 'coffee-rails' @@ -33,4 +33,5 @@ Gem::Specification.new do |s| s.add_development_dependency 'sass-rails' s.add_development_dependency 'simplecov' s.add_development_dependency 'sqlite3' + s.add_development_dependency 'ffaker' end diff --git a/spec/factories/order.rb b/spec/factories/order.rb deleted file mode 100644 index 1f4c7f4..0000000 --- a/spec/factories/order.rb +++ /dev/null @@ -1,14 +0,0 @@ -FactoryBot.define do - factory :order, class: Spree::Order do - firstname "Joseph" - lastname "Martinez" - address1 "Third street #875" - address2 "" - city "Manzanillo" - country_id "157" - state_id "2235" - state_name "Colima" - zipcode "28017" - phone "3143334456" - end -end diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 926ae50..766b841 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -1,5 +1,11 @@ -require 'rails_helper' +require 'spec_helper' -describe Spree::Order, type: :model do +describe Spree::Order do let!(:store) { create(:store) } + + context 'x' do + it 'y' do + expect(Spree::Order.count).to be(1) + end + end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb deleted file mode 100644 index 1fe4657..0000000 --- a/spec/rails_helper.rb +++ /dev/null @@ -1,47 +0,0 @@ -# This file is copied to spec/ when you run 'rails generate rspec:install' -ENV["RAILS_ENV"] ||= 'test' -require 'spec_helper' -require File.expand_path("../../config/environment", __FILE__) -require 'rspec/rails' -require 'capybara/rails' -require 'spree/testing_support/url_helpers' -require 'spree/testing_support/controller_requests' -require 'support/factory_bot' - -# Requires supporting ruby files with custom matchers and macros, etc, in -# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are -# run as spec files by default. This means that files in spec/support that end -# in _spec.rb will both be required and run as specs, causing the specs to be -# run twice. It is recommended that you do not name files matching this glob to -# end with _spec.rb. You can configure this pattern with the --pattern -# option on the command line or in ~/.rspec, .rspec or `.rspec-local`. -Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } - -# Checks for pending migrations before tests are run. -# If you are not using ActiveRecord, you can remove this line. -ActiveRecord::Migration.maintain_test_schema! - -RSpec.configure do |config| - # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures - config.fixture_path = "#{::Rails.root}/spec/fixtures" - - # If you're not using ActiveRecord, or you'd prefer not to run each of your - # examples within a transaction, remove the following line or assign false - # instead of true. - config.use_transactional_fixtures = true - - # RSpec Rails can automatically mix in different behaviours to your tests - # based on their file location, for example enabling you to call `get` and - # `post` in specs under `spec/controllers`. - # - # You can disable this behaviour by removing the line below, and instead - # explicitly tag your specs with their type, e.g.: - # - # RSpec.describe UsersController, :type => :controller do - # # ... - # end - # - # The different available types are documented in the features, such as in - # https://relishapp.com/rspec/rspec-rails/docs - config.infer_spec_type_from_file_location! -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3a1a86f..f4f43f4 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,5 @@ # Run Coverage report require 'simplecov' -require 'solidus_odoo/factories' SimpleCov.start do add_filter 'spec/dummy' add_group 'Controllers', 'app/controllers' From d90d4537cdd90fa79f8b29066e0e2162aa79c0d5 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Tue, 27 Mar 2018 21:20:21 -0600 Subject: [PATCH 05/19] Order tests --- Gemfile | 1 + solidus_odoo.gemspec | 1 + spec/models/spree/order_spec.rb | 7 ++++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 4fe8b24..7dae75b 100644 --- a/Gemfile +++ b/Gemfile @@ -11,6 +11,7 @@ gem 'solidus_auth_devise', '~> 1.0' group :test, :development do gem 'rspec-rails' + gem 'pry' end gemspec diff --git a/solidus_odoo.gemspec b/solidus_odoo.gemspec index c712752..1de1adc 100644 --- a/solidus_odoo.gemspec +++ b/solidus_odoo.gemspec @@ -27,6 +27,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'factory_bot' s.add_development_dependency 'factory_bot_rails' s.add_development_dependency 'poltergeist' + s.add_development_dependency 'pry' s.add_development_dependency 'pry-rails' s.add_development_dependency 'rspec-rails' s.add_development_dependency 'rubocop' diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 766b841..d4ecbad 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -1,10 +1,11 @@ require 'spec_helper' describe Spree::Order do - let!(:store) { create(:store) } + let!(:order) { create(:order_with_line_items) } - context 'x' do - it 'y' do + context 'An order should be created' do + it 'should be generated' do + binding.pry expect(Spree::Order.count).to be(1) end end From d27e21f3fd9561fc9c5da58ef866b821851c645f Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Tue, 27 Mar 2018 21:51:02 -0600 Subject: [PATCH 06/19] add order state test --- spec/models/spree/order_spec.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index d4ecbad..3d7fa00 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -1,12 +1,15 @@ require 'spec_helper' describe Spree::Order do - let!(:order) { create(:order_with_line_items) } + let!(:order) { create(:order_with_line_items, state: 'complete') } context 'An order should be created' do it 'should be generated' do - binding.pry expect(Spree::Order.count).to be(1) end + + it 'should have status as completed' do + expect("complete").to eq(order.state) + end end end From c2dbbc1a0dffb7f0e3040e19a6f173b5d3810953 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Mon, 2 Apr 2018 12:10:23 -0500 Subject: [PATCH 07/19] Test coverage Partner/Order/State/Country - Tests added to Partner model - Tests added to State model - Tests added to order model - Rubocop fixed --- .rubocop.yml | 2 +- app/models/odoo/order.rb | 1 - app/models/odoo/order_line.rb | 2 +- app/models/odoo/partner.rb | 2 +- app/models/odoo/state.rb | 1 - spec/models/odoo/partner_spec.rb | 30 ++++++++++++++++++++++++++++++ spec/models/odoo/state_spec.rb | 15 +++++++++++++++ spec/models/spree/order_spec.rb | 4 ++-- 8 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 spec/models/odoo/partner_spec.rb create mode 100644 spec/models/odoo/state_spec.rb diff --git a/.rubocop.yml b/.rubocop.yml index d0eaac7..ed3991c 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -44,7 +44,7 @@ Performance/Count: Style/RaiseArgs: Enabled: false -Style/OpMethod: +Naming/BinaryOperatorParameterName: Enabled: false # We can use good judgement here diff --git a/app/models/odoo/order.rb b/app/models/odoo/order.rb index 6144044..e78509f 100644 --- a/app/models/odoo/order.rb +++ b/app/models/odoo/order.rb @@ -29,4 +29,3 @@ def order_lines end end end - diff --git a/app/models/odoo/order_line.rb b/app/models/odoo/order_line.rb index 507b037..9c143af 100644 --- a/app/models/odoo/order_line.rb +++ b/app/models/odoo/order_line.rb @@ -20,7 +20,6 @@ def product end private - def item_information { name: product.name, @@ -29,5 +28,6 @@ def item_information product_uom_qty: line_item.quantity } end + end end diff --git a/app/models/odoo/partner.rb b/app/models/odoo/partner.rb index 1a92745..207996d 100644 --- a/app/models/odoo/partner.rb +++ b/app/models/odoo/partner.rb @@ -1,6 +1,5 @@ module Odoo class Partner - attr_accessor :order, :odoo_partner, :invoice_partner, :delivery_partner def self.find_or_create(order) @@ -29,6 +28,7 @@ def create_children end private + def partner_attributes(address) { name: order.name, diff --git a/app/models/odoo/state.rb b/app/models/odoo/state.rb index 2fdbc68..3506fc4 100644 --- a/app/models/odoo/state.rb +++ b/app/models/odoo/state.rb @@ -6,4 +6,3 @@ def self.find(address) end end end - diff --git a/spec/models/odoo/partner_spec.rb b/spec/models/odoo/partner_spec.rb new file mode 100644 index 0000000..6acad91 --- /dev/null +++ b/spec/models/odoo/partner_spec.rb @@ -0,0 +1,30 @@ +require 'spec_helper' + +describe Odoo::Partner do + let!(:order) { create(:order_with_line_items, state: 'complete') } + + context 'when user completes an order' do + it 'should not have an account in odoo' do + expect(nil).to be(ResPartner.find(email: order.email).first) + end + + it 'should create an account in odoo' do + address = order.ship_address + ResPartner.create(name: order.name, + street: address.address1, + city: address.city, + state_id: address.state.id, + zip: address.zipcode, + country_id: address.country.id, + phone: address.phone, + email: order.email) + + expect(ResPartner.find(email: order.email)).to be_truthy + end + + it 'should have an account in odoo' do + order.email = 'test@example.com' + expect(ResPartner.find(email: order.email)).to be_truthy + end + end +end diff --git a/spec/models/odoo/state_spec.rb b/spec/models/odoo/state_spec.rb new file mode 100644 index 0000000..d48f9b8 --- /dev/null +++ b/spec/models/odoo/state_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe Odoo::Country do + let!(:order) { create(:order_with_line_items, state: 'complete') } + Ooor.new(url: 'https://magmalabs1.odoo.com', database: 'magmalabs1', username: 'alberto.mendoza@magmalabs.io', password: 'Please123') + + context 'when an order is completed in solidus and Sale Order line is created in Odoo' do + + it 'should have a state' do + address = order.ship_address + state_name = address.state.name + expect(ResCountryState.find(name: state_name).first).to be_truthy + end + end +end diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 3d7fa00..788ac87 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -3,8 +3,8 @@ describe Spree::Order do let!(:order) { create(:order_with_line_items, state: 'complete') } - context 'An order should be created' do - it 'should be generated' do + context 'when user finishes filling in payment information' do + it 'and order should be generated' do expect(Spree::Order.count).to be(1) end From 8bd74970dacc1445a1e61753b544b218c0e905c8 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Tue, 3 Apr 2018 16:39:48 -0500 Subject: [PATCH 08/19] Minor fixes with tests - Fix rubocop comments 'line breaks' - Add tests for order line - Add tests for partner children --- app/models/odoo/order_line.rb | 2 +- spec/models/odoo/partner_spec.rb | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/models/odoo/order_line.rb b/app/models/odoo/order_line.rb index 9c143af..507b037 100644 --- a/app/models/odoo/order_line.rb +++ b/app/models/odoo/order_line.rb @@ -20,6 +20,7 @@ def product end private + def item_information { name: product.name, @@ -28,6 +29,5 @@ def item_information product_uom_qty: line_item.quantity } end - end end diff --git a/spec/models/odoo/partner_spec.rb b/spec/models/odoo/partner_spec.rb index 6acad91..f1ee927 100644 --- a/spec/models/odoo/partner_spec.rb +++ b/spec/models/odoo/partner_spec.rb @@ -26,5 +26,29 @@ order.email = 'test@example.com' expect(ResPartner.find(email: order.email)).to be_truthy end + + it 'should have an account with billing/shipping address' do + address = order.ship_address + + def partner_attributes(address) + { + name: order.name, + street: address.address1, + city: address.city, + state_id: address.id, + zip: address.zipcode, + country_id: address.id, + phone: address.phone, + email: order.email + } + end + + @odoo_partner = ResPartner.create partner_attributes(address) + @invoice_partner = ResPartner.create partner_attributes(order.bill_address).merge(name: "billing", type: "invoice", parent_id: @odoo_partner.id) + @delivery_partner = ResPartner.create partner_attributes(order.ship_address).merge(name: "shipping", type: "delivery", parent_id: @odoo_partner.id) + @odoo_partner.save + + expect(@odoo_partner.associations['child_ids']).not_to be_blank + end end end From 366867b275942ffda284b531281f11536e00ce1c Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Tue, 3 Apr 2018 16:42:31 -0500 Subject: [PATCH 09/19] Add orderline test spec --- spec/models/odoo/order_line_spec.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 spec/models/odoo/order_line_spec.rb diff --git a/spec/models/odoo/order_line_spec.rb b/spec/models/odoo/order_line_spec.rb new file mode 100644 index 0000000..f9ad749 --- /dev/null +++ b/spec/models/odoo/order_line_spec.rb @@ -0,0 +1,13 @@ +require 'spec_helper' + +describe Odoo::OrderLine do + let!(:order) { create(:order_with_line_items, state: 'complete') } + let!(:product) { create(:base_product, name: 'Samsung Tv', slug: 'samsung-tv') } + + context 'When a spree order is sent to odoo' do + it 'should throw "name" error if product does not exist in odoo' do + line_item = order.products.last + expect(ProductProduct.find(default_code: line_item.slug)).to be_blank + end + end +end From dbb5d8b969e2631db84980292fcf4d2b8e0558fc Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Tue, 3 Apr 2018 21:30:40 -0500 Subject: [PATCH 10/19] More tests - refactor rspec test for country - add test order_line - rubocop fixes - rename file --- spec/models/odoo/country_spec.rb | 14 ++++++++++++++ spec/models/odoo/order_line_spec.rb | 4 ++++ spec/models/odoo/state_spec.rb | 1 - .../{order_spec.rb => order_decorator_spec.rb} | 0 4 files changed, 18 insertions(+), 1 deletion(-) rename spec/models/spree/{order_spec.rb => order_decorator_spec.rb} (100%) diff --git a/spec/models/odoo/country_spec.rb b/spec/models/odoo/country_spec.rb index e69de29..3c31c39 100644 --- a/spec/models/odoo/country_spec.rb +++ b/spec/models/odoo/country_spec.rb @@ -0,0 +1,14 @@ +require 'spec_helper' + +describe Odoo::Country do + let!(:order) { create(:order_with_line_items, state: 'complete') } + + context 'when an order is completed in solidus and Sale Order line is created in Odoo' do + + it 'should have a country' do + address = order.ship_address.country.name + country = ResCountry.find(['name', '=', order.ship_address.country.name]).first.name + expect('United States').to eq(country) + end + end +end diff --git a/spec/models/odoo/order_line_spec.rb b/spec/models/odoo/order_line_spec.rb index f9ad749..6dead15 100644 --- a/spec/models/odoo/order_line_spec.rb +++ b/spec/models/odoo/order_line_spec.rb @@ -9,5 +9,9 @@ line_item = order.products.last expect(ProductProduct.find(default_code: line_item.slug)).to be_blank end + + it 'should find product in odoo' do + expect(ProductProduct.find(default_code: product.slug)).to be_truthy + end end end diff --git a/spec/models/odoo/state_spec.rb b/spec/models/odoo/state_spec.rb index d48f9b8..2816e83 100644 --- a/spec/models/odoo/state_spec.rb +++ b/spec/models/odoo/state_spec.rb @@ -5,7 +5,6 @@ Ooor.new(url: 'https://magmalabs1.odoo.com', database: 'magmalabs1', username: 'alberto.mendoza@magmalabs.io', password: 'Please123') context 'when an order is completed in solidus and Sale Order line is created in Odoo' do - it 'should have a state' do address = order.ship_address state_name = address.state.name diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_decorator_spec.rb similarity index 100% rename from spec/models/spree/order_spec.rb rename to spec/models/spree/order_decorator_spec.rb From 0a39f78cc6c28f966c0ce12e597177e7b59bf068 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Wed, 4 Apr 2018 09:26:24 -0500 Subject: [PATCH 11/19] State and Country rework --- spec/models/odoo/country_spec.rb | 2 +- spec/models/odoo/state_spec.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/models/odoo/country_spec.rb b/spec/models/odoo/country_spec.rb index 3c31c39..a483e03 100644 --- a/spec/models/odoo/country_spec.rb +++ b/spec/models/odoo/country_spec.rb @@ -7,7 +7,7 @@ it 'should have a country' do address = order.ship_address.country.name - country = ResCountry.find(['name', '=', order.ship_address.country.name]).first.name + country = ResCountry.find(['name', '=', address]).first.name expect('United States').to eq(country) end end diff --git a/spec/models/odoo/state_spec.rb b/spec/models/odoo/state_spec.rb index 2816e83..9ad8345 100644 --- a/spec/models/odoo/state_spec.rb +++ b/spec/models/odoo/state_spec.rb @@ -6,9 +6,9 @@ context 'when an order is completed in solidus and Sale Order line is created in Odoo' do it 'should have a state' do - address = order.ship_address - state_name = address.state.name - expect(ResCountryState.find(name: state_name).first).to be_truthy + address = order.ship_address.state.name + state = ResCountryState.find(['name', '=', address]).first.name + expect('Alabama').to eq(state) end end end From eec539959238fada2d0881a2c515990e35d4f485 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Wed, 4 Apr 2018 23:27:32 -0500 Subject: [PATCH 12/19] New order line test --- spec/models/odoo/order_line_spec.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/models/odoo/order_line_spec.rb b/spec/models/odoo/order_line_spec.rb index 6dead15..9b71d1a 100644 --- a/spec/models/odoo/order_line_spec.rb +++ b/spec/models/odoo/order_line_spec.rb @@ -13,5 +13,14 @@ it 'should find product in odoo' do expect(ProductProduct.find(default_code: product.slug)).to be_truthy end + + it 'should complete an order' do + product = order.products.last + product.name = "Samsung Tv" + product.slug = "samsung-tv" + product.save! + product.reload + order.reload + end end end From 519f7ec1bd51d8f98b3769f6381fae0132ec343d Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Fri, 6 Apr 2018 09:59:46 -0500 Subject: [PATCH 13/19] WIP --- spec/models/odoo/order_line_spec.rb | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/spec/models/odoo/order_line_spec.rb b/spec/models/odoo/order_line_spec.rb index 9b71d1a..7c3d7c9 100644 --- a/spec/models/odoo/order_line_spec.rb +++ b/spec/models/odoo/order_line_spec.rb @@ -1,26 +1,40 @@ require 'spec_helper' describe Odoo::OrderLine do - let!(:order) { create(:order_with_line_items, state: 'complete') } - let!(:product) { create(:base_product, name: 'Samsung Tv', slug: 'samsung-tv') } + let!(:shipping_option) { create(:shipping_method, cost: 0) } + let(:order) { create(:order_with_line_items, state: 'complete', line_items: [create(:line_item, product: product)]) } + let(:product) { create(:product, shipping_category: shipping_category) } + let(:shipping_category) { create(:shipping_category, shipping_methods: [shipping_method]) } + let(:shipping_method) { create(:shipping_method) } + Ooor.new(url: 'https://magmalabs1.odoo.com', database: 'magmalabs1', username: 'alberto.mendoza@magmalabs.io', password: 'Please123') context 'When a spree order is sent to odoo' do + before :each do + binding.pry + calculator = product.shipping_category.shipping_methods.first.calculator + calculator.preferred_amount = "0.0" + calculator.save + end it 'should throw "name" error if product does not exist in odoo' do line_item = order.products.last expect(ProductProduct.find(default_code: line_item.slug)).to be_blank end it 'should find product in odoo' do - expect(ProductProduct.find(default_code: product.slug)).to be_truthy + expect(ProductProduct.find(default_code: 'product-3-935')).to be_truthy end it 'should complete an order' do + binding.pry product = order.products.last product.name = "Samsung Tv" + product.save! product.slug = "samsung-tv" product.save! product.reload order.reload + OdooService.create_order(order) + odoo_order = SaleOrder.find(['name', '=', order.number]) end end end From 27a640425034f96fd4a7830e79bb07ee94084114 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Fri, 6 Apr 2018 10:00:56 -0500 Subject: [PATCH 14/19] remove credentials odoo --- spec/models/odoo/order_line_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/models/odoo/order_line_spec.rb b/spec/models/odoo/order_line_spec.rb index 7c3d7c9..be07e25 100644 --- a/spec/models/odoo/order_line_spec.rb +++ b/spec/models/odoo/order_line_spec.rb @@ -6,7 +6,6 @@ let(:product) { create(:product, shipping_category: shipping_category) } let(:shipping_category) { create(:shipping_category, shipping_methods: [shipping_method]) } let(:shipping_method) { create(:shipping_method) } - Ooor.new(url: 'https://magmalabs1.odoo.com', database: 'magmalabs1', username: 'alberto.mendoza@magmalabs.io', password: 'Please123') context 'When a spree order is sent to odoo' do before :each do From 2a09efd7d804a155d15d9bee736e5ce918273347 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Wed, 11 Apr 2018 10:48:34 -0500 Subject: [PATCH 15/19] removed test --- spec/models/odoo/order_line_spec.rb | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/spec/models/odoo/order_line_spec.rb b/spec/models/odoo/order_line_spec.rb index be07e25..390e261 100644 --- a/spec/models/odoo/order_line_spec.rb +++ b/spec/models/odoo/order_line_spec.rb @@ -9,7 +9,6 @@ context 'When a spree order is sent to odoo' do before :each do - binding.pry calculator = product.shipping_category.shipping_methods.first.calculator calculator.preferred_amount = "0.0" calculator.save @@ -22,18 +21,6 @@ it 'should find product in odoo' do expect(ProductProduct.find(default_code: 'product-3-935')).to be_truthy end - - it 'should complete an order' do - binding.pry - product = order.products.last - product.name = "Samsung Tv" - product.save! - product.slug = "samsung-tv" - product.save! - product.reload - order.reload - OdooService.create_order(order) - odoo_order = SaleOrder.find(['name', '=', order.number]) - end end + end From d9f92fbb7a11cd8cf377d67cc6a446e1d7ba4a97 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Wed, 11 Apr 2018 10:49:11 -0500 Subject: [PATCH 16/19] add order spec --- spec/models/odoo/order_spec.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 spec/models/odoo/order_spec.rb diff --git a/spec/models/odoo/order_spec.rb b/spec/models/odoo/order_spec.rb new file mode 100644 index 0000000..b2a29a3 --- /dev/null +++ b/spec/models/odoo/order_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe Odoo::Order do + let(:order) { create(:order_with_line_items, state: 'complete') } + + context 'When a spree order is sent to odoo' do + + it 'should have total sale price in odoo as in solidus' do + product = order.products.last + product.name = "Samsung Tv" + product.save! + product.slug = "samsung-tv" + product.save! + product.reload + order.reload + binding.pry + OdooService.create_order(order) + + expect(SaleOrder.last.amount_total).to eq(order.total - order.ship_total) + end + end +end From e4f93f8d4c465becadafcdf7c1e1cb0af3201319 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Wed, 11 Apr 2018 12:51:27 -0500 Subject: [PATCH 17/19] remove space and binding pry --- spec/models/odoo/order_line_spec.rb | 1 - spec/models/odoo/order_spec.rb | 1 - 2 files changed, 2 deletions(-) diff --git a/spec/models/odoo/order_line_spec.rb b/spec/models/odoo/order_line_spec.rb index 390e261..39ab36f 100644 --- a/spec/models/odoo/order_line_spec.rb +++ b/spec/models/odoo/order_line_spec.rb @@ -22,5 +22,4 @@ expect(ProductProduct.find(default_code: 'product-3-935')).to be_truthy end end - end diff --git a/spec/models/odoo/order_spec.rb b/spec/models/odoo/order_spec.rb index b2a29a3..abf2e50 100644 --- a/spec/models/odoo/order_spec.rb +++ b/spec/models/odoo/order_spec.rb @@ -13,7 +13,6 @@ product.save! product.reload order.reload - binding.pry OdooService.create_order(order) expect(SaleOrder.last.amount_total).to eq(order.total - order.ship_total) From 8761c0baa525fd92e309422c53514a38a8052ef5 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Mon, 16 Apr 2018 16:49:01 -0500 Subject: [PATCH 18/19] refactor and add tests --- spec/models/odoo/country_spec.rb | 2 +- spec/models/odoo/order_line_spec.rb | 11 +---------- spec/models/odoo/state_spec.rb | 2 +- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/spec/models/odoo/country_spec.rb b/spec/models/odoo/country_spec.rb index a483e03..85a8a09 100644 --- a/spec/models/odoo/country_spec.rb +++ b/spec/models/odoo/country_spec.rb @@ -4,10 +4,10 @@ let!(:order) { create(:order_with_line_items, state: 'complete') } context 'when an order is completed in solidus and Sale Order line is created in Odoo' do - it 'should have a country' do address = order.ship_address.country.name country = ResCountry.find(['name', '=', address]).first.name + expect('United States').to eq(country) end end diff --git a/spec/models/odoo/order_line_spec.rb b/spec/models/odoo/order_line_spec.rb index 39ab36f..ea09d6f 100644 --- a/spec/models/odoo/order_line_spec.rb +++ b/spec/models/odoo/order_line_spec.rb @@ -1,18 +1,9 @@ require 'spec_helper' describe Odoo::OrderLine do - let!(:shipping_option) { create(:shipping_method, cost: 0) } - let(:order) { create(:order_with_line_items, state: 'complete', line_items: [create(:line_item, product: product)]) } - let(:product) { create(:product, shipping_category: shipping_category) } - let(:shipping_category) { create(:shipping_category, shipping_methods: [shipping_method]) } - let(:shipping_method) { create(:shipping_method) } + let(:order) { create(:order_with_line_items, state: 'complete') } context 'When a spree order is sent to odoo' do - before :each do - calculator = product.shipping_category.shipping_methods.first.calculator - calculator.preferred_amount = "0.0" - calculator.save - end it 'should throw "name" error if product does not exist in odoo' do line_item = order.products.last expect(ProductProduct.find(default_code: line_item.slug)).to be_blank diff --git a/spec/models/odoo/state_spec.rb b/spec/models/odoo/state_spec.rb index 9ad8345..ea8a605 100644 --- a/spec/models/odoo/state_spec.rb +++ b/spec/models/odoo/state_spec.rb @@ -2,12 +2,12 @@ describe Odoo::Country do let!(:order) { create(:order_with_line_items, state: 'complete') } - Ooor.new(url: 'https://magmalabs1.odoo.com', database: 'magmalabs1', username: 'alberto.mendoza@magmalabs.io', password: 'Please123') context 'when an order is completed in solidus and Sale Order line is created in Odoo' do it 'should have a state' do address = order.ship_address.state.name state = ResCountryState.find(['name', '=', address]).first.name + expect('Alabama').to eq(state) end end From 12644588bbe0c8a9075cb16ef30eb6cd37d38436 Mon Sep 17 00:00:00 2001 From: Alberto Mendoza Date: Mon, 16 Apr 2018 18:38:43 -0500 Subject: [PATCH 19/19] refactor country and order spec --- spec/models/odoo/country_spec.rb | 9 +++++---- spec/models/odoo/order_spec.rb | 16 +++++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/spec/models/odoo/country_spec.rb b/spec/models/odoo/country_spec.rb index 85a8a09..3c00960 100644 --- a/spec/models/odoo/country_spec.rb +++ b/spec/models/odoo/country_spec.rb @@ -4,11 +4,12 @@ let!(:order) { create(:order_with_line_items, state: 'complete') } context 'when an order is completed in solidus and Sale Order line is created in Odoo' do + before(:each) do + @address = order.ship_address.country.name + @country = ResCountry.find(['name', '=', @address]).first.name + end it 'should have a country' do - address = order.ship_address.country.name - country = ResCountry.find(['name', '=', address]).first.name - - expect('United States').to eq(country) + expect('United States').to eq(@country) end end end diff --git a/spec/models/odoo/order_spec.rb b/spec/models/odoo/order_spec.rb index abf2e50..c7dc770 100644 --- a/spec/models/odoo/order_spec.rb +++ b/spec/models/odoo/order_spec.rb @@ -4,15 +4,17 @@ let(:order) { create(:order_with_line_items, state: 'complete') } context 'When a spree order is sent to odoo' do + before(:each) do + @product = order.products.last + @product.name = "Samsung Tv" + @product.save! + @product.slug = "samsung-tv" + @product.save! + @product.reload + order.reload + end it 'should have total sale price in odoo as in solidus' do - product = order.products.last - product.name = "Samsung Tv" - product.save! - product.slug = "samsung-tv" - product.save! - product.reload - order.reload OdooService.create_order(order) expect(SaleOrder.last.amount_total).to eq(order.total - order.ship_total)