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}'