From d3fdcb01f7d78b9a8efb2eafa092d4b7c789fbaa Mon Sep 17 00:00:00 2001 From: Alexander Glushkov Date: Wed, 31 Jan 2018 13:24:58 +0300 Subject: [PATCH] Add "cancel" order API call https://cloudpayments.ru/Docs/Api#cancelOrder --- lib/cloud_payments/namespaces/orders.rb | 4 ++++ spec/cloud_payments/namespaces/orders_spec.rb | 12 ++++++++++++ spec/fixtures/apis/orders/cancel/failed.yml | 6 ++++++ spec/fixtures/apis/orders/cancel/successful.yml | 6 ++++++ 4 files changed, 28 insertions(+) create mode 100644 spec/fixtures/apis/orders/cancel/failed.yml create mode 100644 spec/fixtures/apis/orders/cancel/successful.yml diff --git a/lib/cloud_payments/namespaces/orders.rb b/lib/cloud_payments/namespaces/orders.rb index 6cae29c..a70fce4 100644 --- a/lib/cloud_payments/namespaces/orders.rb +++ b/lib/cloud_payments/namespaces/orders.rb @@ -6,6 +6,10 @@ def create(attributes) response = request(:create, attributes) Order.new(response[:model]) end + + def cancel(order_id) + request(:cancel, id: order_id)[:success] + end end end end diff --git a/spec/cloud_payments/namespaces/orders_spec.rb b/spec/cloud_payments/namespaces/orders_spec.rb index c03a981..cd12adf 100644 --- a/spec/cloud_payments/namespaces/orders_spec.rb +++ b/spec/cloud_payments/namespaces/orders_spec.rb @@ -42,4 +42,16 @@ end end end + + describe '#cancel' do + context do + before{ stub_api_request('orders/cancel/successful').perform } + specify{ expect(subject.cancel('12345')).to be_truthy } + end + + context do + before{ stub_api_request('orders/cancel/failed').perform } + specify{ expect{ subject.cancel('12345') }.to raise_error(CloudPayments::Client::GatewayError, 'Error message') } + end + end end diff --git a/spec/fixtures/apis/orders/cancel/failed.yml b/spec/fixtures/apis/orders/cancel/failed.yml new file mode 100644 index 0000000..dca1e0e --- /dev/null +++ b/spec/fixtures/apis/orders/cancel/failed.yml @@ -0,0 +1,6 @@ +--- +:request: + :url: '/orders/cancel' + :body: '{"Id":"12345"}' +:response: + :body: '{"Success":false,"Message":"Error message"}' diff --git a/spec/fixtures/apis/orders/cancel/successful.yml b/spec/fixtures/apis/orders/cancel/successful.yml new file mode 100644 index 0000000..e0ccde4 --- /dev/null +++ b/spec/fixtures/apis/orders/cancel/successful.yml @@ -0,0 +1,6 @@ +--- +:request: + :url: '/orders/cancel' + :body: '{"Id":"12345"}' +:response: + :body: '{"Success":true,"Message":null}'