diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index c10fa721..27dd50e4 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -42,4 +42,14 @@ class Admin::ProjectsController < AdminController redirect_to projects_url, notice: 'Project was successfully deleted.' end + + protected + + def project + id = params[:project_id] || params[:id] + id = id.split("/") if id.include?("/") + + @project ||= Project.find_by_path(id) + @project || render_404 + end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d7dbf5ea..bebac0f7 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -88,7 +88,7 @@ module ApplicationHelper [ "Users", users.map {|u| [u.human_name, u.id]} ] ] - if selected == :current_user + if selected == :current_user && current_user.namespace selected = current_user.namespace.id end diff --git a/app/observers/user_observer.rb b/app/observers/user_observer.rb index e96ba28b..d304b3a2 100644 --- a/app/observers/user_observer.rb +++ b/app/observers/user_observer.rb @@ -1,6 +1,6 @@ class UserObserver < ActiveRecord::Observer def after_create(user) - user.create_namespace(code: user.username, name: user.name) + user.create_namespace(path: user.username, name: user.name) log_info("User \"#{user.name}\" (#{user.email}) was created") @@ -13,7 +13,7 @@ class UserObserver < ActiveRecord::Observer def after_save user if user.username_changed? and user.namespace - user.namespace.update_attributes(code: user.username) + user.namespace.update_attributes(path: user.username) end end diff --git a/lib/api/projects.rb b/lib/api/projects.rb index d1156324..384dbcd5 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -38,10 +38,7 @@ module Gitlab # Example Request # POST /projects post do - params[:code] ||= params[:name] - params[:path] ||= params[:name] - attrs = attributes_for_keys [:path, - :name, + attrs = attributes_for_keys [:name, :description, :default_branch, :issues_enabled, diff --git a/spec/controllers/commits_controller_spec.rb b/spec/controllers/commits_controller_spec.rb index bf335634..da33fd8a 100644 --- a/spec/controllers/commits_controller_spec.rb +++ b/spec/controllers/commits_controller_spec.rb @@ -13,7 +13,7 @@ describe CommitsController do describe "GET show" do context "as atom feed" do it "should render as atom" do - get :show, project_id: project.code, id: "master.atom" + get :show, project_id: project.path, id: "master.atom" response.should be_success response.content_type.should == 'application/atom+xml' end diff --git a/spec/factories.rb b/spec/factories.rb index 7a496fcb..c673606b 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -12,7 +12,7 @@ FactoryGirl.define do factory :user, aliases: [:author, :assignee, :owner] do email { Faker::Internet.email } name - username 'john' + username { Faker::Internet.user_name } password "123456" password_confirmation { password } diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb index b6b1769f..58698eec 100644 --- a/spec/mailers/notify_spec.rb +++ b/spec/mailers/notify_spec.rb @@ -169,9 +169,7 @@ describe Notify do end describe 'project access changed' do - let(:project) { create(:project, - path: "Fuu", - code: "Fuu") } + let(:project) { create(:project) } let(:user) { create(:user) } let(:users_project) { create(:users_project, project: project, diff --git a/spec/observers/user_observer_spec.rb b/spec/observers/user_observer_spec.rb index ea5cf797..4ba0f05d 100644 --- a/spec/observers/user_observer_spec.rb +++ b/spec/observers/user_observer_spec.rb @@ -13,7 +13,12 @@ describe UserObserver do end context 'when a new user is created' do - let(:user) { double(:user, id: 42, password: 'P@ssword!', name: 'John', email: 'u@mail.local', username: 'root') } + let(:user) { double(:user, id: 42, + password: 'P@ssword!', + name: 'John', + email: 'u@mail.local', + username: 'root', + create_namespace: true) } let(:notification) { double :notification } it 'sends an email' do diff --git a/spec/observers/users_project_observer_spec.rb b/spec/observers/users_project_observer_spec.rb index cbe42248..548f1893 100644 --- a/spec/observers/users_project_observer_spec.rb +++ b/spec/observers/users_project_observer_spec.rb @@ -2,9 +2,7 @@ require 'spec_helper' describe UsersProjectObserver do let(:user) { create(:user) } - let(:project) { create(:project, - code: "Fuu", - path: "Fuu" ) } + let(:project) { create(:project) } let(:users_project) { create(:users_project, project: project, user: user )} diff --git a/spec/requests/admin/admin_hooks_spec.rb b/spec/requests/admin/admin_hooks_spec.rb index 3f35b2fd..bc0586b2 100644 --- a/spec/requests/admin/admin_hooks_spec.rb +++ b/spec/requests/admin/admin_hooks_spec.rb @@ -2,9 +2,7 @@ require 'spec_helper' describe "Admin::Hooks" do before do - @project = create(:project, - name: "LeGiT", - code: "LGT") + @project = create(:project) login_as :admin @system_hook = create(:system_hook) diff --git a/spec/requests/admin/admin_projects_spec.rb b/spec/requests/admin/admin_projects_spec.rb index ad42f675..c9ddf1f4 100644 --- a/spec/requests/admin/admin_projects_spec.rb +++ b/spec/requests/admin/admin_projects_spec.rb @@ -39,8 +39,8 @@ describe "Admin::Projects" do end it "should have project edit page" do - page.should have_content("Project name") - page.should have_content("URL") + page.should have_content("Edit project") + page.should have_button("Save Project") end describe "Update project" do @@ -60,39 +60,6 @@ describe "Admin::Projects" do end end - describe "GET /admin/projects/new" do - before do - visit admin_projects_path - click_link "New Project" - end - - it "should be correct path" do - current_path.should == new_admin_project_path - end - - it "should have labels for new project" do - page.should have_content("Project name is") - end - end - - describe "POST /admin/projects" do - before do - visit new_admin_project_path - fill_in 'project_name', with: 'NewProject' - expect { click_button "Create project" }.to change { Project.count }.by(1) - @project = Project.last - end - - it "should be correct path" do - current_path.should == admin_project_path(@project) - end - - it "should show project" do - page.should have_content(@project.name) - page.should have_content(@project.path) - end - end - describe "Add new team member" do before do @new_user = create(:user) diff --git a/spec/requests/admin/admin_users_spec.rb b/spec/requests/admin/admin_users_spec.rb index 9f43f07a..ca134c2d 100644 --- a/spec/requests/admin/admin_users_spec.rb +++ b/spec/requests/admin/admin_users_spec.rb @@ -23,6 +23,7 @@ describe "Admin::Users" do @password = "123ABC" visit new_admin_user_path fill_in "user_name", with: "Big Bang" + fill_in "user_username", with: "bang" fill_in "user_email", with: "bigbang@mail.com" fill_in "user_password", with: @password fill_in "user_password_confirmation", with: @password diff --git a/spec/requests/api/milestones_spec.rb b/spec/requests/api/milestones_spec.rb index 860825ab..dc96d46d 100644 --- a/spec/requests/api/milestones_spec.rb +++ b/spec/requests/api/milestones_spec.rb @@ -11,7 +11,7 @@ describe Gitlab::API do describe "GET /projects/:id/milestones" do it "should return project milestones" do - get api("/projects/#{project.code}/milestones", user) + get api("/projects/#{project.path}/milestones", user) response.status.should == 200 json_response.should be_an Array json_response.first['title'].should == milestone.title @@ -20,7 +20,7 @@ describe Gitlab::API do describe "GET /projects/:id/milestones/:milestone_id" do it "should return a project milestone by id" do - get api("/projects/#{project.code}/milestones/#{milestone.id}", user) + get api("/projects/#{project.path}/milestones/#{milestone.id}", user) response.status.should == 200 json_response['title'].should == milestone.title end @@ -28,7 +28,7 @@ describe Gitlab::API do describe "POST /projects/:id/milestones" do it "should create a new project milestone" do - post api("/projects/#{project.code}/milestones", user), + post api("/projects/#{project.path}/milestones", user), title: 'new milestone' response.status.should == 201 json_response['title'].should == 'new milestone' @@ -38,7 +38,7 @@ describe Gitlab::API do describe "PUT /projects/:id/milestones/:milestone_id" do it "should update a project milestone" do - put api("/projects/#{project.code}/milestones/#{milestone.id}", user), + put api("/projects/#{project.path}/milestones/#{milestone.id}", user), title: 'updated title' response.status.should == 200 json_response['title'].should == 'updated title' diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index b0a02366..b4e2fbbd 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -53,7 +53,6 @@ describe Gitlab::API do it "should assign attributes to project" do project = attributes_for(:project, { - path: project.name.parameterize, description: Faker::Lorem.sentence, default_branch: 'stable', issues_enabled: false, @@ -257,7 +256,7 @@ describe Gitlab::API do describe "POST /projects/:id/snippets" do it "should create a new project snippet" do post api("/projects/#{project.path}/snippets", user), - title: 'api test', file_name: 'sample.rb', path: 'test' + title: 'api test', file_name: 'sample.rb', code: 'test' response.status.should == 201 json_response['title'].should == 'api test' end @@ -266,10 +265,10 @@ describe Gitlab::API do describe "PUT /projects/:id/snippets/:shippet_id" do it "should update an existing project snippet" do put api("/projects/#{project.path}/snippets/#{snippet.id}", user), - path: 'updated path' + code: 'updated code' response.status.should == 200 json_response['title'].should == 'example' - snippet.reload.content.should == 'updated path' + snippet.reload.content.should == 'updated code' end end