require "test_helper" class UserTest < ActiveSupport::TestCase test "should be valid with an email and password" do user = User.new(email: "test@example.com", password: "password123456") assert user.valid? end test "should be invalid without an email" do user = User.new(password: "password123456") assert_not user.valid? end test "should be invalid with a duplicate email" do User.create(email: "test@example.com", password: "password123456") user = User.new(email: "test@example.com", password: "password123456") assert_not user.valid? end test "should have a default role of contributor" do user = User.new(email: "test@example.com", password: "password123456") assert user.contributor? end test "can be a reviewer" do user = User.new(email: "test@example.com", password: "password123456", role: :reviewer) assert user.reviewer? end test "can be an admin" do user = User.new(email: "test@example.com", password: "password123456", role: :admin) assert user.admin? end test "should be invalid with a password shorter than 12 characters" do user = User.new(email: "test@example.com", password: "short") assert_not user.valid? assert_includes user.errors[:password], "is too short (minimum is 12 characters)" end end