From ac7e20569780035da58c00593c711ad9afdeffb3 Mon Sep 17 00:00:00 2001 From: Yang Yang Date: Wed, 4 Mar 2020 16:43:03 -0500 Subject: [PATCH] Raise error on empty paged responses --- lib/vbms/service/paged_documents.rb | 3 +++ spec/service/paged_documents_spec.rb | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/lib/vbms/service/paged_documents.rb b/lib/vbms/service/paged_documents.rb index 30d1936..d2253b9 100644 --- a/lib/vbms/service/paged_documents.rb +++ b/lib/vbms/service/paged_documents.rb @@ -11,6 +11,9 @@ def call(file_number:) req = next_request(file_number, 0) first_page = client.send_request(req) + # interpret a first page with no sections (and no doc count) as equivalent to zero pages. + raise ClientError.new("No sections found in first page") if first_page.empty? + # response will always be an array. get pagination from the first section. (documents << first_page.map { |section| section[:documents] }).flatten! pagination = first_page.first[:paging] diff --git a/spec/service/paged_documents_spec.rb b/spec/service/paged_documents_spec.rb index fe725ad..87e7919 100644 --- a/spec/service/paged_documents_spec.rb +++ b/spec/service/paged_documents_spec.rb @@ -81,5 +81,12 @@ def next_response expect(r[:paging][:@total_result_count]).to eq total_docs end end + + context "when the first page contains no sections" do + it "raises a ClientError" do + allow(client).to receive(:send_request).and_return [] + expect { subject.call(file_number: file_number) }.to raise_error(VBMS::ClientError) + end + end end end