docbrown/spec/queries/admin/moderators_query_spec.rb
Diogo Osório 3bc51a13cc
Fixes 500 error when viewing the "Tag Mods" page without having the role on the database (#10515)
* Makes the ModeratorsQuery not return an exception on invalid role

The current implementation of the query would yield an exception when
recieving an invalid state parameter. As per the [GH issue
discussion](https://github.com/forem/forem/issues/10060#issuecomment-692295217),
Zhao recommended to change its behaviour and not trigger an exception in
this condition.

This commit does just that. If the state argument is invalid, the query
now returns an empty result set.

* Adds a warning when there are no matching mods

* Re-trigger the build
2020-10-01 12:55:25 -06:00

44 lines
1.3 KiB
Ruby

require "rails_helper"
RSpec.describe Admin::ModeratorsQuery, type: :query do
subject { described_class.call(options: options) }
let!(:user) { create(:user, :trusted, name: "Greg") }
let(:user2) { create(:user, :trusted, name: "Gregory") }
let!(:user3) { create(:user, :tag_moderator, name: "Paul", comments_count: 4) }
let!(:user4) { create(:user, :admin, name: "Susi", comments_count: 10) }
let(:user5) { create(:user, :trusted, :admin, name: "Beth") }
let(:user6) { create(:user, :admin, name: "Jean", comments_count: 5) }
describe ".call" do
context "when no arguments are given" do
it "returns all moderators" do
expect(described_class.call).to match_array([user, user2, user5])
end
end
context "when search is set" do
let(:options) { { search: "greg" } }
it { is_expected.to match_array([user, user2]) }
end
context "when state is tag_moderator" do
let(:options) { { state: "tag_moderator" } }
it { is_expected.to match_array([user3]) }
end
context "when state is potential" do
let(:options) { { state: "potential" } }
it { is_expected.to match_array([user4, user6, user3]) }
end
context "when state does not exist" do
let(:options) { { state: "non_existent_role" } }
it { is_expected.to match_array([]) }
end
end
end