Project has now correct owner and creator. Increased test coverage
This commit is contained in:
parent
91995909d9
commit
00a1f5bc2c
15 changed files with 241 additions and 113 deletions
|
@ -24,7 +24,7 @@ describe Project do
|
|||
describe "Associations" do
|
||||
it { should belong_to(:group) }
|
||||
it { should belong_to(:namespace) }
|
||||
it { should belong_to(:owner).class_name('User') }
|
||||
it { should belong_to(:creator).class_name('User') }
|
||||
it { should have_many(:users) }
|
||||
it { should have_many(:events).dependent(:destroy) }
|
||||
it { should have_many(:merge_requests).dependent(:destroy) }
|
||||
|
@ -41,7 +41,7 @@ describe Project do
|
|||
|
||||
describe "Mass assignment" do
|
||||
it { should_not allow_mass_assignment_of(:namespace_id) }
|
||||
it { should_not allow_mass_assignment_of(:owner_id) }
|
||||
it { should_not allow_mass_assignment_of(:creator_id) }
|
||||
it { should_not allow_mass_assignment_of(:private_flag) }
|
||||
end
|
||||
|
||||
|
@ -55,20 +55,15 @@ describe Project do
|
|||
it { should validate_presence_of(:path) }
|
||||
it { should validate_uniqueness_of(:path) }
|
||||
it { should ensure_length_of(:path).is_within(0..255) }
|
||||
# TODO: Formats
|
||||
|
||||
it { should ensure_length_of(:description).is_within(0..2000) }
|
||||
|
||||
# TODO: Formats
|
||||
|
||||
it { should validate_presence_of(:owner) }
|
||||
it { should validate_presence_of(:creator) }
|
||||
it { should ensure_inclusion_of(:issues_enabled).in_array([true, false]) }
|
||||
it { should ensure_inclusion_of(:wall_enabled).in_array([true, false]) }
|
||||
it { should ensure_inclusion_of(:merge_requests_enabled).in_array([true, false]) }
|
||||
it { should ensure_inclusion_of(:wiki_enabled).in_array([true, false]) }
|
||||
|
||||
it "should not allow new projects beyond user limits" do
|
||||
project.stub(:owner).and_return(double(can_create_project?: false, projects_limit: 1))
|
||||
project.stub(:creator).and_return(double(can_create_project?: false, projects_limit: 1))
|
||||
project.should_not be_valid
|
||||
project.errors[:base].first.should match(/Your own projects limit is 1/)
|
||||
end
|
||||
|
@ -134,7 +129,7 @@ describe Project do
|
|||
it { should respond_to(:transfer) }
|
||||
it { should respond_to(:name_with_namespace) }
|
||||
it { should respond_to(:namespace_owner) }
|
||||
it { should respond_to(:chief) }
|
||||
it { should respond_to(:owner) }
|
||||
it { should respond_to(:path_with_namespace) }
|
||||
end
|
||||
|
||||
|
@ -211,4 +206,75 @@ describe Project do
|
|||
@merge_request.last_commit.id.should == "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
|
||||
end
|
||||
end
|
||||
|
||||
describe :create_by_user do
|
||||
before do
|
||||
@user = create :user
|
||||
@opts = {
|
||||
name: "GitLab"
|
||||
}
|
||||
end
|
||||
|
||||
context 'user namespace' do
|
||||
before do
|
||||
@project = Project.create_by_user(@opts, @user)
|
||||
end
|
||||
|
||||
it { @project.should be_valid }
|
||||
it { @project.owner.should == @user }
|
||||
it { @project.namespace.should == @user.namespace }
|
||||
end
|
||||
|
||||
context 'user namespace' do
|
||||
before do
|
||||
@group = create :group, owner: @user
|
||||
@opts.merge!(namespace_id: @group.id)
|
||||
@project = Project.create_by_user(@opts, @user)
|
||||
end
|
||||
|
||||
it { @project.should be_valid }
|
||||
it { @project.owner.should == @user }
|
||||
it { @project.namespace.should == @group }
|
||||
end
|
||||
end
|
||||
|
||||
describe :find_with_namespace do
|
||||
context 'with namespace' do
|
||||
before do
|
||||
@group = create :group, name: 'gitlab'
|
||||
@project = create(:project, name: 'gitlab-ci', namespace: @group)
|
||||
end
|
||||
|
||||
it { Project.find_with_namespace('gitlab/gitlab-ci').should == @project }
|
||||
it { Project.find_with_namespace('gitlab-ci').should be_nil }
|
||||
end
|
||||
|
||||
context 'w/o namespace' do
|
||||
before do
|
||||
@project = create(:project, name: 'gitlab-ci')
|
||||
end
|
||||
|
||||
it { Project.find_with_namespace('gitlab-ci').should == @project }
|
||||
it { Project.find_with_namespace('gitlab/gitlab-ci').should be_nil }
|
||||
end
|
||||
end
|
||||
|
||||
describe :to_param do
|
||||
context 'with namespace' do
|
||||
before do
|
||||
@group = create :group, name: 'gitlab'
|
||||
@project = create(:project, name: 'gitlab-ci', namespace: @group)
|
||||
end
|
||||
|
||||
it { @project.to_param.should == "gitlab/gitlab-ci" }
|
||||
end
|
||||
|
||||
context 'w/o namespace' do
|
||||
before do
|
||||
@project = create(:project, name: 'gitlab-ci')
|
||||
end
|
||||
|
||||
it { @project.to_param.should == "gitlab-ci" }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue