FIX: Don't change automatic group name if localized name has been taken.
This commit is contained in:
parent
bfc52a8e6f
commit
59dfb51a35
|
@ -161,7 +161,13 @@ class Group < ActiveRecord::Base
|
||||||
# don't allow shoddy localization to break this
|
# don't allow shoddy localization to break this
|
||||||
localized_name = I18n.t("groups.default_names.#{name}")
|
localized_name = I18n.t("groups.default_names.#{name}")
|
||||||
validator = UsernameValidator.new(localized_name)
|
validator = UsernameValidator.new(localized_name)
|
||||||
group.name = validator.valid_format? ? localized_name : name
|
|
||||||
|
group.name =
|
||||||
|
if !Group.where(name: localized_name).exists? && validator.valid_format?
|
||||||
|
localized_name
|
||||||
|
else
|
||||||
|
name
|
||||||
|
end
|
||||||
|
|
||||||
# the everyone group is special, it can include non-users so there is no
|
# the everyone group is special, it can include non-users so there is no
|
||||||
# way to have the membership in a table
|
# way to have the membership in a table
|
||||||
|
|
|
@ -154,9 +154,42 @@ describe Group do
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it "makes sure the everyone group is not visible" do
|
describe '.refresh_automatic_group!' do
|
||||||
g = Group.refresh_automatic_group!(:everyone)
|
it "makes sure the everyone group is not visible" do
|
||||||
expect(g.visible).to eq(false)
|
g = Group.refresh_automatic_group!(:everyone)
|
||||||
|
expect(g.visible).to eq(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "uses the localized name if name has not been taken" do
|
||||||
|
begin
|
||||||
|
default_locale = SiteSetting.default_locale
|
||||||
|
I18n.locale = SiteSetting.default_locale = 'de'
|
||||||
|
|
||||||
|
group = Group.refresh_automatic_group!(:staff)
|
||||||
|
|
||||||
|
expect(group.name).to_not eq('staff')
|
||||||
|
expect(group.name).to eq(I18n.t('groups.default_names.staff'))
|
||||||
|
ensure
|
||||||
|
I18n.locale = SiteSetting.default_locale = default_locale
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not use the localized name if name has already been taken" do
|
||||||
|
begin
|
||||||
|
default_locale = SiteSetting.default_locale
|
||||||
|
I18n.locale = SiteSetting.default_locale = 'de'
|
||||||
|
|
||||||
|
another_group = Fabricate(:group,
|
||||||
|
name: I18n.t('groups.default_names.staff')
|
||||||
|
)
|
||||||
|
|
||||||
|
group = Group.refresh_automatic_group!(:staff)
|
||||||
|
|
||||||
|
expect(group.name).to eq('staff')
|
||||||
|
ensure
|
||||||
|
I18n.locale = SiteSetting.default_locale = default_locale
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "Correctly handles removal of primary group" do
|
it "Correctly handles removal of primary group" do
|
||||||
|
|
Loading…
Reference in New Issue