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
|
@ -8,7 +8,7 @@ describe Project do
|
|||
@u1 = create(:user)
|
||||
@u2 = create(:user)
|
||||
@u3 = create(:user)
|
||||
@u4 = @p1.chief
|
||||
@u4 = @p1.owner
|
||||
|
||||
@abilities = Six.new
|
||||
@abilities << Ability
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -39,7 +39,6 @@ describe User do
|
|||
describe "Associations" do
|
||||
it { should have_one(:namespace) }
|
||||
it { should have_many(:users_projects).dependent(:destroy) }
|
||||
it { should have_many(:projects) }
|
||||
it { should have_many(:groups) }
|
||||
it { should have_many(:keys).dependent(:destroy) }
|
||||
it { should have_many(:events).class_name('Event').dependent(:destroy) }
|
||||
|
@ -119,4 +118,71 @@ describe User do
|
|||
user.authentication_token.should_not be_blank
|
||||
end
|
||||
end
|
||||
|
||||
describe 'projects' do
|
||||
before do
|
||||
ActiveRecord::Base.observers.enable(:user_observer)
|
||||
@user = create :user
|
||||
@project = create :project, namespace: @user.namespace
|
||||
end
|
||||
|
||||
it { @user.authorized_projects.should include(@project) }
|
||||
it { @user.owned_projects.should include(@project) }
|
||||
it { @user.personal_projects.should include(@project) }
|
||||
end
|
||||
|
||||
describe 'groups' do
|
||||
before do
|
||||
ActiveRecord::Base.observers.enable(:user_observer)
|
||||
@user = create :user
|
||||
@group = create :group, owner: @user
|
||||
end
|
||||
|
||||
it { @user.several_namespaces?.should be_true }
|
||||
it { @user.namespaces.should == [@user.namespace, @group] }
|
||||
it { @user.authorized_groups.should == [@group] }
|
||||
it { @user.owned_groups.should == [@group] }
|
||||
end
|
||||
|
||||
describe 'namespaced' do
|
||||
before do
|
||||
ActiveRecord::Base.observers.enable(:user_observer)
|
||||
@user = create :user
|
||||
@project = create :project, namespace: @user.namespace
|
||||
end
|
||||
|
||||
it { @user.several_namespaces?.should be_false }
|
||||
it { @user.namespaces.should == [@user.namespace] }
|
||||
end
|
||||
|
||||
describe 'blocking user' do
|
||||
let(:user) { create(:user, name: 'John Smith') }
|
||||
|
||||
it "should block user" do
|
||||
user.block
|
||||
user.blocked.should be_true
|
||||
end
|
||||
end
|
||||
|
||||
describe 'filter' do
|
||||
before do
|
||||
@user = create :user
|
||||
@admin = create :user, admin: true
|
||||
@blocked = create :user, blocked: true
|
||||
end
|
||||
|
||||
it { User.filter("admins").should == [@admin] }
|
||||
it { User.filter("blocked").should == [@blocked] }
|
||||
it { User.filter("wop").should == [@user, @admin, @blocked] }
|
||||
it { User.filter(nil).should == [@user, @admin] }
|
||||
end
|
||||
|
||||
describe :not_in_project do
|
||||
before do
|
||||
@user = create :user
|
||||
@project = create :project
|
||||
end
|
||||
|
||||
it { User.not_in_project(@project).should == [@user, @project.owner] }
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue