diff --git a/app/models/box.rb b/app/models/box.rb new file mode 100644 index 0000000..8e489df --- /dev/null +++ b/app/models/box.rb @@ -0,0 +1,9 @@ +class Box < ActiveRecord::Base + belongs_to :owner, :polymorphic => true + + #we cannot have two boxs with the same number to the same owner + validates_uniqueness_of :number, :scope => :owner + + #number must be a integer + validates_numericality_of :number, :only_integer => true, :message => _('%{fn} must be composed only of integers.') +end diff --git a/db/migrate/004_create_boxes.rb b/db/migrate/004_create_boxes.rb new file mode 100644 index 0000000..1d33a4d --- /dev/null +++ b/db/migrate/004_create_boxes.rb @@ -0,0 +1,13 @@ +class CreateBoxes < ActiveRecord::Migration + def self.up + create_table :boxes do |t| + t.column :number, :integer + t.column :owner_type, :string + t.column :owner_id, :integer + end + end + + def self.down + drop_table :boxes + end +end diff --git a/test/fixtures/boxes.yml b/test/fixtures/boxes.yml new file mode 100644 index 0000000..c786b5e --- /dev/null +++ b/test/fixtures/boxes.yml @@ -0,0 +1,10 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html +one: + id: 1 + number: 1 +two: + id: 2 + number: 2 +three: + id: 3 + number: 3 diff --git a/test/unit/box_test.rb b/test/unit/box_test.rb new file mode 100644 index 0000000..c42e14e --- /dev/null +++ b/test/unit/box_test.rb @@ -0,0 +1,46 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class BoxTest < Test::Unit::TestCase + fixtures :boxes, :blocks + + def test_destroy + count = Box.count + assert Box.find(1).destroy + assert_equal count - 1, Box.count + end + + def test_create + count = Box.count + b = Box.new + b.number = 2 + assert b.save + assert count + 1, Box.count + end + + + def test_number_format + b = Box.new + b.number = "none" + assert !b.valid? + assert b.errors.invalid?(:number) + + b = Box.new + b.number = 10.2 + assert !b.save + + b = Box.new + b.number = 10 + assert b.save + + end + + def test_unique_number + assert Box.delete_all + assert Box.create(:number => 1) + + b = Box.new(:number => 1) + assert !b.valid? + assert b.errors.invalid?(:number) + end + +end -- libgit2 0.21.2