Skip to content
Snippets Groups Projects
Commit a6a3df64 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Merge branch 'dz-fix-route-rename-descendants' into 'master'

Fix route rename descendants if route.name is blank

See merge request !9074
parents b28d66c3 4d40c3c3
No related branches found
No related tags found
1 merge request!9074Fix route rename descendants if route.name is blank
Pipeline #
Loading
Loading
@@ -15,14 +15,19 @@ class Route < ActiveRecord::Base
descendants = Route.where('path LIKE ?', "#{path_was}/%")
 
descendants.each do |route|
attributes = {
path: route.path.sub(path_was, path),
name: route.name.sub(name_was, name)
}
attributes = {}
if path_changed? && route.path.present?
attributes[:path] = route.path.sub(path_was, path)
end
if name_changed? && route.name.present?
attributes[:name] = route.name.sub(name_was, name)
end
 
# Note that update_columns skips validation and callbacks.
# We need this to avoid recursive call of rename_descendants method
route.update_columns(attributes)
route.update_columns(attributes) unless attributes.empty?
end
end
end
Loading
Loading
Loading
Loading
@@ -20,13 +20,25 @@ describe Route, models: true do
let!(:similar_group) { create(:group, path: 'gitlab-org', name: 'gitlab-org') }
 
context 'path update' do
before { route.update_attributes(path: 'bar') }
context 'when route name is set' do
before { route.update_attributes(path: 'bar') }
it "updates children routes with new path" do
expect(described_class.exists?(path: 'bar')).to be_truthy
expect(described_class.exists?(path: 'bar/test')).to be_truthy
expect(described_class.exists?(path: 'bar/test/foo')).to be_truthy
expect(described_class.exists?(path: 'gitlab-org')).to be_truthy
end
end
 
it "updates children routes with new path" do
expect(described_class.exists?(path: 'bar')).to be_truthy
expect(described_class.exists?(path: 'bar/test')).to be_truthy
expect(described_class.exists?(path: 'bar/test/foo')).to be_truthy
expect(described_class.exists?(path: 'gitlab-org')).to be_truthy
context 'when route name is nil' do
before do
route.update_column(:name, nil)
end
it "does not fail" do
expect(route.update_attributes(path: 'bar')).to be_truthy
end
end
end
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment