diff --git a/lib/discourse_translator/guardian_extension.rb b/lib/discourse_translator/guardian_extension.rb index f7bea5e..96571ff 100644 --- a/lib/discourse_translator/guardian_extension.rb +++ b/lib/discourse_translator/guardian_extension.rb @@ -8,6 +8,7 @@ def user_group_allow_translate? def poster_group_allow_translate?(post) return false if !current_user return true if SiteSetting.restrict_translation_by_poster_group_map.empty? + return false if post.user.nil? post.user.in_any_groups?(SiteSetting.restrict_translation_by_poster_group_map) end end diff --git a/spec/lib/guardian_extension_spec.rb b/spec/lib/guardian_extension_spec.rb index ce40f41..2a9f20a 100644 --- a/spec/lib/guardian_extension_spec.rb +++ b/spec/lib/guardian_extension_spec.rb @@ -25,6 +25,24 @@ end end + describe "deleted poster" do + fab!(:group) + fab!(:user) + fab!(:poster) { Fabricate(:user, groups: [group]) } + fab!(:post) { Fabricate(:post, user: poster) } + let!(:guardian) { Guardian.new(user) } + + describe "#poster_group_allow_translate?" do + it "returns false when the post user has been deleted" do + SiteSetting.restrict_translation_by_poster_group = "#{group.id}" + + post.update(user: nil) + + expect(guardian.poster_group_allow_translate?(post)).to eq(false) + end + end + end + describe "logged in user" do fab!(:group) fab!(:user) { Fabricate(:user, groups: [group]) } @@ -45,7 +63,7 @@ end end - describe "#poster_group_allow_translate??" do + describe "#poster_group_allow_translate?" do it "returns true when the post user is in restrict_translation_by_poster_group" do SiteSetting.restrict_translation_by_poster_group = "#{group.id}"