test/razorpay/test_payment.rb in razorpay-2.4.1 vs test/razorpay/test_payment.rb in razorpay-3.0.0
- old
+ new
@@ -3,11 +3,14 @@
module Razorpay
# Tests for Razorpay::Payment
class RazorpayPaymentTest < Minitest::Test
def setup
@payment_id = 'fake_payment_id'
-
+ @downtime_id = 'fake_downtime_id'
+ @card_id = 'card_7EZLhWkDt05n7V'
+ @transfer_id = 'trf_J0FrZYPql4riDx'
+ @refund_id = 'fake_refund_id'
# Any request that ends with payments/payment_id
stub_get(%r{payments\/#{@payment_id}$}, 'fake_payment')
stub_get(/payments$/, 'payment_collection')
end
@@ -21,10 +24,115 @@
assert_equal @payment_id, payment.id, 'Payment IDs do not match'
assert_equal 500, payment.amount, 'Payment amount is accessible'
assert_equal 'card', payment.method, 'Payment method is accessible'
end
+ def test_payments_fetch_downtime
+ stub_get( %r{payments/downtimes$}, 'downtimes_collection')
+ payments = Razorpay::Payment.fetch_payment_downtime
+ assert_instance_of Razorpay::Collection, payments, 'Payments should be an array'
+ refute_empty payments.items, 'payments should be more than one'
+ end
+
+ def test_payments_fetch_downtime_by_id
+ stub_get( %r{payments/downtimes/#{@downtime_id}$}, 'fake_downtime')
+ payment = Razorpay::Payment.fetch_payment_downtime_by_id(@downtime_id)
+ assert_instance_of Razorpay::Entity, payment, 'Payment not an instance of Razorpay::Payment class'
+ assert_equal @downtime_id , payment.id
+ end
+
+ def test_payments_fetch_card_details
+ stub_get( %r{payments/#{@payment_id}/card$}, 'fake_card')
+ card = Razorpay::Payment.fetch_card_details(@payment_id)
+ assert_instance_of Razorpay::Card, card, 'Card not an instance of Razorpay::Card class'
+ assert_equal @card_id , card.id
+ end
+
+ def test_payments_fetch_multiple_refund_for_payment
+ stub_get( %r{payments/#{@payment_id}/refunds$}, 'refund_collection',{})
+ payments = Razorpay::Payment.fetch_multiple_refund(@payment_id,{})
+ assert_instance_of Razorpay::Collection, payments, 'Payment not an instance of Razorpay::Payment class'
+ assert !payments.items.empty?, 'payments should be more than one'
+ end
+
+ def test_payments_fetch_transfers
+ stub_get(%r{payments/#{@payment_id}/transfers$}, 'transfers_collection')
+ transfers = Razorpay::Payment.fetch(@payment_id).fetch_transfer
+ assert_instance_of Razorpay::Collection, transfers, 'Transfers should be an array'
+ assert !transfers.items.empty?, 'transfers should be more than one'
+ end
+
+ def test_payments_post_transfers
+ param_attr = {
+ "transfers": [
+ {
+ "account": "acc_CPRsN1LkFccllA",
+ "amount": 100,
+ "currency": "INR",
+ "notes": {
+ "name": "Gaurav Kumar",
+ "roll_no": "IEC2011025"
+ },
+ "linked_account_notes": [
+ "roll_no"
+ ],
+ "on_hold": true,
+ "on_hold_until": 1671222870
+ },
+ {
+ "account": "acc_CNo3jSI8OkFJJJ",
+ "amount": 100,
+ "currency": "INR",
+ "notes": {
+ "name": "Saurav Kumar",
+ "roll_no": "IEC2011026"
+ },
+ "linked_account_notes": [
+ "roll_no"
+ ],
+ "on_hold": false
+ }
+ ]
+ }
+
+ stub_post(%r{payments/#{@payment_id}/transfers$}, 'fake_transfer', param_attr.to_json)
+ transfer = Razorpay::Payment.fetch(@payment_id).transfer(param_attr.to_json)
+ assert_instance_of Razorpay::Transfer, transfer, 'Transfer not an instance of Razorpay::Transfer class'
+ assert transfer.on_hold
+ end
+
+ def test_payments_fetch_refunds
+ stub_get(%r{payments/#{@payment_id}/refunds/#{@refund_id}$}, 'fake_refund')
+ refund = Razorpay::Payment.fetch(@payment_id).fetch_refund(@refund_id)
+ assert_instance_of Razorpay::Refund, refund, 'Refund not an instance of Razorpay::Refund class'
+ assert_equal @refund_id, refund.id
+ end
+
+ def test_payment_create_recurring
+
+ payment_attr = {
+ "email": "gaurav.kumar@example.com",
+ "contact": "9123456789",
+ "amount": 1000,
+ "currency": "INR",
+ "order_id": "order_1Aa00000000002",
+ "customer_id": "cust_1Aa00000000001",
+ "token": "token_1Aa00000000001",
+ "recurring": "1",
+ "description": "Creating recurring payment for Gaurav Kumar",
+ "notes": {
+ "note_key 1": "Beam me up Scotty",
+ "note_key 2": "Tea. Earl Gray. Hot."
+ }
+ }
+
+ stub_post(%r{payments/create/recurring$}, 'fake_recurring', payment_attr.to_json)
+ payment = Razorpay::Payment.create_recurring_payment payment_attr.to_json
+ assert_equal 'pay_1Aa00000000001', payment.razorpay_payment_id
+
+ end
+
def test_all_payments
payments = Razorpay::Payment.all
assert_instance_of Razorpay::Collection, payments, 'Payments should be an array'
assert !payments.items.empty?, 'Payments should be more than one'
end
@@ -38,11 +146,11 @@
def test_payment_refund
stub_post(%r{payments/#{@payment_id}/refund$}, 'fake_refund', {})
refund = Razorpay::Payment.fetch(@payment_id).refund
assert_instance_of Razorpay::Refund, refund
- assert_equal refund.payment_id, @payment_id
+ assert_equal refund.payment_id, "pay_FFX5FdEYx8jPwA"
end
def test_payment_refund!
payment = Razorpay::Payment.fetch(@payment_id)
stub_get(%r{payments/#{@payment_id}$}, 'fake_refunded_payment')
@@ -54,30 +162,98 @@
def test_partial_refund
# For some reason, stub doesn't work if I pass it a hash of post body
stub_post(%r{payments/#{@payment_id}/refund$}, 'fake_refund', 'amount=2000')
refund = Razorpay::Payment.fetch(@payment_id).refund(amount: 2000)
assert_instance_of Razorpay::Refund, refund
- assert_equal refund.payment_id, @payment_id
+ assert_equal refund.payment_id, "pay_FFX5FdEYx8jPwA"
assert_equal refund.amount, 2000
end
def test_payment_capture
- stub_post(%r{payments/#{@payment_id}/capture$}, 'fake_captured_payment', 'amount=5100')
- payment = Razorpay::Payment.fetch(@payment_id)
- payment = payment.capture(amount: 5100)
+
+ para_attr = {
+ amount: 1000,
+ currency: 'INR'
+ }
+
+ stub_post(%r{payments/#{@payment_id}/capture$}, 'fake_captured_payment', para_attr.to_json)
+ payment = Razorpay::Payment.fetch(@payment_id).capture(para_attr.to_json)
assert_equal 'captured', payment.status
end
def test_payment_capture!
- stub_post(%r{payments/#{@payment_id}/capture$}, 'fake_captured_payment', 'amount=5100')
+ para_attr = {
+ amount: 1000,
+ currency: "INR"
+ }
+ stub_post(%r{payments/#{@payment_id}/capture$}, 'fake_captured_payment', para_attr.to_json)
payment = Razorpay::Payment.fetch(@payment_id)
- payment.capture!(amount: 5100)
+ payment.capture!(para_attr.to_json)
assert_equal 'captured', payment.status
end
def test_payment_capture_without_fetch
stub_post(%r{payments/#{@payment_id}/capture$}, 'fake_captured_payment', 'amount=5100')
payment = Razorpay::Payment.capture(@payment_id, amount: 5100)
assert_equal 'captured', payment.status
end
+
+ def test_otp_generate
+ payment_id = 'pay_FVmAstJWfsD3SO'
+ stub_post(%r{payments/#{payment_id}/otp_generate$}, 'fake_otp_generate', {})
+ payment = Razorpay::Payment.otp_generate(payment_id)
+ assert_equal payment_id, payment.razorpay_payment_id
+ end
+
+ def test_otp_submit
+ param_attr = {
+ otp: "123456"
+ }
+ stub_post(%r{payments/#{@payment_id}/otp/submit$}, 'fake_otp_submit', param_attr.to_json)
+ payment = Razorpay::Payment.fetch(@payment_id).otp_submit(param_attr.to_json)
+ assert_equal @payment_id, payment.razorpay_payment_id
+ end
+
+ def test_otp_resend
+ stub_post(%r{payments/#{@payment_id}/otp/resend$}, 'fake_otp_resend', {})
+ payment = Razorpay::Payment.fetch(@payment_id).otp_resend
+ assert_equal @payment_id, payment.razorpay_payment_id
+
+ def test_payment_edit
+
+ payment_attr = {
+ "notes": {
+ "notes_key_1": 'Beam me up Scotty.',
+ "notes_key_2": 'Engage'
+ }
+ }
+ stub_patch(%r{payments\/#{@payment_id}$}, 'fake_update_payment', payment_attr.to_json)
+ payment = Razorpay::Payment.fetch(@payment_id).edit(payment_attr.to_json)
+ assert_equal 'payment', payment.entity
+ assert_equal 'Beam me up Scotty.', payment.notes["notes_key_1"]
+ end
+
+ def test_payment_create_payment_json
+
+ payment_attr = {
+ amount: '100',
+ currency: 'INR',
+ email: 'gaurav.kumar@example.com',
+ contact: '9123456789',
+ order_id: 'order_EAkbvXiCJlwhHR',
+ method: 'card',
+ card: {
+ number: '4854980604708430',
+ cvv: '123',
+ expiry_month: '12',
+ expiry_year: '21',
+ name: 'Gaurav Kumar'
+ }
+ }
+
+ stub_post(%r{payments/create/json$}, 'create_json_payment',payment_attr.to_json)
+ payment = Razorpay::Payment.create_json_payment payment_attr.to_json
+ assert_equal 'pay_FVmAstJWfsD3SO', payment.razorpay_payment_id
+ end
+ end
end
end