From 053b9b1c68f5ee18dca778cb0f7cbcfca1806d6e Mon Sep 17 00:00:00 2001 From: Laurynas Butkus Date: Wed, 19 Jul 2023 19:32:40 +0300 Subject: [PATCH] Handle multiple file params --- lib/convert_api/task.rb | 8 ++++---- spec/convert_api/task_spec.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/lib/convert_api/task.rb b/lib/convert_api/task.rb index b611067..39194d4 100644 --- a/lib/convert_api/task.rb +++ b/lib/convert_api/task.rb @@ -33,10 +33,10 @@ def normalize_params(params) result = {} symbolize_keys(params).each do |key, value| - case key - when :File - result[:File] = FileParam.build(value) - when :Files + case + when key != :StoreFile && key.to_s.end_with?('File') + result[key] = FileParam.build(value) + when key == :Files result[:Files] = files_batch(value) else result[key] = value diff --git a/spec/convert_api/task_spec.rb b/spec/convert_api/task_spec.rb index c68a488..8af9197 100644 --- a/spec/convert_api/task_spec.rb +++ b/spec/convert_api/task_spec.rb @@ -27,4 +27,31 @@ expect(subject).to be_instance_of(ConvertApi::Result) end end + + context 'when file is instance of ResultFile' do + let(:file) { ConvertApi::ResultFile.new('Url' => 'testurl') } + let(:expected_params) { hash_including(File: 'testurl') } + + it 'uses file url' do + expect(ConvertApi.client).to( + receive(:post).with('convert/txt/to/pdf', expected_params, instance_of(Hash)).and_return(result) + ) + + expect(subject).to be_instance_of(ConvertApi::Result) + end + end + + context 'when multiple file params' do + let(:file) { ConvertApi::ResultFile.new('Url' => 'testurl') } + let(:params) { { File: file, CompareFile: file } } + let(:expected_params) { hash_including(File: 'testurl', CompareFile: 'testurl') } + + it 'uses multiple file urls' do + expect(ConvertApi.client).to( + receive(:post).with('convert/txt/to/pdf', expected_params, instance_of(Hash)).and_return(result) + ) + + expect(subject).to be_instance_of(ConvertApi::Result) + end + end end