Skip to content

Commit 40d8657

Browse files
committed
More tests and checks
1 parent 38a03c1 commit 40d8657

File tree

3 files changed

+32
-36
lines changed

3 files changed

+32
-36
lines changed

lib/discourse_translator/guardian_extension.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ def can_translate?(post)
2323
return false if !user_group_allow_translate?
2424

2525
if SiteSetting.experimental_topic_translation
26-
return false if post.translation_for(I18n.locale).present?
2726
return false if post.locale_matches?(I18n.locale)
27+
return false if post.translation_for(I18n.locale).present?
2828
true
2929
else
30+
return false if post.locale_matches?(I18n.locale)
3031
poster_group_allow_translate?(post)
3132
end
3233
end

spec/lib/guardian_extension_spec.rb

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,14 @@
166166
expect(guardian.can_translate?(post)).to eq(true)
167167
end
168168

169-
it "can translate when post does not have translation" do
169+
it "cannot translate when post has translation for user locale" do
170+
post.set_detected_locale("jp")
171+
post.set_translation("pt", "Olá, mundo!")
172+
173+
expect(guardian.can_translate?(post)).to eq(false)
174+
end
175+
176+
it "can translate when post does not have translation for user locale" do
170177
post.set_detected_locale("jp")
171178

172179
expect(guardian.can_translate?(post)).to eq(true)
@@ -200,6 +207,18 @@
200207
describe "locale is :pt" do
201208
before { I18n.stubs(:locale).returns(:pt) }
202209

210+
it "cannot translate when post detected locale matches i18n locale" do
211+
post.set_detected_locale("pt")
212+
213+
expect(guardian.can_translate?(post)).to eq(false)
214+
end
215+
216+
it "can translate when post's detected locale does not match i18n locale" do
217+
post.set_detected_locale("jp")
218+
219+
expect(guardian.can_translate?(post)).to eq(true)
220+
end
221+
203222
it "cannot translate if poster is not in restrict_translation_by_poster_group" do
204223
SiteSetting.restrict_translation_by_poster_group = "#{Group::AUTO_GROUPS[:staff]}"
205224

spec/serializers/post_serializer_spec.rb

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,15 @@
1919
end
2020

2121
describe "when translator enabled" do
22-
before { SiteSetting.translator_enabled = true }
23-
24-
describe "anon user" do
25-
let(:serializer) { PostSerializer.new(post, scope: Guardian.new) }
26-
27-
before do
28-
SiteSetting.restrict_translation_by_group = "#{Group::AUTO_GROUPS[:everyone]}"
29-
SiteSetting.restrict_translation_by_poster_group = ""
30-
end
22+
before do
23+
SiteSetting.translator_enabled = true
24+
SiteSetting.restrict_translation_by_group = "#{Group::AUTO_GROUPS[:everyone]}"
25+
SiteSetting.restrict_translation_by_poster_group = ""
26+
end
27+
let(:serializer) { PostSerializer.new(post, scope: Guardian.new) }
3128

32-
it "cannot translate" do
33-
expect(serializer.can_translate).to eq(false)
34-
end
29+
it "cannot translate for anon" do
30+
expect(serializer.can_translate).to eq(false)
3531
end
3632

3733
describe "logged in user" do
@@ -44,32 +40,12 @@
4440
end
4541

4642
describe "user is in restrict_translation_by_group" do
47-
before { SiteSetting.restrict_translation_by_group = "#{group.id}" }
48-
49-
it "cannot translate when post author is not in restrict_translation_by_poster_group" do
50-
SiteSetting.restrict_translation_by_poster_group = "#{group.id}"
51-
52-
expect(serializer.can_translate).to eq(false)
53-
end
54-
5543
describe "post author in restrict_translation_by_poster_group and locale is :xx" do
56-
before do
44+
it "can translate when post detected locale does not match i18n locale" do
45+
SiteSetting.restrict_translation_by_group = "#{group.id}"
5746
SiteSetting.restrict_translation_by_poster_group = "#{post_user_group.id}"
5847
I18n.stubs(:locale).returns(:pt)
59-
end
60-
61-
it "cannot translate when post does not have detected locale" do
62-
expect(post.detected_locale).to eq(nil)
63-
expect(serializer.can_translate).to eq(false)
64-
end
6548

66-
it "cannot translate when post detected locale matches i18n locale" do
67-
post.set_detected_locale("pt")
68-
69-
expect(serializer.can_translate).to eq(false)
70-
end
71-
72-
it "can translate when post detected locale does not match i18n locale" do
7349
post.set_detected_locale("jp")
7450

7551
expect(serializer.can_translate).to eq(true)

0 commit comments

Comments
 (0)