rosa-build/spec/jobs/run_build_lists_job_spec.rb

55 lines
1.9 KiB
Ruby

require 'spec_helper'
describe RunBuildListsJob do
let(:build_list) { FactoryGirl.build(:build_list, id: 123) }
let(:user) { build_list.user }
let(:project) { build_list.project }
let(:ability) { double(:ability) }
before do
stub_symlink_methods
allow(BuildList).to receive(:find).with(123).and_return(build_list)
BuildList::Package.stub_chain(:joins, :where, :reorder, :uniq, :pluck).and_return([project.id])
Project.stub_chain(:where, :to_a).and_return([project])
allow(Ability).to receive(:new).and_return(ability)
allow(ability).to receive(:can?).with(:show, build_list).and_return(true)
allow(ability).to receive(:can?).with(:write, project).and_return(true)
allow(ability).to receive(:can?).with(:create, anything).and_return(true)
end
it 'ensures that not raises error' do
expect do
RunBuildListsJob.perform build_list.id, user.id
end.to_not raise_exception
end
it 'ensures that creates build_list' do
expect do
RunBuildListsJob.perform build_list.id, user.id
end.to change(BuildList, :count).by(1)
end
it 'ensures that do nothing if user has no access for show of build_list' do
allow(ability).to receive(:can?).with(:show, build_list).and_return(false)
expect do
RunBuildListsJob.perform build_list.id, user.id
end.to change(BuildList, :count).by(0)
end
it 'ensures that do nothing if user has no access for write of project' do
allow(ability).to receive(:can?).with(:write, project).and_return(false)
expect do
RunBuildListsJob.perform build_list.id, user.id
end.to change(BuildList, :count).by(0)
end
it 'ensures that do nothing if user has no access for create of build_list' do
allow(ability).to receive(:can?).with(:create, anything).and_return(false)
expect do
RunBuildListsJob.perform build_list.id, user.id
end.to change(BuildList, :count).by(0)
end
end