From f0f165a1290beac5c9614bfba7073c8289628bbf Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Wed, 24 Sep 2014 14:00:08 +1000 Subject: [PATCH 1/3] Explicitly create enterprises in order_cycle factory to fix intermittent fail --- spec/factories.rb | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/spec/factories.rb b/spec/factories.rb index d605b5b759..db035ba16a 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -10,21 +10,29 @@ FactoryGirl.define do after(:create) do |oc| # Suppliers + supplier1 = create(:supplier_enterprise) + supplier2 = create(:supplier_enterprise) + + # Incoming Exchanges ex1 = create(:exchange, :order_cycle => oc, :incoming => true, - :sender => create(:supplier_enterprise), :receiver => oc.coordinator) + :sender => supplier1, :receiver => oc.coordinator) ex2 = create(:exchange, :order_cycle => oc, :incoming => true, - :sender => create(:supplier_enterprise), :receiver => oc.coordinator) + :sender => supplier2, :receiver => oc.coordinator) ExchangeFee.create!(exchange: ex1, enterprise_fee: create(:enterprise_fee, enterprise: ex1.sender)) ExchangeFee.create!(exchange: ex2, enterprise_fee: create(:enterprise_fee, enterprise: ex2.sender)) - # Distributors + #Distributors + distributor1 = create(:distributor_enterprise) + distributor2 = create(:distributor_enterprise) + + # Outgoing Exchanges ex3 = create(:exchange, :order_cycle => oc, :incoming => false, - :sender => oc.coordinator, :receiver => create(:distributor_enterprise), + :sender => oc.coordinator, :receiver => distributor1, :pickup_time => 'time 0', :pickup_instructions => 'instructions 0') ex4 = create(:exchange, :order_cycle => oc, :incoming => false, - :sender => oc.coordinator, :receiver => create(:distributor_enterprise), + :sender => oc.coordinator, :receiver => distributor2, :pickup_time => 'time 1', :pickup_instructions => 'instructions 1') ExchangeFee.create!(exchange: ex3, enterprise_fee: create(:enterprise_fee, enterprise: ex3.receiver)) From b5ef24bacb63319a37c39770b40b43c89ea4fdc8 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Wed, 24 Sep 2014 16:18:59 +1000 Subject: [PATCH 2/3] table matchers use capybara matchers rather than wait_until with micro-sleep --- spec/support/matchers/table_matchers.rb | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/spec/support/matchers/table_matchers.rb b/spec/support/matchers/table_matchers.rb index 146002b751..053562b9e4 100644 --- a/spec/support/matchers/table_matchers.rb +++ b/spec/support/matchers/table_matchers.rb @@ -3,20 +3,15 @@ RSpec::Matchers.define :have_table_row do |row| match_for_should do |node| @row = row - false_on_timeout_error do - wait_until { rows_under(node).include? row } - end + node.has_selector? "tr", text: row.join(" ").strip # Check for appearance + rows_under(node).include? row # Robust check of columns end match_for_should_not do |node| @row = row - false_on_timeout_error do - # Without this sleep, we trigger capybara's wait when looking up the table, for the full - # period of default_wait_time. - sleep 0.1 - wait_until { !rows_under(node).include? row } - end + node.has_no_selector? "tr", text: row.join(" ").strip # Check for appearance + !rows_under(node).include? row # Robust check of columns end failure_message_for_should do |text| @@ -27,17 +22,7 @@ RSpec::Matchers.define :have_table_row do |row| "expected not to find table row #{@row}" end - def rows_under(node) node.all('tr').map { |tr| tr.all('th, td').map(&:text) } end - - def false_on_timeout_error - yield - rescue TimeoutError - false - else - true - end - end From ed91cd646305fcb4ba743e96266e30b6ce5b5f85 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Wed, 24 Sep 2014 20:48:52 +1000 Subject: [PATCH 3/3] Make sure d1 != d2 --- spec/features/admin/orders_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/admin/orders_spec.rb b/spec/features/admin/orders_spec.rb index 3ed4c4ca2f..908ce4042e 100644 --- a/spec/features/admin/orders_spec.rb +++ b/spec/features/admin/orders_spec.rb @@ -113,7 +113,7 @@ feature %q{ let!(:supplier1) { order_cycle1.suppliers.first } let!(:supplier2) { order_cycle1.suppliers.last } let!(:distributor1) { order_cycle1.distributors.first } - let!(:distributor2) { order_cycle1.distributors.last } + let!(:distributor2) { order_cycle1.distributors.reject{ |d| d == distributor1 }.last } # ensure d1 != d2 let(:product) { order_cycle1.products.first } before(:each) do