Browse Source

testing I can download only logs matching both search and filter

pull/623/head
JG 3 years ago
parent
commit
a09ad3793c
  1. 13
      app/controllers/case_logs_controller.rb
  2. 26
      spec/requests/case_logs_controller_spec.rb

13
app/controllers/case_logs_controller.rb

@ -13,20 +13,17 @@ class CaseLogsController < ApplicationController
all_logs = current_user.case_logs all_logs = current_user.case_logs
@pagy, @case_logs = pagy( unpaginated_logs = filtered_case_logs(filtered_collection(all_logs, search_term))
filtered_case_logs(
filtered_collection( @pagy, @case_logs = pagy(unpaginated_logs)
all_logs, search_term
),
),
)
@searched = search_term.presence @searched = search_term.presence
@total_count = all_logs.size @total_count = all_logs.size
respond_to do |format| respond_to do |format|
format.html format.html
format.csv do format.csv do
send_data filtered_case_logs(current_user.case_logs).to_csv, filename: "logs-#{Time.zone.now}.csv" send_data unpaginated_logs.to_csv, filename: "logs-#{Time.zone.now}.csv"
end end
end end
end end

26
spec/requests/case_logs_controller_spec.rb

@ -757,7 +757,31 @@ RSpec.describe CaseLogsController, type: :request do
it "dowloads searched logs" do it "dowloads searched logs" do
get "/logs?search=#{case_log.id}", headers:, params: {} get "/logs?search=#{case_log.id}", headers:, params: {}
csv = CSV.parse(response.body) csv = CSV.parse(response.body)
expect(csv.count).to eq(1) expect(csv.count).to eq(2)
end
context "both filter and search applied" do
let!(:case_log) do
FactoryBot.create(
:case_log,
:completed,
postcode_full: "XX1 1TG",
owning_organisation: organisation
)
end
before do
FactoryBot.create(:case_log,
:in_progress,
postcode_full: case_log.postcode_full,
owning_organisation: organisation
)
end
it "dowloads logs matching both csv and filter logs" do
get "/logs?status[]=completed&search=#{case_log.postcode_full}", headers:, params: {}
csv = CSV.parse(response.body)
expect(csv.count).to eq(2)
end
end end
end end

Loading…
Cancel
Save