diff --git a/app/models/spree/variant_decorator.rb b/app/models/spree/variant_decorator.rb index 1f794da..2a61325 100644 --- a/app/models/spree/variant_decorator.rb +++ b/app/models/spree/variant_decorator.rb @@ -1,12 +1,13 @@ module Spree - Variant.class_eval do has_many :stock_requests + def waiting_list + stock_requests.notified(false) + end + def notify_waiting_list - stock_requests.notified(false).each &:notify! - product.notify_waiting_list + waiting_list.each &:notify! end end - end diff --git a/lib/spree_waiting_list/factories.rb b/lib/spree_waiting_list/factories.rb index a6ce48c..b19f404 100644 --- a/lib/spree_waiting_list/factories.rb +++ b/lib/spree_waiting_list/factories.rb @@ -1,7 +1,7 @@ FactoryGirl.define do factory :stock_request, class: Spree::StockRequest do - variant + variant { |s| s.association(:base_variant) } email 'test@home.org' end diff --git a/spec/models/spree/variant_spec.rb b/spec/models/spree/variant_spec.rb index 62bd237..6fd4aa8 100644 --- a/spec/models/spree/variant_spec.rb +++ b/spec/models/spree/variant_spec.rb @@ -1,9 +1,27 @@ require 'spec_helper' -module Spree +describe Spree::Variant do + let(:variant) { create(:variant) } - describe Variant do + context 'with stock_request' do + before(:each) do + create(:stock_request, variant: variant) + end - end + it '#waiting_list' do + expect(variant.waiting_list.count).to eq(1) + end + + context '#notify_waiting_list' do + it 'should notify the waiting list when some product get in the stock' do + expect(variant.total_on_hand).to eq(0) + expect(variant.waiting_list.count).to eq(1) + stockItem = Spree::StockItem.find_by!(variant: variant) + stockItem.adjust_count_on_hand(1) + + expect(variant.waiting_list.count).to eq(0) + end + end + end end