Make it possible to retrieve both resolved and unresolved reports by api (#38323)
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
parent
6a4d14b178
commit
6b2616453f
@ -16,6 +16,7 @@ class Api::V1::Admin::ReportsController < Api::BaseController
|
|||||||
|
|
||||||
FILTER_PARAMS = %i(
|
FILTER_PARAMS = %i(
|
||||||
resolved
|
resolved
|
||||||
|
unresolved
|
||||||
account_id
|
account_id
|
||||||
target_account_id
|
target_account_id
|
||||||
).freeze
|
).freeze
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
class ReportFilter
|
class ReportFilter
|
||||||
KEYS = %i(
|
KEYS = %i(
|
||||||
resolved
|
resolved
|
||||||
|
unresolved
|
||||||
account_id
|
account_id
|
||||||
target_account_id
|
target_account_id
|
||||||
by_target_domain
|
by_target_domain
|
||||||
@ -16,7 +17,7 @@ class ReportFilter
|
|||||||
end
|
end
|
||||||
|
|
||||||
def results
|
def results
|
||||||
scope = Report.unresolved
|
scope = status_scope
|
||||||
|
|
||||||
relevant_params.each do |key, value|
|
relevant_params.each do |key, value|
|
||||||
scope = scope.merge scope_for(key, value)
|
scope = scope.merge scope_for(key, value)
|
||||||
@ -28,7 +29,7 @@ class ReportFilter
|
|||||||
private
|
private
|
||||||
|
|
||||||
def relevant_params
|
def relevant_params
|
||||||
params.tap do |args|
|
params.except(:resolved, :unresolved).tap do |args|
|
||||||
args.delete(:target_origin) if origin_is_remote_and_domain_present?
|
args.delete(:target_origin) if origin_is_remote_and_domain_present?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -37,12 +38,20 @@ class ReportFilter
|
|||||||
params[:target_origin] == 'remote' && params[:by_target_domain].present?
|
params[:target_origin] == 'remote' && params[:by_target_domain].present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def status_scope
|
||||||
|
resolved = params.key?(:resolved)
|
||||||
|
unresolved = params.key?(:unresolved)
|
||||||
|
|
||||||
|
return Report.all if resolved && unresolved
|
||||||
|
return Report.resolved if resolved
|
||||||
|
|
||||||
|
Report.unresolved
|
||||||
|
end
|
||||||
|
|
||||||
def scope_for(key, value)
|
def scope_for(key, value)
|
||||||
case key.to_sym
|
case key.to_sym
|
||||||
when :by_target_domain
|
when :by_target_domain
|
||||||
Report.where(target_account: Account.where(domain: value))
|
Report.where(target_account: Account.where(domain: value))
|
||||||
when :resolved
|
|
||||||
Report.resolved
|
|
||||||
when :account_id
|
when :account_id
|
||||||
Report.where(account_id: value)
|
Report.where(account_id: value)
|
||||||
when :target_account_id
|
when :target_account_id
|
||||||
|
|||||||
@ -78,6 +78,17 @@ RSpec.describe 'Reports' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with both resolved and unresolved params' do
|
||||||
|
let(:params) { { resolved: true, unresolved: true } }
|
||||||
|
let(:scope) { Report.all }
|
||||||
|
|
||||||
|
it 'returns all reports' do
|
||||||
|
subject
|
||||||
|
|
||||||
|
expect(response.parsed_body).to match_array(expected_response)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'with account_id param' do
|
context 'with account_id param' do
|
||||||
let(:params) { { account_id: reporter.id } }
|
let(:params) { { account_id: reporter.id } }
|
||||||
let(:scope) { Report.unresolved.where(account: reporter) }
|
let(:scope) { Report.unresolved.where(account: reporter) }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user