Sha256: b938a82a9edfc2904827b39540962ffe25c9353b8ff373c9b6ec23db1e179687

Contents?: true

Size: 1.98 KB

Versions: 43

Compression:

Stored size: 1.98 KB

Contents

require 'spec_helper'

describe Spree::Promotion::Rules::FirstRepeatPurchaseSince do
  describe "#applicable?" do
    subject { described_class.new.applicable?(promotable) }

    context "when the promotable is an order" do
      let(:promotable) { Spree::Order.new }

      it { is_expected.to be true }
    end

    context "when the promotable is not a order" do
      let(:promotable) { Spree::LineItem.new }

      it { is_expected.to be false }
    end
  end

  describe "eligible?" do
    let(:instance) { described_class.new }
    subject { instance.eligible?(order) }

    before do
      instance.preferred_days_ago = 365
    end

    context "when the order does not have a user" do
      let(:order) { Spree::Order.new }

      it { is_expected.to be false }
    end

    context "when the order has a user" do
      let(:order) { create :order }
      let(:user) { order.user }

      context "when the user has completed orders" do
        let(:order_completion_date_1) { 1.day.ago }
        let(:order_completion_date_2) { 1.day.ago }
        before do
          old_order_1 = create :completed_order_with_totals, user: user
          old_order_1.update_attributes(completed_at: order_completion_date_1)

          old_order_2 = create :completed_order_with_totals, user: user
          old_order_2.update_attributes(completed_at: order_completion_date_2)
        end

        context "the last completed order was greater than the preferred days ago" do
          let(:order_completion_date_1) { 14.months.ago }
          let(:order_completion_date_2) { 13.months.ago }

          it { is_expected.to be true }
        end

        context "the last completed order was less than the preferred days ago" do
          let(:order_completion_date_1) { 14.months.ago }
          let(:order_completion_date_2) { 11.months.ago }

          it { is_expected.to be false }
        end
      end

      context "when the user has no completed orders " do
        it { is_expected.to be false }
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
solidus_core-2.3.1 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.2.2 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.1.1 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.0.3 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-1.4.2 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-1.3.2 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-1.2.3 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-1.1.4 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.3.0 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.3.0.rc3 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.3.0.rc2 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.3.0.rc1 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.3.0.beta1 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.0.2 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-1.4.1 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.2.1 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.2.0 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.2.0.rc1 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.2.0.beta1 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb
solidus_core-2.1.0 spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb