require_relative '../spec_helper' describe 'product distribution', :type => :feature do let(:admin) { create :admin } let(:user_a) { create :user, groups: [create(:ordergroup)] } let(:user_b) { create :user, groups: [create(:ordergroup)] } let(:supplier) { create :supplier } let(:article) { create :article, supplier: supplier, unit_quantity: 5 } let(:order) { create(:order, supplier: supplier, article_ids: [article.id]) } let(:oa) { order.order_articles.first } describe :type => :feature do # make sure users have enough money to order before do [user_a, user_b].each do |user| ordergroup = Ordergroup.find(user.ordergroup.id) ordergroup.add_financial_transaction! 5000, 'for ordering', admin end end it 'agrees to documented example', :js => true do # gruppe a bestellt 2(3), weil sie auf jeden fall was von x bekommen will login user_a visit new_group_order_path(:order_id => order.id) 2.times { find("[data-increase_quantity='#{oa.id}']").click } 3.times { find("[data-increase_tolerance='#{oa.id}']").click } find('input[type=submit]').click expect(page).to have_selector('body') # gruppe b bestellt 2(0) login user_b visit new_group_order_path(:order_id => order.id) 2.times { find("[data-increase_quantity='#{oa.id}']").click } find('input[type=submit]').click expect(page).to have_selector('body') # gruppe a faellt ein dass sie doch noch mehr braucht von x und aendert auf 4(1). login user_a visit edit_group_order_path(order.group_order(user_a.ordergroup), :order_id => order.id) 2.times { find("[data-increase_quantity='#{oa.id}']").click } 2.times { find("[data-decrease_tolerance='#{oa.id}']").click } find('input[type=submit]').click expect(page).to have_selector('body') # die zuteilung order.finish!(admin) oa.reload # Endstand: insg. Bestellt wurden 6(1) expect(oa.quantity).to eq(6) expect(oa.tolerance).to eq(1) # Gruppe a bekommt 3 einheiten. goa_a = oa.group_order_articles.joins(:group_order).where(:group_orders => {:ordergroup_id => user_a.ordergroup.id}).first expect(goa_a.result).to eq(3) # gruppe b bekommt 2 einheiten. goa_b = oa.group_order_articles.joins(:group_order).where(:group_orders => {:ordergroup_id => user_b.ordergroup.id}).first expect(goa_b.result).to eq(2) end end end