Skip to content

Commit

Permalink
[webui] move prepare_bsrequest to BsRequest model
Browse files Browse the repository at this point in the history
  • Loading branch information
vpereira committed Jul 5, 2018
1 parent b0e6ecf commit 2198f30
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 21 deletions.
15 changes: 4 additions & 11 deletions src/api/app/controllers/webui/request_controller.rb
Expand Up @@ -194,7 +194,7 @@ def delete_request
opts = { target_project: params[:project], description: params[:description] }
opts[:target_package] = params[:package] if params[:package]
opts[:target_repository] = params[:repository] if params[:repository]
req = prepare_bsrequest(:delete, opts)
req = BsRequest.build_from_params(:delete, opts)
req.save!
end

Expand Down Expand Up @@ -228,7 +228,7 @@ def add_role_request
opts[:target_package] = params[:package] if params[:package]
opts[:person_name] = params[:user] if params[:user]
opts[:group_name] = params[:group] if params[:group]
req = prepare_bsrequest(:add_role, opts)
req = BsRequest.build_from_params(:add_role, opts)
req.save!
end
rescue APIException => e
Expand All @@ -252,7 +252,7 @@ def set_bugowner_request
opts[:target_package] = params[:package] if params[:package]
opts[:person_name] = params[:user] if params[:user]
opts[:group_name] = params[:group] if params[:group]
req = prepare_bsrequest(:set_bugowner, opts)
req = BsRequest.build_from_params(:set_bugowner, opts)
req.save!
end
rescue APIException => e
Expand Down Expand Up @@ -281,7 +281,7 @@ def change_devel_request
target_package: params[:package],
source_project: params[:devel_project] }
opts[:source_package] = params[:devel_package] || params[:package]
req = prepare_bsrequest(:change_devel, opts)
req = BsRequest.build_from_params(:change_devel, opts)
req.save!
end
rescue BsRequestAction::UnknownProject,
Expand Down Expand Up @@ -384,13 +384,6 @@ def accept_request
end
end

def prepare_bsrequest(action, params)
req = BsRequest.new(state: 'new', description: params[:description])
params.delete :description
req.bs_request_actions.build(params.merge(type: action.to_s))
req
end

def forward_request_to(fwd)
# split off 'forward_' and split into project and package
tgt_prj, tgt_pkg = params[fwd].split('_#_')
Expand Down
7 changes: 7 additions & 0 deletions src/api/app/models/bs_request.rb
Expand Up @@ -245,6 +245,13 @@ def self.truncated_diffs?(request)
end
end

def self.build_from_params(action, params)
req = BsRequest.new(state: 'new', description: params[:description])
params.delete :description
req.bs_request_actions.build(params.merge(type: action.to_s))
req
end

def self.sourcediff_has_shown_attribute?(sourcediff)
if sourcediff && sourcediff['files']
# the 'shown' attribute is only set if the backend truncated the diff
Expand Down
20 changes: 10 additions & 10 deletions src/api/spec/controllers/webui/request_controller_spec.rb
Expand Up @@ -397,7 +397,7 @@
end

describe 'POST #set_bugowner_request' do
let(:req) { BsRequest.find_by(creator: submitter_with_group.login, description: 'blah blah blash', state: 'new') }
let(:bs_request) { BsRequest.find_by(creator: submitter_with_group.login, description: 'blah blah blash', state: 'new') }
context 'with valid parameters' do
before do
login(submitter_with_group)
Expand All @@ -409,14 +409,14 @@
}
end

it { expect(req).not_to be nil }
it { expect(req.description).to eq('blah blah blash') }
it { expect(response).to redirect_to(request_show_path(number: req)) }
it { expect(bs_request).not_to be nil }
it { expect(bs_request.description).to eq('blah blah blash') }
it { expect(response).to redirect_to(request_show_path(number: bs_request)) }
end
end

describe 'POST #change_devel_request' do
let(:req) { BsRequest.find_by(description: 'change it!', creator: submitter.login, state: 'new') }
let(:bs_request) { BsRequest.find_by(description: 'change it!', creator: submitter.login, state: 'new') }
context 'with valid parameters' do
before do
login(submitter)
Expand All @@ -426,13 +426,13 @@
}
end

it { expect(response).to redirect_to(request_show_path(number: req)) }
it { expect(response).to redirect_to(request_show_path(number: bs_request)) }
it { expect(flash[:success]).to be nil }
it { expect(req).not_to be nil }
it { expect(req.description).to eq('change it!') }
it { expect(bs_request).not_to be nil }
it { expect(bs_request.description).to eq('change it!') }

it 'creates a request action with correct data' do
request_action = req.bs_request_actions.where(
request_action = bs_request.bs_request_actions.where(
type: 'change_devel',
target_project: target_project.name,
target_package: target_package.name,
Expand All @@ -454,7 +454,7 @@

it { expect(flash[:error]).to eq("No such package: #{source_project.name}/non-existant") }
it { expect(response).to redirect_to(package_show_path(project: target_project, package: target_package)) }
it { expect(req).to be nil }
it { expect(bs_request).to be nil }
end
end

Expand Down
5 changes: 5 additions & 0 deletions src/api/spec/models/bs_request_spec.rb
Expand Up @@ -334,6 +334,11 @@
end
end

describe '#build_from_params' do
let(:opts) { { target_project: 'home:Admin', description: 'super duper' } }
it { expect(BsRequest.build_from_params(:set_bugowner, opts)).not_to be_nil }
end

describe '#sanitize!' do
let(:target_package) { create(:package) }
let(:patchinfo) { create(:patchinfo) }
Expand Down

0 comments on commit 2198f30

Please sign in to comment.