Add tests for product validations
This commit is contained in:
parent
bb76b36d86
commit
168b723dce
2 changed files with 51 additions and 1 deletions
|
@ -25,7 +25,7 @@ class Product < ActiveRecord::Base
|
||||||
|
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
validates :price_cents, numericality: { only_integer: true, greater_than_or_equal_to: 0 }
|
validates :price_cents, numericality: { only_integer: true, greater_than_or_equal_to: 0 }
|
||||||
validates :stock, numericality: { only_integer: true, greater_than_or_equal_to: 0 }
|
validates :stock, presence: true, numericality: { only_integer: true, greater_than_or_equal_to: 0 }
|
||||||
validates :calories, numericality: { only_integer: true, allow_nil: true, greater_than_or_equal_to: 0 }
|
validates :calories, numericality: { only_integer: true, allow_nil: true, greater_than_or_equal_to: 0 }
|
||||||
validates_attachment :avatar,
|
validates_attachment :avatar,
|
||||||
presence: true,
|
presence: true,
|
||||||
|
|
|
@ -25,4 +25,54 @@ describe Product do
|
||||||
it 'has a valid factory' do
|
it 'has a valid factory' do
|
||||||
expect(@product).to be_valid
|
expect(@product).to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'validations' do
|
||||||
|
it 'name should be present' do
|
||||||
|
@product.name = ''
|
||||||
|
expect(@product).to_not be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'price' do
|
||||||
|
it 'should be positive' do
|
||||||
|
@product.price = -5
|
||||||
|
expect(@product).to_not be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be saved correctly' do
|
||||||
|
@product.price = 1.20
|
||||||
|
@product.save
|
||||||
|
expect(@product.reload.price).to eq(1.20)
|
||||||
|
expect(@product.reload.price_cents).to eq(120)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'stock' do
|
||||||
|
it 'should be present' do
|
||||||
|
@product.stock = nil
|
||||||
|
expect(@product).to_not be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be positive' do
|
||||||
|
@product.stock = -5
|
||||||
|
expect(@product).to_not be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'calories' do
|
||||||
|
it 'should not be present' do
|
||||||
|
@product.calories = nil
|
||||||
|
expect(@product).to be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be positive' do
|
||||||
|
@product.calories = -5
|
||||||
|
expect(@product).to_not be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'avatar should be present' do
|
||||||
|
@product.avatar = nil
|
||||||
|
expect(@product).to_not be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue