diff --git a/app/models/product.rb b/app/models/product.rb index 35a85ac..85bd632 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,2 +1,9 @@ class Product < ApplicationRecord + validates :title, :description, :image_url, :price, presence: true + validates :price, numericality: {greater_than_or_equal_to: 0.01} + validates :title, uniqueness: true + validates :image_url, allow_blank: true, format: { + with: %r{\.(gif|jpg|png)\Z}i, + message: 'must be URL for GIF, JPG or PNG image.' + } end diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 2ab0892..6e02694 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -3,6 +3,12 @@ require 'test_helper' class ProductsControllerTest < ActionDispatch::IntegrationTest setup do @product = products(:one) + @update = { + title: 'Lorem Ipsum', + description: 'Wibbles are fun!', + image_url: 'lorem.jpg', + price: 19.95 + } end test "should get index" do @@ -17,7 +23,7 @@ class ProductsControllerTest < ActionDispatch::IntegrationTest test "should create product" do assert_difference('Product.count') do - post products_url, params: { product: { description: @product.description, image_url: @product.image_url, price: @product.price, title: @product.title } } + post products_url, params: { product: @update } end assert_redirected_to product_url(Product.last) @@ -34,7 +40,7 @@ class ProductsControllerTest < ActionDispatch::IntegrationTest end test "should update product" do - patch product_url(@product), params: { product: { description: @product.description, image_url: @product.image_url, price: @product.price, title: @product.title } } + patch product_url(@product), params: { product: @update } assert_redirected_to product_url(@product) end