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
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