[issue #27] Added group specs.

This commit is contained in:
George Vinogradov 2011-12-20 16:59:09 +04:00
parent 70e04c25fd
commit ce008fdeb1
1 changed files with 105 additions and 29 deletions

View File

@ -99,6 +99,88 @@ describe BuildListsController do
end
context 'for group' do
before(:each) do
stub_rsync_methods
@owner_group = Factory(:group)
@owner_user = Factory(:user)
@owner_group.objects.create :role => 'reader', :object_id => @owner_user.id, :object_type => 'User'
@member_group = Factory(:group)
@member_user = Factory(:user)
@member_group.objects.create :role => 'reader', :object_id => @member_user.id, :object_type => 'User'
@group = Factory(:group)
@user = Factory(:user)
@group.objects.create :role => 'reader', :object_id => @user.id, :object_type => 'User'
@project = Factory(:project, :owner => @owner_group)
@project.relations.create :role => 'reader', :object_id => @member_group.id, :object_type => 'Group'
@build_list = Factory(:build_list_core, :project => @project)
set_session_for(@user)
@show_params = {:project_id => @project.id, :id => @build_list.id}
end
context 'for all build lists' do
before(:each) do
@build_list1 = Factory(:build_list_core)
@build_list2 = Factory(:build_list_core, :project => Factory(:project, :visibility => 'hidden'))
@build_list3 = Factory(:build_list_core, :project => Factory(:project, :owner => @group, :visibility => 'hidden'))
b = Factory(:build_list_core, :project => Factory(:project, :visibility => 'hidden'))
b.project.relations.create :role => 'reader', :object_id => @group.id, :object_type => 'Group'
@build_list4 = b
end
it 'should be able to perform all action' do
get :all
response.should be_success
end
it 'should show only accessible build_lists' do
get :all
assigns(:build_lists).should include(@build_list1)
assigns(:build_lists).should_not include(@build_list2)
assigns(:build_lists).should include(@build_list3)
assigns(:build_lists).should include(@build_list4)
end
end
context 'for open project' do
it_should_behave_like 'show build list'
context 'if user is group owner' do
before(:each) {set_session_for(@owner_user)}
it_should_behave_like 'show build list'
end
context 'if user is group member' do
before(:each) {set_session_for(@member_user)}
it_should_behave_like 'show build list'
end
end
context 'for hidden project' do
before(:each) do
@project.visibility = 'hidden'
@project.save
end
it_should_behave_like 'not show build list'
context 'if user is group owner' do
before(:each) {set_session_for(@owner_user)}
it_should_behave_like 'show build list'
end
context 'if user is group member' do
before(:each) {set_session_for(@member_user)}
it_should_behave_like 'show build list'
end
end
end
context 'for admin' do
before(:each) { set_session_for Factory(:admin) }
@ -120,45 +202,39 @@ describe BuildListsController do
before(:each) do
stub_rsync_methods
set_session_for Factory(:admin)
end
let(:build_list1) { Factory(:build_list_core) }
let(:build_list2) { Factory(:build_list_core) }
let(:build_list3) { Factory(:build_list_core) }
let(:build_list4) do
b = Factory(:build_list_core)
b.created_at = b.created_at - 1.day
b.project = build_list3.project
b.pl = build_list3.pl
b.arch = build_list3.arch
b.save
b
@build_list1 = Factory(:build_list_core)
@build_list2 = Factory(:build_list_core)
@build_list3 = Factory(:build_list_core)
@build_list4 = Factory(:build_list_core, :created_at => (Time.now - 1.day),
:project => @build_list3.project, :pl => @build_list3.pl,
:arch => @build_list3.arch)
end
it 'should filter by bs_id' do
get :all, :filter => {:bs_id => build_list1.bs_id, :project_name => 'fdsfdf', :any_other_field => 'do not matter'}
assigns[:build_lists].should include(build_list1)
assigns[:build_lists].should_not include(build_list2)
assigns[:build_lists].should_not include(build_list3)
get :all, :filter => {:bs_id => @build_list1.bs_id, :project_name => 'fdsfdf', :any_other_field => 'do not matter'}
assigns[:build_lists].should include(@build_list1)
assigns[:build_lists].should_not include(@build_list2)
assigns[:build_lists].should_not include(@build_list3)
end
it 'should filter by project_name' do
# Project.where(:id => build_list2.project.id).update_all(:name => 'project_name')
get :all, :filter => {:project_name => build_list2.project.name}
assigns[:build_lists].should_not include(build_list1)
assigns[:build_lists].should include(build_list2)
assigns[:build_lists].should_not include(build_list3)
get :all, :filter => {:project_name => @build_list2.project.name}
assigns[:build_lists].should_not include(@build_list1)
assigns[:build_lists].should include(@build_list2)
assigns[:build_lists].should_not include(@build_list3)
end
it 'should filter by project_name and start_date' do
get :all, :filter => {:project_name => build_list3.project.name,
"created_at_start(1i)"=>build_list3.created_at.year.to_s,
"created_at_start(2i)"=>build_list3.created_at.month.to_s,
"created_at_start(3i)"=>build_list3.created_at.day.to_s}
assigns[:build_lists].should_not include(build_list1)
assigns[:build_lists].should_not include(build_list2)
assigns[:build_lists].should include(build_list3)
assigns[:build_lists].should_not include(build_list4)
get :all, :filter => {:project_name => @build_list3.project.name,
"created_at_start(1i)" => @build_list3.created_at.year.to_s,
"created_at_start(2i)" => @build_list3.created_at.month.to_s,
"created_at_start(3i)" => @build_list3.created_at.day.to_s}
assigns[:build_lists].should_not include(@build_list1)
assigns[:build_lists].should_not include(@build_list2)
assigns[:build_lists].should include(@build_list3)
assigns[:build_lists].should_not include(@build_list4)
# response.should be_success
end
end