scinote-web/test/models/step_test.rb
2016-10-11 08:25:32 +02:00

122 lines
3.1 KiB
Ruby

require 'test_helper'
require 'helpers/searchable_model_test_helper'
class StepTest < ActiveSupport::TestCase
include SearchableModelTestHelper
def setup
@step = steps(:test2)
end
test "should not validate without name" do
assert @step.valid?
@step.name = ""
assert_not @step.valid?
end
test "should not validate with to long name" do
assert @step.valid?
@step.name = 'a' * 256
assert_not @step.valid?
end
test "should validate without description" do
assert @step.valid?
@step.description = ""
assert @step.valid?
end
test "should not validate with to long description" do
assert @step.valid?
@step.name = 'a' * 4001
assert_not @step.valid?
end
test "should not validate without position" do
assert @step.valid?
@step.position = nil
assert_not @step.valid?
end
test "should not validate without completed" do
assert @step.valid?
@step.completed = nil
assert_not @step.valid?
end
test "should not validate with completed=true and completed not present" do
assert @step.valid?
@step.completed = true
assert_not @step.valid?
end
test "should validate with completed=true and completed present" do
assert @step.valid?
@step.completed = true
@step.completed_on = "2015-07-21"
assert @step.valid?
end
test "should validate with non existent user" do
assert @step.valid?
@step.user_id = 123123
assert_not @step.valid?
@step.user = nil
assert_not @step.valid?
end
test "should not validate with non existing protocol" do
assert @step.valid?
@step.protocol_id = 12312321
assert_not @step.valid?
@step.protocol = nil
assert_not @step.valid?
end
test "where_attributes_like should work" do
attributes_like_test(Result, :name, "mrna")
end
# Testing last_comments method
test "should get last comments" do
last_comments = steps(:test2).last_comments
first_comment = comments(:test_step_comment_24)
last_comment = comments(:test_step_comment_5)
assert_equal 20, last_comments.size
assert_equal first_comment, last_comments.last
assert_equal last_comment, last_comments.first
end
# Not possible to test with fixtures and random id values
test "should get last comments before specific comment" do
end
test "should get last comments of specified length" do
last_comments = steps(:test2).last_comments(0, 5)
first_comment = comments(:test_step_comment_24)
last_comment = comments(:test_step_comment_20)
assert_equal 5, last_comments.size
assert_equal first_comment, last_comments.last
assert_equal last_comment, last_comments.first
end
# Testing destroy_activity callback
test "should create new activity for step_remove" do
last_activity = Activity.last
user = users(:jlaw)
assert @step.destroy(user)
created_activity = Activity.last
assert_not_equal last_activity, created_activity
assert_equal "destroy_step", created_activity.type_of
assert_equal user, created_activity.user
end
# Testing save method
# TODO check last_modified_by for step tables, assets and checklists
end