require 'test_helper' class UserProjectTest < ActiveSupport::TestCase def setup @user_proj = user_projects(:one) end # Test role attribute test "should not save user project without role" do assert_not user_projects(:without_role).save, "Saved user project without role" end test "should have default role" do assert @user_proj.owner?, "User project does not have default owner role" end test "should set valid role values" do assert_nothing_raised(ArgumentError, "User project role was set with invalid role value") { @user_proj.role = 0 @user_proj.role = 1 @user_proj.role = 2 @user_proj.role = 3 @user_proj.role = "owner" @user_proj.role = "normal_user" @user_proj.role = "technician" @user_proj.role = "viewer" } end test "should not have undefined role" do assert_raises(ArgumentError, "User project role can not be set to undefined numeric role value") { @user_proj.role = 5 } assert_raises(ArgumentError, "User project role can not be set to undefined role value") { @user_proj.role = "gatekeeper" } end # Test user attribute test "should not save user project without user" do assert_not user_projects(:without_user).save, "Saved user project without user" end test "should not associate unexisting user" do assert_raises(ActiveRecord::RecordInvalid, "User project saved unexisting user association") { user_projects(:with_invalid_user).save! } end # Test project attribute test "should not save user project without project" do assert_not user_projects(:without_project).save, "Saved user project without project" end test "should not associate unexisting project" do assert_raises(ActiveRecord::RecordInvalid, "User project saved unexisting project association") { user_projects(:with_invalid_project).save! } end # Test destroy_associations method test "should unassign user from all projects' modules" do user_project = @user_proj user = user_project.user # Test associations before destroy assert_equal 1, my_modules(:sample_prep) .user_my_modules.select { |um| um.user == user }.count assert_equal 1, my_modules(:rna_test) .user_my_modules.select { |um| um.user == user }.count assert user_project.destroy # Test associations after destroy experiments(:philadelphia).my_modules.each do |my_module| assert_equal 0, my_module.user_my_modules .select { |um| um.user == user }.count end end end