Merge 'master' branch
This commit is contained in:
commit
77bfc591bf
65 changed files with 965 additions and 435 deletions
|
@ -247,6 +247,11 @@ describe GitlabMarkdownHelper do
|
|||
it "ignores invalid emoji" do
|
||||
gfm(":invalid-emoji:").should_not match(/<img/)
|
||||
end
|
||||
|
||||
it "should work independet of reference links (i.e. without @project being set)" do
|
||||
@project = nil
|
||||
gfm(":+1:").should match(/<img/)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
15
spec/helpers/tree_helper_spec.rb
Normal file
15
spec/helpers/tree_helper_spec.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe TreeHelper do
|
||||
describe '#markup?' do
|
||||
%w(mdown md markdown textile rdoc org creole mediawiki rst asciidoc pod).each do |type|
|
||||
it "returns true for #{type} files" do
|
||||
markup?("README.#{type}").should be_true
|
||||
end
|
||||
end
|
||||
|
||||
it "returns false when given a non-markup filename" do
|
||||
markup?('README.rb').should_not be_true
|
||||
end
|
||||
end
|
||||
end
|
16
spec/lib/gitolite_config_spec.rb
Normal file
16
spec/lib/gitolite_config_spec.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::GitoliteConfig do
|
||||
let(:gitolite) { Gitlab::GitoliteConfig.new }
|
||||
|
||||
it { should respond_to :write_key }
|
||||
it { should respond_to :rm_key }
|
||||
it { should respond_to :update_project }
|
||||
it { should respond_to :update_project! }
|
||||
it { should respond_to :update_projects }
|
||||
it { should respond_to :destroy_project }
|
||||
it { should respond_to :destroy_project! }
|
||||
it { should respond_to :apply }
|
||||
it { should respond_to :admin_all_repo }
|
||||
it { should respond_to :admin_all_repo! }
|
||||
end
|
25
spec/lib/gitolite_spec.rb
Normal file
25
spec/lib/gitolite_spec.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::Gitolite do
|
||||
let(:project) { double('Project', path: 'diaspora') }
|
||||
let(:gitolite_config) { double('Gitlab::GitoliteConfig') }
|
||||
let(:gitolite) { Gitlab::Gitolite.new }
|
||||
|
||||
before do
|
||||
gitolite.stub(config: gitolite_config)
|
||||
end
|
||||
|
||||
it { should respond_to :set_key }
|
||||
it { should respond_to :remove_key }
|
||||
|
||||
it { should respond_to :update_repository }
|
||||
it { should respond_to :create_repository }
|
||||
it { should respond_to :remove_repository }
|
||||
|
||||
it { gitolite.url_to_repo('diaspora').should == Gitlab.config.ssh_path + "diaspora.git" }
|
||||
|
||||
it "should call config update" do
|
||||
gitolite_config.should_receive(:update_project!)
|
||||
gitolite.update_repository project
|
||||
end
|
||||
end
|
|
@ -49,4 +49,26 @@ describe Event do
|
|||
it { @event.branch_name.should == "master" }
|
||||
it { @event.author.should == @user }
|
||||
end
|
||||
|
||||
describe "Joined project team" do
|
||||
let(:project) {Factory.create :project}
|
||||
let(:new_user) {Factory.create :user}
|
||||
it "should create event" do
|
||||
UsersProject.observers.enable :users_project_observer
|
||||
expect{
|
||||
UsersProject.bulk_import(project, [new_user.id], UsersProject::DEVELOPER)
|
||||
}.to change{Event.count}.by(1)
|
||||
end
|
||||
end
|
||||
describe "Left project team" do
|
||||
let(:project) {Factory.create :project}
|
||||
let(:new_user) {Factory.create :user}
|
||||
it "should create event" do
|
||||
UsersProject.bulk_import(project, [new_user.id], UsersProject::DEVELOPER)
|
||||
UsersProject.observers.enable :users_project_observer
|
||||
expect{
|
||||
UsersProject.bulk_delete(project, [new_user.id])
|
||||
}.to change{Event.count}.by(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -23,6 +23,17 @@ describe UsersProjectObserver do
|
|||
Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
|
||||
subject.after_commit(users_project)
|
||||
end
|
||||
it "should create new event" do
|
||||
Event.should_receive(:create).with(
|
||||
project_id: users_project.project.id,
|
||||
action: Event::Joined,
|
||||
author_id: users_project.user.id
|
||||
)
|
||||
subject.after_create(users_project)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#after_update" do
|
||||
it "should called when UsersProject updated" do
|
||||
subject.should_receive(:after_commit).once
|
||||
UsersProject.observers.enable :users_project_observer do
|
||||
|
@ -40,4 +51,23 @@ describe UsersProjectObserver do
|
|||
end
|
||||
end
|
||||
end
|
||||
describe "#after_destroy" do
|
||||
it "should called when UsersProject destroyed" do
|
||||
subject.should_receive(:after_destroy)
|
||||
UsersProject.observers.enable :users_project_observer do
|
||||
UsersProject.bulk_delete(
|
||||
users_project.project,
|
||||
[users_project.user.id]
|
||||
)
|
||||
end
|
||||
end
|
||||
it "should create new event" do
|
||||
Event.should_receive(:create).with(
|
||||
project_id: users_project.project.id,
|
||||
action: Event::Left,
|
||||
author_id: users_project.user.id
|
||||
)
|
||||
subject.after_destroy(users_project)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,8 +4,12 @@ describe Gitlab::API do
|
|||
include ApiHelpers
|
||||
|
||||
let(:user) { Factory :user }
|
||||
let(:user2) { Factory.create(:user) }
|
||||
let(:user3) { Factory.create(:user) }
|
||||
let!(:project) { Factory :project, owner: user }
|
||||
let!(:snippet) { Factory :snippet, author: user, project: project, title: 'example' }
|
||||
let!(:users_project) { Factory :users_project, user: user, project: project, project_access: UsersProject::MASTER }
|
||||
let!(:users_project2) { Factory :users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER }
|
||||
before { project.add_access(user, :read) }
|
||||
|
||||
describe "GET /projects" do
|
||||
|
@ -104,6 +108,45 @@ describe Gitlab::API do
|
|||
end
|
||||
end
|
||||
|
||||
describe "GET /projects/:id/users" do
|
||||
it "should return project users" do
|
||||
get api("/projects/#{project.code}/users", user)
|
||||
|
||||
response.status.should == 200
|
||||
|
||||
json_response.should be_an Array
|
||||
json_response.count.should == 2
|
||||
json_response.first['user']['id'].should == user.id
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST /projects/:id/users" do
|
||||
it "should add users to project" do
|
||||
expect {
|
||||
post api("/projects/#{project.code}/users", user),
|
||||
user_ids: {"0" => user2.id}, project_access: UsersProject::DEVELOPER
|
||||
}.to change {project.users_projects.where(:project_access => UsersProject::DEVELOPER).count}.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "PUT /projects/:id/users" do
|
||||
it "should update users to new access role" do
|
||||
expect {
|
||||
put api("/projects/#{project.code}/users", user),
|
||||
user_ids: {"0" => user3.id}, project_access: UsersProject::MASTER
|
||||
}.to change {project.users_projects.where(:project_access => UsersProject::MASTER).count}.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "DELETE /projects/:id/users" do
|
||||
it "should delete users from project" do
|
||||
expect {
|
||||
delete api("/projects/#{project.code}/users", user),
|
||||
user_ids: {"0" => user3.id}
|
||||
}.to change {project.users_projects.count}.by(-1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET /projects/:id/repository/tags" do
|
||||
it "should return an array of project tags" do
|
||||
get api("/projects/#{project.code}/repository/tags", user)
|
||||
|
|
|
@ -3,6 +3,16 @@ require 'spec_helper'
|
|||
describe "Projects" do
|
||||
before { login_as :user }
|
||||
|
||||
describe 'GET /project/new' do
|
||||
it "should work autocomplete", :js => true do
|
||||
visit new_project_path
|
||||
|
||||
fill_in 'project_name', with: 'Awesome'
|
||||
find("#project_path").value.should == 'awesome'
|
||||
find("#project_code").value.should == 'awesome'
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET /projects/show" do
|
||||
before do
|
||||
@project = Factory :project, owner: @user
|
||||
|
|
|
@ -17,7 +17,7 @@ module GitoliteStub
|
|||
)
|
||||
|
||||
gitolite_admin = double(
|
||||
'Gitolite::GitoliteAdmin',
|
||||
'Gitolite::GitoliteAdmin',
|
||||
config: gitolite_config,
|
||||
save: true,
|
||||
)
|
||||
|
@ -27,9 +27,21 @@ module GitoliteStub
|
|||
end
|
||||
|
||||
def stub_gitlab_gitolite
|
||||
gitlab_gitolite = Gitlab::Gitolite.new
|
||||
Gitlab::Gitolite.stub(new: gitlab_gitolite)
|
||||
gitlab_gitolite.stub(configure: ->() { yield(self) })
|
||||
gitlab_gitolite.stub(update_keys: true)
|
||||
gitolite_config = double('Gitlab::GitoliteConfig')
|
||||
gitolite_config.stub(
|
||||
apply: ->() { yield(self) },
|
||||
write_key: true,
|
||||
rm_key: true,
|
||||
update_projects: true,
|
||||
update_project: true,
|
||||
update_project!: true,
|
||||
destroy_project: true,
|
||||
destroy_project!: true,
|
||||
admin_all_repo: true,
|
||||
admin_all_repo!: true,
|
||||
|
||||
)
|
||||
|
||||
Gitlab::GitoliteConfig.stub(new: gitolite_config)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue