add group_order_article spec
This commit is contained in:
parent
db80fbd807
commit
427a023135
2 changed files with 71 additions and 0 deletions
9
spec/factories/group_order_article.rb
Normal file
9
spec/factories/group_order_article.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
require 'factory_girl'
|
||||
|
||||
FactoryGirl.define do
|
||||
|
||||
# requires order_article
|
||||
factory :group_order_article do
|
||||
end
|
||||
|
||||
end
|
62
spec/models/group_order_article_spec.rb
Normal file
62
spec/models/group_order_article_spec.rb
Normal file
|
@ -0,0 +1,62 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe GroupOrderArticle do
|
||||
let(:user) { FactoryGirl.create :user, groups: [FactoryGirl.create(:ordergroup)] }
|
||||
let(:supplier) { FactoryGirl.create :supplier, article_count: true }
|
||||
let(:order) { FactoryGirl.create(:order, supplier: supplier, article_ids: supplier.articles.map(&:id)).reload }
|
||||
let(:go) { FactoryGirl.create :group_order, order: order, ordergroup: user.ordergroup }
|
||||
let(:goa) { FactoryGirl.create :group_order_article, group_order: go, order_article: order.order_articles.first }
|
||||
|
||||
it 'has zero quantity by default' do goa.quantity.should == 0 end
|
||||
it 'has zero tolerance by default' do goa.tolerance.should == 0 end
|
||||
it 'has zero result by default' do goa.result.should == 0 end
|
||||
it 'is not ordered by default' do GroupOrderArticle.ordered.where(:id => goa.id).exists?.should be_false end
|
||||
it 'has zero total price by default' do goa.total_price.should == 0 end
|
||||
|
||||
describe do
|
||||
let(:article) { FactoryGirl.create :article, supplier: supplier, unit_quantity: 1 }
|
||||
let(:goa) { article; FactoryGirl.create :group_order_article, group_order: go, order_article: order.order_articles.find_by_article_id(article.id) }
|
||||
|
||||
it 'can be ordered by piece' do
|
||||
goa.update_quantities(1, 0)
|
||||
goa.quantity.should == 1
|
||||
goa.tolerance == 0
|
||||
end
|
||||
|
||||
it 'can be ordered in larger amounts' do
|
||||
quantity, tolerance = rand(13..100), rand(0..100)
|
||||
goa.update_quantities(quantity, tolerance)
|
||||
goa.quantity.should == quantity
|
||||
goa.tolerance.should == tolerance
|
||||
end
|
||||
|
||||
it 'has a proper total price' do
|
||||
quantity = rand(1..100)
|
||||
goa.update_quantities(quantity, 0)
|
||||
goa.total_price.should == quantity * goa.order_article.price.fc_price
|
||||
end
|
||||
|
||||
it 'can unorder a product' do
|
||||
goa.update_quantities(rand(1..100), rand(0..100))
|
||||
goa.update_quantities(0, 0)
|
||||
goa.quantity.should == 0
|
||||
goa.tolerance.should == 0
|
||||
end
|
||||
|
||||
it 'keeps track of article quantities' do
|
||||
startq = startt = nil
|
||||
for i in 0..6 do
|
||||
goa.group_order_article_quantities.count == i
|
||||
quantity, tolerance = rand(1..100), rand(0..100)
|
||||
goa.update_quantities(quantity, tolerance)
|
||||
startq.nil? and startq = quantity
|
||||
startt.nil? and startt = tolerance
|
||||
end
|
||||
goaq = goa.group_order_article_quantities.last
|
||||
goaq.quantity.should == startq
|
||||
goaq.tolerance.should == startt
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in a new issue