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

Fix route rename descendants if route.name is blank

parent d01cd84e
No related branches found
No related tags found
No related merge requests found
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