Skip to content

Commit

Permalink
Merge pull request #2928 from geminimvp/first_order_promo_prereq
Browse files Browse the repository at this point in the history
Remove user prereq from First Order promorule
  • Loading branch information
kennyadsl authored Jan 31, 2019
2 parents f7a9564 + 0e0b126 commit 14a9eb1
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 5 deletions.
2 changes: 0 additions & 2 deletions core/app/models/spree/promotion/rules/first_order.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ def eligible?(order, options = {})
if !completed_orders.blank? && completed_orders.first != order
eligibility_errors.add(:base, eligibility_error_message(:not_first_order))
end
else
eligibility_errors.add(:base, eligibility_error_message(:no_user_or_email_specified))
end

eligibility_errors.empty?
Expand Down
10 changes: 10 additions & 0 deletions core/lib/spree/testing_support/factories/promotion_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,15 @@
end
end
factory :promotion_with_item_total_rule, traits: [:with_item_total_rule]
trait :with_first_order_rule do
after(:create) do |promotion, _evaluator|
rule = Spree::Promotion::Rules::FirstOrder.create!(
promotion: promotion,
)
promotion.rules << rule
promotion.save!
end
end
factory :promotion_with_first_order_rule, traits: [:with_first_order_rule]
end
end
6 changes: 3 additions & 3 deletions core/spec/models/spree/promotion/rules/first_order_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
let(:user) { mock_model(Spree::LegacyUser) }

context "without a user or email" do
it { expect(rule).not_to be_eligible(order) }
it "sets an error message" do
it { expect(rule).to be_eligible(order) }
it "does not set an error message" do
rule.eligible?(order)
expect(rule.eligibility_errors.full_messages.first).
to eq "You need to login or provide your email before applying this coupon code."
to be_nil
end
end

Expand Down
59 changes: 59 additions & 0 deletions frontend/spec/features/first_order_promotion_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# frozen_string_literal: true

require 'spec_helper'

RSpec.feature "First Order promotion" do
given!(:promotion) do
FactoryBot.create(
:promotion_with_first_order_rule,
:with_order_adjustment,
code: "FIRSTONEFREE",
per_code_usage_limit: 10
)
end

background do
create(:store)
product = FactoryBot.create(:product)
visit spree.root_path
click_link product.name
click_button "Add To Cart"
end

scenario "Adding first order promotion to cart and checking out as guest" do
fill_in "Coupon code", with: "FIRSTONEFREE"
click_button "Apply Code"
expect(page).to have_content("The coupon code was successfully applied to your order")

within("#cart_adjustments") do
expect(page).to have_content("-$10.00")
end
end

scenario "Trying to reuse first order promotion" do
previous_user = FactoryBot.create(
:user,
email: "sam@tom.com"
)
_previous_order = create(:completed_order_with_totals, user: previous_user)
fill_in "Coupon code", with: "FIRSTONEFREE"
click_button "Apply Code"
expect(page).to have_content("The coupon code was successfully applied to your order")
click_on "Checkout"
fill_in "Customer E-Mail", with: "sam@tom.com"
fill_in_address
click_on "Save and Continue"
expect(page).to_not have_content("#summary-order-charges")
end

def fill_in_address
address = "order_bill_address_attributes"
fill_in "#{address}_firstname", with: "Ryan"
fill_in "#{address}_lastname", with: "Bigg"
fill_in "#{address}_address1", with: "143 Swan Street"
fill_in "#{address}_city", with: "Richmond"
select "United States of America", from: "#{address}_country_id"
fill_in "#{address}_zipcode", with: "12345"
fill_in "#{address}_phone", with: "(555) 555-5555"
end
end

0 comments on commit 14a9eb1

Please sign in to comment.