foodsoft/spec/models/group_order_article_spec.rb
2014-08-19 11:53:01 +02:00

45 lines
1.6 KiB
Ruby

require_relative '../spec_helper'
describe GroupOrderArticle do
let(:user) { create :user, groups: [create(:ordergroup)] }
let(:order) { create(:order) }
let(:go) { create :group_order, order: order, ordergroup: user.ordergroup }
let(:goa) { create :group_order_article, group_order: go, order_article: order.order_articles.first }
it 'has zero quantity by default' do expect(goa.quantity).to eq(0) end
it 'has zero tolerance by default' do expect(goa.tolerance).to eq(0) end
it 'has zero result by default' do expect(goa.result).to eq(0) end
it 'has zero total price by default' do expect(goa.total_price).to eq(0) end
describe do
let(:article) { create :article, supplier: order.supplier, unit_quantity: 1 }
let(:oa) { order.order_articles.create(:article => article) }
let(:goa) { create :group_order_article, group_order: go, order_article: oa }
it 'can be ordered by piece' do
goa.update_quantities(1, 0)
expect(goa.quantity).to eq(1)
expect(goa.tolerance).to eq(0)
end
it 'can be ordered in larger amounts' do
quantity, tolerance = rand(13..99), rand(0..99)
goa.update_quantities(quantity, tolerance)
expect(goa.quantity).to eq(quantity)
expect(goa.tolerance).to eq(tolerance)
end
it 'has a proper total price' do
quantity = rand(1..99)
goa.update_quantities(quantity, 0)
expect(goa.total_price).to eq(quantity * goa.order_article.price.fc_price)
end
it 'can unorder a product' do
goa.update_quantities(rand(1..99), rand(0..99))
goa.update_quantities(0, 0)
expect(GroupOrderArticle.exists?(goa.id)).to be false
end
end
end