order test
This commit is contained in:
parent
b608d2b5c1
commit
0581a7238d
|
@ -13,6 +13,7 @@ describe OrderItem do
|
||||||
order_item = create :order_item
|
order_item = create :order_item
|
||||||
expect(order_item).to be_valid
|
expect(order_item).to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
############
|
############
|
||||||
# FIELDS #
|
# FIELDS #
|
||||||
############
|
############
|
||||||
|
|
|
@ -20,16 +20,58 @@ describe Order do
|
||||||
expect(@order).to be_valid
|
expect(@order).to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'price' do
|
############
|
||||||
it 'should be calculated from order_items' do
|
# FIELDS #
|
||||||
@order = build :order, products_count: 0
|
############
|
||||||
sum = (create_list :product, 1 + rand(10)).map do |p|
|
|
||||||
create(:order_item, order: @order, product: p, count: 1 + rand(5)) do |oi|
|
describe 'fields' do
|
||||||
@order.order_items << oi
|
describe 'user' do
|
||||||
end
|
it { Order.reflect_on_association(:user).macro.should eq(:belongs_to) }
|
||||||
end.map{ |oi| oi.count * oi.product.price_cents }.sum
|
it 'should be present' do
|
||||||
@order.valid?
|
@order.user = nil
|
||||||
expect(@order.price_cents).to eq(sum)
|
expect(@order).to_not be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'price_cents' do
|
||||||
|
it 'should be calculated from order_items' do
|
||||||
|
@order = build :order, products_count: 0
|
||||||
|
sum = (create_list :product, 1 + rand(10)).map do |p|
|
||||||
|
create(:order_item, order: @order, product: p, count: 1 + rand(5)) do |oi|
|
||||||
|
@order.order_items << oi
|
||||||
|
end
|
||||||
|
end.map{ |oi| oi.count * oi.product.price_cents }.sum
|
||||||
|
@order.save
|
||||||
|
expect(@order.price_cents).to eq(sum)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'order_items' do
|
||||||
|
it 'should be validated' do
|
||||||
|
@order.order_items << OrderItem.new(count: -5)
|
||||||
|
expect(@order).to_not be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'products' do
|
||||||
|
it 'should be present' do
|
||||||
|
@order.products.clear
|
||||||
|
expect(@order).to_not be_valid
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
###############
|
||||||
|
# CALLBACKS #
|
||||||
|
###############
|
||||||
|
|
||||||
|
describe 'empty order_items' do
|
||||||
|
it 'should be removed' do
|
||||||
|
product = create :product
|
||||||
|
@order.order_items << create(:order_item, order: @order, product: product, count: 0)
|
||||||
|
@order.save
|
||||||
|
expect(@order.order_items.where(product: product)).to be_empty
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue