From 40db04957c1e424d2f548756be3363c6f44b6903 Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Tue, 20 Mar 2018 11:57:32 -0600 Subject: [PATCH 1/6] Add document transfer from template endpoint --- lib/mifiel/document.rb | 17 +++++++++++++++++ spec/mifiel/document_spec.rb | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/lib/mifiel/document.rb b/lib/mifiel/document.rb index 12385f3..0e8234a 100644 --- a/lib/mifiel/document.rb +++ b/lib/mifiel/document.rb @@ -9,6 +9,7 @@ class Document < Mifiel::Base delete :delete, '/documents/:id' post :create_from_template, '/templates/:template_id/generate_document', timeout: 60 post :create_many_from_template, '/templates/:template_id/generate_documents', timeout: 60 + post :transfer, '/documents/:id/transfer', timeout: 60 # rubocop:disable Metrics/MethodLength, Metrics/AbcSize def self.create(args) @@ -71,5 +72,21 @@ def self.build_signatories(signatories) signatories.each_with_index { |s, i| sgries[i] = s } sgries end + + def self.transfer_from_template(args) + id = args[:id] + + payload = { + from: args[:from], + to: args[:to], + signatories: args[:signatories], + template_id: args[:template_id], + fields: args[:fields] + } + payload.reject! { |_k, v| v.nil? } + + response = Mifiel::Document.process_request("/documents/#{id}/transfer", :post, payload) + Mifiel::Document.new(JSON.parse(response)) + end end end diff --git a/spec/mifiel/document_spec.rb b/spec/mifiel/document_spec.rb index 2ebb44a..b8114bf 100644 --- a/spec/mifiel/document_spec.rb +++ b/spec/mifiel/document_spec.rb @@ -134,4 +134,27 @@ end end end + + describe '#transfer' do + context 'from template' do + let!(:template_id) { 'c6c29866-7fd6-4f77-9ecd-eae8bc3a772a' } + let!(:document) do + Mifiel::Document.transfer_from_template( + template_id: template_id, + fields: { + name: 'some' + }, + signatories: [{ + name: 'Signer', + email: 'signer@email.com' + }, { + name: 'Signer', + email: 'signer@email.com' + }] + ) + end + + it { expect(document).to be_a Mifiel::Document } + end + end end From 24ee42415a60ed0ed60f1e33c92495eb3e22562b Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Tue, 20 Mar 2018 12:05:20 -0600 Subject: [PATCH 2/6] Make sure the payload only contains the params we need --- lib/mifiel/document.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/mifiel/document.rb b/lib/mifiel/document.rb index 0e8234a..16920fb 100644 --- a/lib/mifiel/document.rb +++ b/lib/mifiel/document.rb @@ -81,7 +81,11 @@ def self.transfer_from_template(args) to: args[:to], signatories: args[:signatories], template_id: args[:template_id], - fields: args[:fields] + fields: args[:fields], + callback_url: args[:callback_url], + sign_callback_url: args[:sign_callback_url], + allow_business: args[:allow_business], + external_id: args[:external_id] } payload.reject! { |_k, v| v.nil? } From 4234b3823152a47e715982ba7d79871c2c2f4486 Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Tue, 20 Mar 2018 12:15:26 -0600 Subject: [PATCH 3/6] Update README and document_id param --- README.md | 23 +++++++++++++++++++++++ lib/mifiel/document.rb | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b0a33e4..7cdae52 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,29 @@ Document methods: ) ``` +- Transfer: + + Using a template + + ```ruby + args = { + template_id: '29f3cb01-744d-4eae-8718-213aec8a1678', + document_id: '29f3cb01-744d-4eae-8718-213aec8a1678', + fields: { + name: 'My Client Name', + date: 'Sep 27 2017' + }, + signatories: [{ + name: 'Some name', + email: 'some@email.com', + tax_id: 'AAA010101AAA' + }], + callback_url: 'https://www.example.com/webhook/url', + external_id: 'unique-id' + } + + document = Mifiel::Document.transfer_from_template(args) + ``` + - Save Document related files ```ruby diff --git a/lib/mifiel/document.rb b/lib/mifiel/document.rb index 16920fb..16a35b6 100644 --- a/lib/mifiel/document.rb +++ b/lib/mifiel/document.rb @@ -74,7 +74,7 @@ def self.build_signatories(signatories) end def self.transfer_from_template(args) - id = args[:id] + id = args[:document_id] payload = { from: args[:from], From cbc2a3fc0eee4331d93f9f8d7344773928bcd0fd Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Tue, 20 Mar 2018 12:30:17 -0600 Subject: [PATCH 4/6] Fix spec --- spec/mifiel/document_spec.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spec/mifiel/document_spec.rb b/spec/mifiel/document_spec.rb index b8114bf..551ec04 100644 --- a/spec/mifiel/document_spec.rb +++ b/spec/mifiel/document_spec.rb @@ -138,9 +138,12 @@ describe '#transfer' do context 'from template' do let!(:template_id) { 'c6c29866-7fd6-4f77-9ecd-eae8bc3a772a' } - let!(:document) do + let!(:document) { Mifiel::Document.all.first } + + let!(:template) do Mifiel::Document.transfer_from_template( template_id: template_id, + document_id: document.id, fields: { name: 'some' }, From 21e27c1743a9f29fcd282897a6fa10041017ad63 Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Tue, 20 Mar 2018 12:39:24 -0600 Subject: [PATCH 5/6] Add fake mifiel endpoint for transfer, disable rubocop --- lib/mifiel/document.rb | 2 ++ spec/support/fake_mifiel.rb | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/lib/mifiel/document.rb b/lib/mifiel/document.rb index 16a35b6..8940690 100644 --- a/lib/mifiel/document.rb +++ b/lib/mifiel/document.rb @@ -73,6 +73,7 @@ def self.build_signatories(signatories) sgries end + # rubocop:disable Metrics/MethodLength, Metrics/AbcSize def self.transfer_from_template(args) id = args[:document_id] @@ -92,5 +93,6 @@ def self.transfer_from_template(args) response = Mifiel::Document.process_request("/documents/#{id}/transfer", :post, payload) Mifiel::Document.new(JSON.parse(response)) end + # rubocop:enable Metrics/MethodLength, Metrics/AbcSize end end diff --git a/spec/support/fake_mifiel.rb b/spec/support/fake_mifiel.rb index 65b79a4..2c6da04 100644 --- a/spec/support/fake_mifiel.rb +++ b/spec/support/fake_mifiel.rb @@ -77,6 +77,7 @@ class FakeMifiel < Sinatra::Base id: params[:id] ).to_json end + get '/api/v1/documents/:id/file' do status 200 @@ -105,6 +106,14 @@ class FakeMifiel < Sinatra::Base { widget_id: '123bc', success: true }.to_json end + post '/api/v1/documents/:id/transfer' do + content_type :json + status 200 + document( + id: params[:id] + ).to_json + end + private def template(args = {}) From 240f553b7346feee82b3e715edfe793391aea894 Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Tue, 20 Mar 2018 12:43:32 -0600 Subject: [PATCH 6/6] Remove trailing space --- spec/support/fake_mifiel.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/support/fake_mifiel.rb b/spec/support/fake_mifiel.rb index 2c6da04..73b438a 100644 --- a/spec/support/fake_mifiel.rb +++ b/spec/support/fake_mifiel.rb @@ -77,7 +77,6 @@ class FakeMifiel < Sinatra::Base id: params[:id] ).to_json end - get '/api/v1/documents/:id/file' do status 200