From ec39957763cd348ce563ddd82d439ebee9f20509 Mon Sep 17 00:00:00 2001 From: Stephane Bounmy Date: Mon, 26 Aug 2013 22:22:08 +0200 Subject: [PATCH] now support spree 2.0.X --- Rakefile | 2 +- .../javascripts/admin/spree_multi_lingual.js | 2 +- .../javascripts/store/spree_multi_lingual.js | 2 +- .../admin/spree_multi_lingual.css.erb | 3 +- .../stylesheets/store/spree_multi_lingual.css | 3 -- ...rator.rb => store_controller_decorator.rb} | 2 +- app/mailers/spree/order_mailer_decorator.rb | 23 ++++---- lib/spree_multi_lingual.rb | 4 +- .../de/admin/products_spec.rb | 3 +- .../option_types_spec.rb | 0 spec/{requests => features}/promotion_spec.rb | 0 spec/{requests => features}/taxons_spec.rb | 8 +-- spec/lib/search/base_spec.rb | 10 ++-- spec/mailers/order_mailer_spec.rb | 2 +- spec/requests/products_spec.rb | 54 ------------------- spec/spec_helper.rb | 6 +-- spree_multi_lingual.gemspec | 14 +++-- 17 files changed, 43 insertions(+), 95 deletions(-) rename app/controllers/{controller_helpers_decorator.rb => store_controller_decorator.rb} (92%) rename spec/{requests => features}/de/admin/products_spec.rb (95%) rename spec/{requests => features}/option_types_spec.rb (100%) rename spec/{requests => features}/promotion_spec.rb (100%) rename spec/{requests => features}/taxons_spec.rb (93%) delete mode 100644 spec/requests/products_spec.rb diff --git a/Rakefile b/Rakefile index 96ac80e..b788293 100644 --- a/Rakefile +++ b/Rakefile @@ -3,7 +3,7 @@ require 'rake/testtask' require 'rake/packagetask' require 'rubygems/package_task' require 'rspec/core/rake_task' -require 'spree/core/testing_support/common_rake' +require 'spree/testing_support/common_rake' RSpec::Core::RakeTask.new diff --git a/app/assets/javascripts/admin/spree_multi_lingual.js b/app/assets/javascripts/admin/spree_multi_lingual.js index e108d25..1411059 100644 --- a/app/assets/javascripts/admin/spree_multi_lingual.js +++ b/app/assets/javascripts/admin/spree_multi_lingual.js @@ -1,4 +1,4 @@ -//= require admin/spree_core +//= require admin/spree_backend //= require admin/spree_multi_lingual_class var handle_rename = function(e, data) { diff --git a/app/assets/javascripts/store/spree_multi_lingual.js b/app/assets/javascripts/store/spree_multi_lingual.js index d5cb5c7..d10fba7 100644 --- a/app/assets/javascripts/store/spree_multi_lingual.js +++ b/app/assets/javascripts/store/spree_multi_lingual.js @@ -1 +1 @@ -//= require store/spree_core +//= require store/spree_frontend diff --git a/app/assets/stylesheets/admin/spree_multi_lingual.css.erb b/app/assets/stylesheets/admin/spree_multi_lingual.css.erb index 3f86e87..8a42737 100644 --- a/app/assets/stylesheets/admin/spree_multi_lingual.css.erb +++ b/app/assets/stylesheets/admin/spree_multi_lingual.css.erb @@ -1,9 +1,8 @@ /* - *= require admin/spree_core + *= require admin/spree_backend */ - input.sml-localized-field[type='text'] { background-position: 100% 50%; background-repeat: no-repeat; diff --git a/app/assets/stylesheets/store/spree_multi_lingual.css b/app/assets/stylesheets/store/spree_multi_lingual.css index 94dbe33..e69de29 100644 --- a/app/assets/stylesheets/store/spree_multi_lingual.css +++ b/app/assets/stylesheets/store/spree_multi_lingual.css @@ -1,3 +0,0 @@ -/* - *= require store/spree_core -*/ diff --git a/app/controllers/controller_helpers_decorator.rb b/app/controllers/store_controller_decorator.rb similarity index 92% rename from app/controllers/controller_helpers_decorator.rb rename to app/controllers/store_controller_decorator.rb index 1fcc287..57b7dae 100644 --- a/app/controllers/controller_helpers_decorator.rb +++ b/app/controllers/store_controller_decorator.rb @@ -1,4 +1,4 @@ -Spree::Core::ControllerHelpers::Common.module_eval do +Spree::StoreController.class_eval do private # Internal : Set user I18n.locale diff --git a/app/mailers/spree/order_mailer_decorator.rb b/app/mailers/spree/order_mailer_decorator.rb index ef3c148..529d062 100644 --- a/app/mailers/spree/order_mailer_decorator.rb +++ b/app/mailers/spree/order_mailer_decorator.rb @@ -1,20 +1,17 @@ Spree::OrderMailer.class_eval do # There might be a cleaner way to set locale instead of rewriting each method - def confirm_email(order, resend=false) - @order = find_order(order) + def confirm_email(order, resend = false) + @order = order.respond_to?(:id) ? order : Spree::Order.find(order) I18n.locale = @order.locale - subject = (resend ? "[#{t(:resend).upcase}] " : "") - subject += "#{Spree::Config[:site_name]} #{t('order_mailer.confirm_email.subject')} ##{@order.number}" - mail(:to => @order.email, - :subject => subject) + subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '') + subject += "#{Spree::Config[:site_name]} #{Spree.t('order_mailer.confirm_email.subject')} ##{@order.number}" + mail(to: @order.email, from: from_address, subject: subject) end - def cancel_email(order, resend=false) - @order = find_order(order) - I18n.locale = @order.locale - subject = (resend ? "[#{t(:resend).upcase}] " : "") - subject += "#{Spree::Config[:site_name]} #{t('order_mailer.cancel_email.subject')} ##{@order.number}" - mail(:to => @order.email, - :subject => subject) + def cancel_email(order, resend = false) + @order = order.respond_to?(:id) ? order : Spree::Order.find(order) + subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '') + subject += "#{Spree::Config[:site_name]} #{Spree.t('order_mailer.cancel_email.subject')} ##{@order.number}" + mail(to: @order.email, from: from_address, subject: subject) end end \ No newline at end of file diff --git a/lib/spree_multi_lingual.rb b/lib/spree_multi_lingual.rb index ee9dbb1..9e50176 100644 --- a/lib/spree_multi_lingual.rb +++ b/lib/spree_multi_lingual.rb @@ -1,5 +1,7 @@ require 'spree_core' -require 'spree_promo' +require 'spree_backend' +require 'spree_frontend' +require 'spree_api' require 'spree_multi_lingual/engine' require "globalize3" require "easy_globalize3_accessors" diff --git a/spec/requests/de/admin/products_spec.rb b/spec/features/de/admin/products_spec.rb similarity index 95% rename from spec/requests/de/admin/products_spec.rb rename to spec/features/de/admin/products_spec.rb index 8e77270..f79e1d5 100644 --- a/spec/requests/de/admin/products_spec.rb +++ b/spec/features/de/admin/products_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' -describe "admin products" do + +feature "admin products" do stub_authorization! let!(:product) { FactoryGirl.create(:product) } diff --git a/spec/requests/option_types_spec.rb b/spec/features/option_types_spec.rb similarity index 100% rename from spec/requests/option_types_spec.rb rename to spec/features/option_types_spec.rb diff --git a/spec/requests/promotion_spec.rb b/spec/features/promotion_spec.rb similarity index 100% rename from spec/requests/promotion_spec.rb rename to spec/features/promotion_spec.rb diff --git a/spec/requests/taxons_spec.rb b/spec/features/taxons_spec.rb similarity index 93% rename from spec/requests/taxons_spec.rb rename to spec/features/taxons_spec.rb index d56791a..a33a613 100644 --- a/spec/requests/taxons_spec.rb +++ b/spec/features/taxons_spec.rb @@ -22,7 +22,7 @@ click_icon :edit click_link "fr" - page.should have_content("BONJOUR") + find("input#taxonomy_name_fr")[:value].should == "Bonjour" within("h1") { click_link "es" } @@ -31,7 +31,7 @@ click_icon :edit within("h1") { click_link "es" } - page.should have_content("HOLA") + find("input#taxonomy_name_es")[:value].should == "Hola" end context "edit taxons" do @@ -68,8 +68,8 @@ suffix = "#{locale.to_sym == I18n.locale ? "" : "_#{locale}"}" - first("input#taxon_name#{suffix}")[:value].should == "TAXON - #{locale.upcase}" - first("textarea#taxon_description#{suffix}")[:value].should == "TAXON Description - #{locale * 20}" + find("input#taxon_name#{suffix}")[:value].should == "TAXON - #{locale.upcase}" + find("textarea#taxon_description#{suffix}")[:value].should == "TAXON Description - #{locale * 20}" end # set local and ensure each page is visitable diff --git a/spec/lib/search/base_spec.rb b/spec/lib/search/base_spec.rb index 555af93..4c1b6d4 100644 --- a/spec/lib/search/base_spec.rb +++ b/spec/lib/search/base_spec.rb @@ -1,11 +1,13 @@ require 'spec_helper' describe Spree::Core::Search::Base do + let(:stock_location) { create(:stock_location) } before do - include ::Spree::ProductFilters - @product1 = create(:product, :name => "RoR Shirt", :name_fr => "RoR Chemise", :name_es => "RoR Camisa", :price => 9.00, :on_hand => 1, :available_on => 2.days.ago) - @product2 = create(:product, :name => "Trouser", :name_fr => "Pantalon", :name_es => "Pantalones", :price => 9.00, :on_hand => 1) + include ::Spree::Core::ProductFilters + @product1 = create(:product, :name => "RoR Shirt", :name_fr => "RoR Chemise", :name_es => "RoR Camisa", :price => 9.00, :available_on => 2.days.ago) + @product2 = create(:product, :name => "Trouser", :name_fr => "Pantalon", :name_es => "Pantalones", :price => 9.00 ) + stock_location.stock_items.update_all(count_on_hand: 1) end it "returns all products by default" do @@ -47,7 +49,7 @@ end it 'should return product without translation' do - create(:product, :name => "RoR Shirt", :price => 9.00, :on_hand => 1) + create(:product, :name => "RoR Shirt", :price => 9.00) params = { :per_page => "" } I18n.locale = :fr searcher = Spree::Core::Search::Base.new(params) diff --git a/spec/mailers/order_mailer_spec.rb b/spec/mailers/order_mailer_spec.rb index 74629f9..872b88b 100644 --- a/spec/mailers/order_mailer_spec.rb +++ b/spec/mailers/order_mailer_spec.rb @@ -6,7 +6,7 @@ module Spree include EmailSpec::Helpers include EmailSpec::Matchers - let(:order) { FactoryGirl.create(:order, :locale => :fr) } + let(:order) { create(:order, :locale => :fr) } let(:mail) { ActionMailer::Base.deliveries.last } it "should use i18n email template" do diff --git a/spec/requests/products_spec.rb b/spec/requests/products_spec.rb deleted file mode 100644 index 4a147ea..0000000 --- a/spec/requests/products_spec.rb +++ /dev/null @@ -1,54 +0,0 @@ -require 'spec_helper' - -feature "Products multi lingual", :js => true do - stub_authorization! - - background do - @product = FactoryGirl.create(:product, :name => "ror mug", :price => 30) - end - - scenario "admin should be able to edit product page i18n" do - visit spree.admin_products_path - click_icon :edit - - # filling some content in name, meta description, keywords - %w(fr en es).each do |locale| - select locale, :from => "spree_multi_lingual_dropdown" - # en is the default language so the selector doesnt apply - suffix = "#{locale.to_sym == I18n.locale ? "" : "_#{locale}"}" - - fill_in "product_name#{suffix}", :with => "ror mug #{locale}" - fill_in "product_description#{suffix}", :with => "foo bar #{locale}" - fill_in "product_meta_description#{suffix}", :with => "meta #{locale} desc" - fill_in "product_meta_keywords#{suffix}", :with => "#{locale} keywords" - end - click_button "Update" - - # Checking if each language have been corectly updated - %w(fr en es).each do |locale| - suffix = "#{locale.to_sym == I18n.locale ? "" : "_#{locale}"}" - select locale, :from => "spree_multi_lingual_dropdown" - first("input#product_name#{suffix}")[:value].should == "ror mug #{locale}" - first("input#product_meta_description#{suffix}")[:value].should == "meta #{locale} desc" - first("input#product_meta_keywords#{suffix}")[:value].should == "#{locale} keywords" - end - end - - scenario "product permalink should be editable" do - visit spree.admin_products_path - click_icon :edit - - %w(fr en es).each do |locale| - select locale, :from => "spree_multi_lingual_dropdown" - suffix = "#{locale.to_sym == I18n.locale ? "" : "_#{locale}"}" - fill_in "product_permalink#{suffix}", :with => "ror-mug-#{locale}" - fill_in "product_name#{suffix}", :with => "ror mug #{locale}" - end - click_button "Update" - - %w(fr en es).each do |locale| - visit "/#{locale}/products/ror-mug-#{locale}" - page.should have_content "ror mug #{locale}" - end - end -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 55ff71f..dfc2ac2 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -11,9 +11,9 @@ # in spec/support/ and its subdirectories. Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each {|f| require f } -require 'spree/core/testing_support/factories' -require 'spree/core/testing_support/authorization_helpers' -require 'spree/core/testing_support/capybara_ext' +require 'spree/testing_support/factories' +require 'spree/testing_support/authorization_helpers' +require 'spree/testing_support/capybara_ext' RSpec.configure do |config| # == Mock Framework diff --git a/spree_multi_lingual.gemspec b/spree_multi_lingual.gemspec index 335419a..b47b4cd 100644 --- a/spree_multi_lingual.gemspec +++ b/spree_multi_lingual.gemspec @@ -16,8 +16,10 @@ Gem::Specification.new do |s| s.require_path = 'lib' s.requirements << 'none' - s.add_dependency 'spree_core', '~> 1.3' - s.add_dependency 'spree_promo', '~> 1.3' + s.add_dependency 'spree_core', '~> 2.0' + s.add_dependency 'spree_backend', '~> 2.0' + s.add_dependency 'spree_frontend', '~> 2.0' + s.add_dependency 'spree_api', '~> 2.0' s.add_dependency 'i18n' s.add_dependency 'globalize3', '0.2.0' s.add_dependency 'easy_globalize3_accessors' @@ -26,8 +28,9 @@ Gem::Specification.new do |s| s.add_dependency 'coffee-rails' - s.add_development_dependency 'capybara', '2.0.2' - s.add_development_dependency 'factory_girl_rails', '~> 1.7.0' + s.add_development_dependency 'capybara', '2.1.0' + s.add_development_dependency 'spree_api', '~> 2.0' + s.add_development_dependency 'factory_girl_rails', '~> 4.2' s.add_development_dependency 'ffaker' s.add_development_dependency 'rspec-rails', '~> 2.9.0' s.add_development_dependency 'sqlite3' @@ -36,7 +39,8 @@ Gem::Specification.new do |s| s.add_development_dependency 'awesome_print' s.add_development_dependency 'deface', '~> 1.0.0.rc2' s.add_development_dependency 'email_spec', '~> 1.2.1' - # s.add_development_dependency 'debugger' + s.add_development_dependency 'selenium-webdriver', '2.35.0' # Seems Spree doesn't require it correctly or there is a problem with extensions maybe? Still, it is needed to work with the dummy app! + # s.add_development_dependency 'debugger' s.add_development_dependency 'sass-rails' end