Users: add Contributor and Approver user levels
This commit is contained in:
@@ -12,64 +12,30 @@ FactoryBot.define do
|
||||
end
|
||||
|
||||
factory(:restricted_user) do
|
||||
level {10}
|
||||
level {User::Levels::RESTRICTED}
|
||||
requires_verification { true }
|
||||
is_verified { false }
|
||||
end
|
||||
|
||||
factory(:member_user) do
|
||||
level {20}
|
||||
end
|
||||
User.level_hash.each do |level_name, level_value|
|
||||
# allows create(:moderator_user), create(:approver) etc
|
||||
next if level_name == "Restricted" # already defined above
|
||||
|
||||
factory(:gold_user) do
|
||||
level {30}
|
||||
end
|
||||
factory(level_name.downcase) do
|
||||
level {level_value}
|
||||
end
|
||||
|
||||
factory(:platinum_user) do
|
||||
level {31}
|
||||
end
|
||||
|
||||
factory(:builder_user) do
|
||||
level {32}
|
||||
end
|
||||
|
||||
factory(:contributor_user) do
|
||||
level {32}
|
||||
can_upload_free {true}
|
||||
end
|
||||
|
||||
factory(:contrib_user) do
|
||||
level {32}
|
||||
can_upload_free {true}
|
||||
end
|
||||
|
||||
factory(:moderator_user) do
|
||||
level {40}
|
||||
can_approve_posts {true}
|
||||
factory("#{level_name.downcase}_user") do
|
||||
level {level_value}
|
||||
end
|
||||
end
|
||||
|
||||
factory(:mod_user) do
|
||||
level {40}
|
||||
can_approve_posts {true}
|
||||
end
|
||||
|
||||
factory(:admin_user) do
|
||||
level {50}
|
||||
can_approve_posts {true}
|
||||
end
|
||||
|
||||
factory(:owner_user) do
|
||||
level { User::Levels::OWNER }
|
||||
can_approve_posts {true}
|
||||
level {User::Levels::MODERATOR}
|
||||
end
|
||||
|
||||
factory(:uploader) do
|
||||
created_at { 2.weeks.ago }
|
||||
end
|
||||
|
||||
factory(:approver) do
|
||||
level {32}
|
||||
can_approve_posts {true}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -22,37 +22,7 @@ class Admin::UsersControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
assert_redirected_to(edit_admin_user_path(@user))
|
||||
assert_equal(30, @user.reload.level)
|
||||
assert_match(/promoted "#{@user.name}":\/users\/#{@user.id} from Member to Gold/, ModAction.last.description)
|
||||
assert_equal(@user, ModAction.last.subject)
|
||||
assert_equal(@mod, ModAction.last.creator)
|
||||
end
|
||||
|
||||
should "promote the user to unrestricted uploads" do
|
||||
put_auth admin_user_path(@user), @mod, params: { user: { level: User::Levels::BUILDER, can_upload_free: true }}
|
||||
|
||||
assert_redirected_to(edit_admin_user_path(@user.reload))
|
||||
assert_equal(true, @user.is_builder?)
|
||||
assert_equal(true, @user.can_upload_free?)
|
||||
assert_equal(false, @user.can_approve_posts?)
|
||||
assert_match(/granted unlimited upload privileges to "#{@user.name}":\/users\/#{@user.id}/, ModAction.first.description)
|
||||
assert_match(/promoted "#{@user.name}":\/users\/#{@user.id} from Member to Builder/, ModAction.last.description)
|
||||
assert_equal(@user, ModAction.first.subject)
|
||||
assert_equal(@mod, ModAction.first.creator)
|
||||
assert_equal(@user, ModAction.last.subject)
|
||||
assert_equal(@mod, ModAction.last.creator)
|
||||
end
|
||||
|
||||
should "promote the user to approver" do
|
||||
put_auth admin_user_path(@user), @mod, params: { user: { level: User::Levels::BUILDER, can_approve_posts: true }}
|
||||
|
||||
assert_redirected_to(edit_admin_user_path(@user.reload))
|
||||
assert_equal(true, @user.is_builder?)
|
||||
assert_equal(false, @user.can_upload_free?)
|
||||
assert_equal(true, @user.can_approve_posts?)
|
||||
assert_match(/granted approval privileges to "#{@user.name}":\/users\/#{@user.id}/, ModAction.first.description)
|
||||
assert_match(/promoted "#{@user.name}":\/users\/#{@user.id} from Member to Builder/, ModAction.last.description)
|
||||
assert_equal(@user, ModAction.first.subject)
|
||||
assert_equal(@mod, ModAction.first.creator)
|
||||
assert_match(%r{promoted "#{@user.name}":/users/#{@user.id} from Member to Gold}, ModAction.last.description)
|
||||
assert_equal(@user, ModAction.last.subject)
|
||||
assert_equal(@mod, ModAction.last.creator)
|
||||
end
|
||||
|
||||
@@ -522,8 +522,8 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
context "with everything" do
|
||||
setup do
|
||||
@admin = create(:admin_user, can_approve_posts: true)
|
||||
@builder = create(:builder_user, can_approve_posts: true)
|
||||
@admin = create(:admin_user)
|
||||
@approver = create(:approver_user)
|
||||
|
||||
as(@user) do
|
||||
@post.update!(tag_string: "1girl solo highres blah 2001")
|
||||
@@ -545,7 +545,7 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
|
||||
#create(:post_appeal, post: @post, creator: @user)
|
||||
create(:post_vote, post: @post, user: @user)
|
||||
create(:favorite, post: @post, user: @user)
|
||||
create(:moderation_report, model: @comment, creator: @builder)
|
||||
create(:moderation_report, model: @comment, creator: @approver)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -560,7 +560,7 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
should "render for a builder" do
|
||||
get_auth post_path(@post), @builder
|
||||
get_auth post_path(@post), @approver
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
@@ -570,7 +570,7 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
should "render for a builder with a search query" do
|
||||
get_auth post_path(@post, q: "tagme"), @builder
|
||||
get_auth post_path(@post, q: "tagme"), @approver
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
|
||||
context "index action" do
|
||||
setup do
|
||||
@mod_user = create(:moderator_user, name: "yukari")
|
||||
@other_user = create(:builder_user, can_upload_free: true, inviter: @mod_user, created_at: 2.weeks.ago)
|
||||
@other_user = create(:contributor_user, inviter: @mod_user, created_at: 2.weeks.ago)
|
||||
@uploader = create(:user, created_at: 2.weeks.ago)
|
||||
end
|
||||
|
||||
@@ -41,7 +41,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
should respond_to_search({}).with { [@uploader, @other_user, @mod_user, @user, User.system] }
|
||||
should respond_to_search(min_level: User::Levels::BUILDER).with { [@other_user, @mod_user, User.system] }
|
||||
should respond_to_search(can_upload_free: "true").with { @other_user }
|
||||
should respond_to_search(name_matches: "yukari").with { @mod_user }
|
||||
|
||||
context "using includes" do
|
||||
@@ -114,7 +113,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
|
||||
context "show action" do
|
||||
setup do
|
||||
# flesh out profile to get more test coverage of user presenter.
|
||||
@user = create(:user, can_approve_posts: true, created_at: 2.weeks.ago)
|
||||
@user = create(:approver, created_at: 2.weeks.ago)
|
||||
as(@user) do
|
||||
create(:saved_search, user: @user)
|
||||
create(:post, uploader: @user, tag_string: "fav:#{@user.name}")
|
||||
|
||||
@@ -3,13 +3,13 @@ require 'test_helper'
|
||||
class ApproverPrunerTest < ActiveSupport::TestCase
|
||||
context "ApproverPruner" do
|
||||
setup do
|
||||
@approver = create(:user, can_approve_posts: true)
|
||||
@approver = create(:approver)
|
||||
end
|
||||
|
||||
should "demote inactive approvers" do
|
||||
assert_equal([@approver.id], ApproverPruner.inactive_approvers.map(&:id))
|
||||
assert_nothing_raised { ApproverPruner.prune! }
|
||||
assert_equal(false, @approver.reload.can_approve_posts)
|
||||
assert_equal(User::Levels::CONTRIBUTOR, @approver.reload.level)
|
||||
end
|
||||
|
||||
should "not demote active approvers" do
|
||||
@@ -22,7 +22,7 @@ class ApproverPrunerTest < ActiveSupport::TestCase
|
||||
should "not demote recently promoted approvers" do
|
||||
as(create(:admin_user)) do
|
||||
@user = create(:user)
|
||||
@user.promote_to!(User::Levels::BUILDER, can_approve_posts: true)
|
||||
@user.promote_to!(User::Levels::APPROVER)
|
||||
end
|
||||
|
||||
assert_not_includes(ApproverPruner.inactive_approvers.map(&:id), @user.id)
|
||||
|
||||
@@ -43,7 +43,7 @@ class PostAppealTest < ActiveSupport::TestCase
|
||||
|
||||
context "for users with unrestricted uploads" do
|
||||
should "should not have an appeal limit" do
|
||||
@user = create(:user, can_upload_free: true)
|
||||
@user = create(:contributor)
|
||||
create_list(:post_appeal, 10, creator: @user)
|
||||
|
||||
assert_equal(15, @user.upload_limit.upload_slots)
|
||||
|
||||
@@ -5,7 +5,7 @@ class PostApprovalTest < ActiveSupport::TestCase
|
||||
setup do
|
||||
@user = create(:user, created_at: 2.weeks.ago)
|
||||
@post = create(:post, uploader: @user, is_pending: true)
|
||||
@approver = create(:user, can_approve_posts: true)
|
||||
@approver = create(:approver)
|
||||
end
|
||||
|
||||
context "a pending post" do
|
||||
|
||||
@@ -4,7 +4,7 @@ class PostFlagTest < ActiveSupport::TestCase
|
||||
context "PostFlag: " do
|
||||
context "an approver" do
|
||||
should "be able to flag an unlimited number of posts" do
|
||||
@user = create(:user, can_approve_posts: true)
|
||||
@user = create(:approver)
|
||||
|
||||
assert_nothing_raised do
|
||||
create_list(:post_flag, 6, creator: @user, status: :pending)
|
||||
|
||||
Reference in New Issue
Block a user