7a233b37cd
This adds a database migration that creates routes for any projects and namespaces that don't already have one. We also remove the runtime code for dynamically creating routes, as this is no longer necessary.
84 lines
2.1 KiB
Ruby
84 lines
2.1 KiB
Ruby
require 'spec_helper'
|
|
require Rails.root.join('db', 'migrate', '20180702134423_generate_missing_routes.rb')
|
|
|
|
describe GenerateMissingRoutes, :migration do
|
|
describe '#up' do
|
|
let(:namespaces) { table(:namespaces) }
|
|
let(:projects) { table(:projects) }
|
|
let(:routes) { table(:routes) }
|
|
|
|
it 'creates routes for projects without a route' do
|
|
namespace = namespaces.create!(name: 'GitLab', path: 'gitlab')
|
|
|
|
routes.create!(
|
|
path: 'gitlab',
|
|
source_type: 'Namespace',
|
|
source_id: namespace.id
|
|
)
|
|
|
|
project = projects.create!(
|
|
name: 'GitLab CE',
|
|
path: 'gitlab-ce',
|
|
namespace_id: namespace.id
|
|
)
|
|
|
|
described_class.new.up
|
|
|
|
route = routes.where(source_type: 'Project').take
|
|
|
|
expect(route.source_id).to eq(project.id)
|
|
expect(route.path).to eq("gitlab/gitlab-ce-#{project.id}")
|
|
end
|
|
|
|
it 'creates routes for namespaces without a route' do
|
|
namespace = namespaces.create!(name: 'GitLab', path: 'gitlab')
|
|
|
|
described_class.new.up
|
|
|
|
route = routes.where(source_type: 'Namespace').take
|
|
|
|
expect(route.source_id).to eq(namespace.id)
|
|
expect(route.path).to eq("gitlab-#{namespace.id}")
|
|
end
|
|
|
|
it 'does not create routes for namespaces that already have a route' do
|
|
namespace = namespaces.create!(name: 'GitLab', path: 'gitlab')
|
|
|
|
routes.create!(
|
|
path: 'gitlab',
|
|
source_type: 'Namespace',
|
|
source_id: namespace.id
|
|
)
|
|
|
|
described_class.new.up
|
|
|
|
expect(routes.count).to eq(1)
|
|
end
|
|
|
|
it 'does not create routes for projects that already have a route' do
|
|
namespace = namespaces.create!(name: 'GitLab', path: 'gitlab')
|
|
|
|
routes.create!(
|
|
path: 'gitlab',
|
|
source_type: 'Namespace',
|
|
source_id: namespace.id
|
|
)
|
|
|
|
project = projects.create!(
|
|
name: 'GitLab CE',
|
|
path: 'gitlab-ce',
|
|
namespace_id: namespace.id
|
|
)
|
|
|
|
routes.create!(
|
|
path: 'gitlab/gitlab-ce',
|
|
source_type: 'Project',
|
|
source_id: project.id
|
|
)
|
|
|
|
described_class.new.up
|
|
|
|
expect(routes.count).to eq(2)
|
|
end
|
|
end
|
|
end
|