fixed paypal_confirm order state

This commit is contained in:
Bounmy Stephane 2012-05-24 23:02:15 +02:00
parent 4b8dbdbfeb
commit bf00623328
5 changed files with 30 additions and 8 deletions

View File

@ -90,10 +90,11 @@ module Spree
@order.ship_address = order_ship_address
@order.bill_address ||= order_ship_address
end
@order.state = "payment"
@order.save
if payment_method.preferred_review
@order.next
render 'spree/shared/paypal_express_confirm'
else
paypal_finish

View File

@ -12,4 +12,8 @@ class Spree::BillingIntegration::PaypalExpress < Spree::BillingIntegration
def provider_class
ActiveMerchant::Billing::PaypalExpressGateway
end
def payment_profiles_supported?
!!preferred_review
end
end

View File

@ -13,4 +13,7 @@ class Spree::BillingIntegration::PaypalExpressUk < Spree::BillingIntegration
ActiveMerchant::Billing::PaypalExpressGateway
end
def payment_profiles_supported?
!!preferred_review
end
end

View File

@ -75,7 +75,10 @@ module Spree
end
context "paypal_confirm" do
before { PaymentMethod.should_receive(:find).at_least(1).with("123").and_return(paypal_gateway) }
before do
PaymentMethod.should_receive(:find).at_least(1).with("123").and_return(paypal_gateway)
order.stub!(:payment_method).and_return paypal_gateway
end
context "with auto_capture and no review" do
before do
@ -100,7 +103,10 @@ module Spree
end
context "with review" do
before { paypal_gateway.stub(:preferred_review => true) }
before do
paypal_gateway.stub(:preferred_review => true, :payment_profiles_supported? => true)
order.stub_chain(:payment, :payment_method, :payment_profiles_supported? => true)
end
it "should render review" do
paypal_gateway.provider.should_receive(:details_for).with(token).and_return(details_for_response)
@ -108,7 +114,15 @@ module Spree
get :paypal_confirm, {:order_id => order.number, :payment_method_id => "123", :token => token, :PayerID => "FWRVKNRRZ3WUC" }
response.should render_template("shared/paypal_express_confirm")
order.state.should == "payment"
order.state.should == "confirm"
end
it "order state should not change on multiple call" do
paypal_gateway.provider.should_receive(:details_for).twice.with(token).and_return(details_for_response)
get :paypal_confirm, {:order_id => order.number, :payment_method_id => "123", :token => token, :PayerID => "FWRVKNRRZ3WUC" }
get :paypal_confirm, {:order_id => order.number, :payment_method_id => "123", :token => token, :PayerID => "FWRVKNRRZ3WUC" }
order.state.should == "confirm"
end
end
@ -116,7 +130,8 @@ module Spree
before do
paypal_gateway.stub(:preferred_review => true)
paypal_gateway.stub(:preferred_no_shipping => false)
paypal_gateway.stub(:payment_profiles_supported? => true)
order.stub_chain(:payment, :payment_method, :payment_profiles_supported? => true)
details_for_response.stub(:params => details_for_response.params.merge({'first_name' => 'Dr.', 'last_name' => 'Evil'}),
:address => {'address1' => 'Apt. 187', 'address2'=> 'Some Str.', 'city' => 'Chevy Chase', 'country' => 'US', 'zip' => '20815', 'state' => 'MD' })
@ -128,6 +143,7 @@ module Spree
get :paypal_confirm, {:order_id => order.number, :payment_method_id => "123", :token => token, :PayerID => "FWRVKNRRZ3WUC" }
order.ship_address.address1.should == "Apt. 187"
order.state.should == "confirm"
response.should render_template("shared/paypal_express_confirm")
end
end

View File

@ -26,15 +26,13 @@ feature "paypal express" do
['firstname', 'lastname', 'address1', 'city', 'zipcode', 'phone'].each do |field|
fill_in "order_#{str_addr}_attributes_#{field}", :with => "#{address.send(field)}"
end
save_and_open_page
select "#{address.state.name}", :from => "order_#{str_addr}_attributes_state_id"
check "order_use_billing"
click_button "Save and Continue"
choose "Paypal"
pending
choose "Paypal"
click_button "Save and Continue"
end
end