Sha256: 7f28823c0d2d0a72ce62d21c8df51e44cdcba3d879b442b7ac480fc8d6c09f81

Contents?: true

Size: 1004 Bytes

Versions: 2

Compression:

Stored size: 1004 Bytes

Contents

require "stubs/payment_gateway"

describe PaymentGateway do

  context "#purchase" do
    it "makes purchase with valid credit card" do
      response = subject.purchase 1000, valid_credit_card

      expect(response['success'][0]).to eq('true')
    end

    it "fails purchase with invalid credit card" do
      response = subject.purchase 1000, invalid_credit_card

      expect(response['success'][0]).to eq('false')
      expect(response['error_message'][0]).to eq('Unsupported Credit Card Type')
    end

    it "returns error response if amount is negative" do
      expect{subject.purchase(-1000, valid_credit_card)}.to raise_exception(Exception)
    end
  end

  private

  def credit_card_class
    Struct.new(:first_name, :last_name, :number, :card_type, :month, :year, :verification_value)
  end

  def valid_credit_card
    credit_card_class.new("John", "Appleseed", "4242424242424242", "VISA", 8, Time.now.year+1, "000")
  end

  def invalid_credit_card
    credit_card_class.new
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
webmock_method-1.2.5 spec/payment_gateway_spec.rb
webmock_method-1.2.4 spec/payment_gateway_spec.rb