fixes #1396; expand tests
This commit is contained in:
@@ -7,7 +7,8 @@ class Note < ActiveRecord::Base
|
||||
before_validation :initialize_updater
|
||||
before_validation :blank_body
|
||||
validates_presence_of :post_id, :creator_id, :updater_id, :x, :y, :width, :height
|
||||
validate :coordinates_in_range, :message => "must be inside the image"
|
||||
validate :post_must_exist
|
||||
validate :note_within_image, :message => "must be inside the image"
|
||||
has_many :versions, :class_name => "NoteVersion", :order => "note_versions.id ASC"
|
||||
after_save :update_post
|
||||
after_save :create_version
|
||||
@@ -96,9 +97,9 @@ class Note < ActiveRecord::Base
|
||||
self.updater_ip_addr = CurrentUser.ip_addr
|
||||
end
|
||||
|
||||
def coordinates_in_range
|
||||
if x < 0 || y < 0 || (x > post.image_width) || (y > post.image_height)
|
||||
self.errors.add(:coordinates, "must be inside the image")
|
||||
def post_must_exist
|
||||
if !Post.exists?(post_id)
|
||||
errors.add :post, "must exist"
|
||||
return false
|
||||
end
|
||||
end
|
||||
@@ -110,6 +111,14 @@ class Note < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def note_within_image
|
||||
return false unless post.present?
|
||||
if x < 0 || y < 0 || (x > post.image_width) || (y > post.image_height) || width < 0 || height < 0 || (x + width > post.image_width) || (y + height > post.image_height)
|
||||
self.errors.add(:note, "must be inside the image")
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
def is_locked?
|
||||
Post.exists?(["id = ? AND is_note_locked = ?", post_id, true])
|
||||
end
|
||||
|
||||
@@ -40,7 +40,19 @@ class NoteTest < ActiveSupport::TestCase
|
||||
should "not validate if the note is outside the image" do
|
||||
@note = FactoryGirl.build(:note, :x => 1001, :y => 500, :post => @post)
|
||||
@note.save
|
||||
assert_equal(["Coordinates must be inside the image"], @note.errors.full_messages)
|
||||
assert_equal(["Note must be inside the image"], @note.errors.full_messages)
|
||||
end
|
||||
|
||||
should "not validate if the note is larger than the image" do
|
||||
@note = FactoryGirl.build(:note, :x => 500, :y => 500, :height => 501, :width => 500, :post => @post)
|
||||
@note.save
|
||||
assert_equal(["Note must be inside the image"], @note.errors.full_messages)
|
||||
end
|
||||
|
||||
should "not validate if the post does not exist" do
|
||||
@note = FactoryGirl.build(:note, :x => 500, :y => 500, :post_id => -1)
|
||||
@note.save
|
||||
assert_equal(["Post must exist"], @note.errors.full_messages)
|
||||
end
|
||||
|
||||
should "create a version" do
|
||||
|
||||
Reference in New Issue
Block a user