diff --git a/lib/open_food_web/order_cycle_form_applicator.rb b/lib/open_food_web/order_cycle_form_applicator.rb new file mode 100644 index 0000000000..3441582dae --- /dev/null +++ b/lib/open_food_web/order_cycle_form_applicator.rb @@ -0,0 +1,18 @@ +module OpenFoodWeb + class OrderCycleFormApplicator + def initialize(order_cycle) + @order_cycle = order_cycle + end + + def go! + @order_cycle.incoming_exchanges.each do |exchange| + add_exchange(exchange[:enterprise_id], @order_cycle.coordinator_id) + end + end + + def add_exchange(sender_id, receiver_id) + @order_cycle.exchanges.create! :sender_id => sender_id, :receiver_id => receiver_id + end + + end +end diff --git a/spec/lib/open_food_web/order_cycle_form_applicator.rb b/spec/lib/open_food_web/order_cycle_form_applicator.rb new file mode 100644 index 0000000000..43a065fc92 --- /dev/null +++ b/spec/lib/open_food_web/order_cycle_form_applicator.rb @@ -0,0 +1,18 @@ +require 'open_food_web/order_cycle_form_applicator' + +module OpenFoodWeb + describe OrderCycleFormApplicator do + it "creates new exchanges for incoming_exchanges" do + coordinator_id = 123 + supplier_id = 456 + + oc = double(:order_cycle, :coordinator_id => coordinator_id, :incoming_exchanges => [{:enterprise_id => supplier_id}]) + + applicator = OrderCycleFormApplicator.new(oc) + + applicator.should_receive(:add_exchange).with(supplier_id, coordinator_id) + + applicator.go! + end + end +end