Done testing
[depot.git] / test / unit / product_test.rb
1 require 'test_helper'
2
3 class ProductTest < ActiveSupport::TestCase
4
5 fixtures :products
6
7 test "Invalid with empty attributes" do
8 product = Product.new
9 assert !product.valid?
10 assert product.errors.invalid?(:title)
11 assert product.errors.invalid?(:description)
12 assert product.errors.invalid?(:price)
13 assert product.errors.invalid?(:image_url)
14 end
15
16 test "positive price" do
17 product = Product.new(:title => "My Book Title" ,
18 :description => "yyy" ,
19 :image_url => "zzz.jpg" )
20 product.price = -1
21 assert !product.valid?
22 assert_equal "should be at least 0.01" , product.errors.on(:price)
23 product.price = 0
24 assert !product.valid?
25 assert_equal "should be at least 0.01" , product.errors.on(:price)
26 product.price = 1
27 assert product.valid?
28 end
29
30 test "image url" do
31 ok = %w{ fred.gif fred.jpg fred.png FRED.JPG FRED.Jpg http://a.b.c/x/y/z/fred.gif }
32 bad = %w{ fred.doc fred.gif/more fred.gif.more }
33 ok.each do |name|
34 product = Product.new(:title => "My Book Title" ,
35 :description => "yyy" ,
36 :price => 1,
37 :image_url => name)
38 assert product.valid?, product.errors.full_messages
39 end
40 bad.each do |name|
41 product = Product.new(:title => "My Book Title" ,
42 :description => "yyy" ,
43 :price => 1,
44 :image_url => name)
45 assert !product.valid?, "saving #{name}"
46 end
47 end
48
49 test "unique title" do
50 product = Product.new(:title => products(:ruby_book).title,
51 :description => "yyy" ,
52 :price => 1,
53 :image_url => "fred.gif" )
54 assert !product.save
55 assert_equal I18n.translate('activerecord.errors.messages.taken'), product.errors.on(:title)
56 end
57
58 end