From a220f69e58b3431e5de459e32bafeea7f720b249 Mon Sep 17 00:00:00 2001 From: Eric Jensen Date: Sun, 26 Mar 2023 14:36:35 -0400 Subject: [PATCH] dont crash if suitetalk returns empty (#574) * dont crash if suitetalk returns empty * test for empty search_row_list as well --- lib/netsuite/support/search_result.rb | 3 ++- spec/netsuite/support/search_result_spec.rb | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/netsuite/support/search_result.rb b/lib/netsuite/support/search_result.rb index 2cd936c5..2b7bd654 100644 --- a/lib/netsuite/support/search_result.rb +++ b/lib/netsuite/support/search_result.rb @@ -48,7 +48,8 @@ def initialize(response, result_class, credentials) end elsif response.body.has_key? :search_row_list # advanced search results - record_list = response.body[:search_row_list][:search_row] + record_list = response.body[:search_row_list] + record_list = record_list ? record_list[:search_row] : [] record_list = [record_list] unless record_list.is_a?(Array) record_list.each do |record| diff --git a/spec/netsuite/support/search_result_spec.rb b/spec/netsuite/support/search_result_spec.rb index 8ef2c32e..de27847d 100644 --- a/spec/netsuite/support/search_result_spec.rb +++ b/spec/netsuite/support/search_result_spec.rb @@ -22,6 +22,23 @@ results = described_class.new(response, NetSuite::Actions::Search, {}).results expect(results).to eq [] end + + it 'returns empty search_row_list' do + response_body = { + :status => {:@is_success=>"true"}, + :total_records => "242258", + :page_size => "10", + :total_pages => "24226", + :page_index => "99", + :search_id => "WEBSERVICES_4132604_SB1_051620191060155623420663266_336cbf12", + :search_row_list => nil, + :"@xmlns:platform_core" => "urn:core_2016_2.platform.webservices.netsuite.com" + } + response = NetSuite::Response.new(body: response_body) + + results = described_class.new(response, NetSuite::Actions::Search, {}).results + expect(results).to eq [] + end end it 'handles a recordList with a single element' do