tray-checkout 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +28 -0
- data/lib/tray/checkout/account.rb +14 -0
- data/lib/tray/checkout/account_response_parser.rb +70 -0
- data/lib/tray/checkout/{base_transaction.rb → base_service.rb} +1 -1
- data/lib/tray/checkout/{transaction_params_parser.rb → params_parser.rb} +1 -1
- data/lib/tray/checkout/parser.rb +4 -4
- data/lib/tray/checkout/response.rb +3 -0
- data/lib/tray/checkout/response_parser.rb +48 -105
- data/lib/tray/checkout/temp_transaction.rb +2 -2
- data/lib/tray/checkout/transaction.rb +2 -2
- data/lib/tray/checkout/transaction_response_parser.rb +76 -0
- data/lib/tray/checkout/version.rb +1 -1
- data/lib/tray-checkout.rb +5 -2
- data/spec/support/mock_request.rb +2 -1
- data/spec/support/responses/get_account_info.xml +23 -0
- data/spec/support/vcr/model/invalid_token.yml +72 -0
- data/spec/support/vcr/model/valid_token.yml +59 -0
- data/spec/tray/checkout/account_response_parser_spec.rb +70 -0
- data/spec/tray/checkout/account_spec.rb +50 -0
- data/spec/tray/checkout/params_parser_spec.rb +190 -0
- data/spec/tray/checkout/parser_spec.rb +8 -8
- data/spec/tray/checkout/response_parser_spec.rb +18 -155
- data/spec/tray/checkout/transaction_response_parser_spec.rb +183 -0
- data/spec/tray/checkout/transaction_spec.rb +6 -1
- metadata +22 -7
- data/spec/tray/checkout/transaction_params_parser_spec.rb +0 -152
| @@ -0,0 +1,70 @@ | |
| 1 | 
            +
            # encoding: UTF-8
         | 
| 2 | 
            +
            require 'spec_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Tray::Checkout::AccountResponseParser do
         | 
| 5 | 
            +
              describe "#parse" do
         | 
| 6 | 
            +
                context "with success response from get_info" do
         | 
| 7 | 
            +
                  let(:xml) { body_for :get_account_info }
         | 
| 8 | 
            +
                  let(:parser) { Tray::Checkout::AccountResponseParser.new(xml) }
         | 
| 9 | 
            +
                  let(:response) { parser.parse }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  context "returns people" do
         | 
| 12 | 
            +
                    {
         | 
| 13 | 
            +
                      contact_primary: "08000059230",
         | 
| 14 | 
            +
                      name: "Vendedor Loja Modelo",
         | 
| 15 | 
            +
                      trade_name: "Loja Modelo",
         | 
| 16 | 
            +
                      email: "lojamodelo@tray.com.br",
         | 
| 17 | 
            +
                      url_logo: nil,
         | 
| 18 | 
            +
                      css_url: "http://default.com/default.css"
         | 
| 19 | 
            +
                    }.each do |param, value|
         | 
| 20 | 
            +
                      it param do
         | 
| 21 | 
            +
                        response.people[param].should == value
         | 
| 22 | 
            +
                      end
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  context "returns service_contact" do
         | 
| 27 | 
            +
                    {
         | 
| 28 | 
            +
                      service_phone: "(14)3412-1377",
         | 
| 29 | 
            +
                      email_service: "lojamodelo@tray.com.br",
         | 
| 30 | 
            +
                      service_phone_status: "true",
         | 
| 31 | 
            +
                      email_service_status: "true"
         | 
| 32 | 
            +
                    }.each do |param, value|
         | 
| 33 | 
            +
                      it param do
         | 
| 34 | 
            +
                        response.service_contact[param].should == value
         | 
| 35 | 
            +
                      end
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  context "returns seconds_redirect" do
         | 
| 40 | 
            +
                    it 'returns the seconds_redirect parameter' do
         | 
| 41 | 
            +
                      response.seconds_redirect.should be_nil
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                context "with error response" do
         | 
| 47 | 
            +
                  let(:xml) { body_for :get_failure_not_found }
         | 
| 48 | 
            +
                  let(:parser) { Tray::Checkout::ResponseParser.new(xml) }
         | 
| 49 | 
            +
                  let(:response) { parser.parse  }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                  [:people, :service_contact, :seconds_redirect].each do |info|
         | 
| 52 | 
            +
                    it "returns nil #{info}" do
         | 
| 53 | 
            +
                      response.send(info).should be_nil
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                context "with validation error response" do
         | 
| 59 | 
            +
                  let(:xml) { body_for :create_failure_validation_errors }
         | 
| 60 | 
            +
                  let(:parser) { Tray::Checkout::ResponseParser.new(xml) }
         | 
| 61 | 
            +
                  let(:response) { parser.parse  }
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  [:people, :service_contact, :seconds_redirect].each do |info|
         | 
| 64 | 
            +
                    it "returns nil #{info}" do
         | 
| 65 | 
            +
                      response.send(info).should be_nil
         | 
| 66 | 
            +
                    end
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
            end
         | 
| @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            # encoding: UTF-8
         | 
| 2 | 
            +
            require 'spec_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Tray::Checkout::Account do
         | 
| 5 | 
            +
              let(:token_account) { '8bfe5ddcb77207b' }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              before :all do
         | 
| 8 | 
            +
                Tray::Checkout.environment = :sandbox
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              after :all do
         | 
| 12 | 
            +
                Tray::Checkout.environment = :production
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              describe "#get_by_token" do
         | 
| 16 | 
            +
                let(:account) { Tray::Checkout::Account.new }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                context 'when token account is valid/exists' do
         | 
| 19 | 
            +
                  before do
         | 
| 20 | 
            +
                    VCR.use_cassette 'model/valid_token' do
         | 
| 21 | 
            +
                      @response = account.get_by_token(token_account)
         | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  it 'response returns true' do
         | 
| 26 | 
            +
                    @response.success?.should be_true
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  it 'response has name attribute' do
         | 
| 30 | 
            +
                    @response.people[:name].should == 'Vendedor Loja Modelo '
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  it 'response has service_contact attribute' do
         | 
| 34 | 
            +
                    @response.service_contact.should_not be_blank
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                context "when token account is not valid/doesn't exists" do
         | 
| 39 | 
            +
                  before do
         | 
| 40 | 
            +
                    VCR.use_cassette 'model/invalid_token' do
         | 
| 41 | 
            +
                      @response = account.get_by_token("9q8w7e6r5t")
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  it 'response returns false' do
         | 
| 46 | 
            +
                    @response.success?.should be_false
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
            end
         | 
| @@ -0,0 +1,190 @@ | |
| 1 | 
            +
            # encoding: UTF-8
         | 
| 2 | 
            +
            require 'spec_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Tray::Checkout::ParamsParser do
         | 
| 5 | 
            +
              context 'transaction' do
         | 
| 6 | 
            +
                let :params do
         | 
| 7 | 
            +
                  {
         | 
| 8 | 
            +
                    token_account: "949u5uu9ef36f7u",
         | 
| 9 | 
            +
                    customer: {
         | 
| 10 | 
            +
                      name: "Pedro Bonamides",
         | 
| 11 | 
            +
                      cpf: "18565842673",
         | 
| 12 | 
            +
                      email: "pedro@bo.com.br",
         | 
| 13 | 
            +
                      sex: :male,
         | 
| 14 | 
            +
                      marital_status: :single,
         | 
| 15 | 
            +
                      contacts: [
         | 
| 16 | 
            +
                        { type: :home,   number: "1142360873"  },
         | 
| 17 | 
            +
                        { type: :mobile, number: "11987654321" },
         | 
| 18 | 
            +
                        { type: :work,   number: "1134567890"  }
         | 
| 19 | 
            +
                      ],
         | 
| 20 | 
            +
                      addresses: [
         | 
| 21 | 
            +
                        { type: :billing,
         | 
| 22 | 
            +
                          street: "Avenida Pedro Alvares Cabral",
         | 
| 23 | 
            +
                          number: "123",
         | 
| 24 | 
            +
                          neighborhood: "Parque Ibirapuera",
         | 
| 25 | 
            +
                          postal_code: "04094050",
         | 
| 26 | 
            +
                          city: "São Paulo",
         | 
| 27 | 
            +
                          state: "SP"
         | 
| 28 | 
            +
                        },
         | 
| 29 | 
            +
                        { type: :delivery,
         | 
| 30 | 
            +
                          street: "Avenida Pedro Alvares Cabral",
         | 
| 31 | 
            +
                          number: "123",
         | 
| 32 | 
            +
                          neighborhood: "Parque Ibirapuera",
         | 
| 33 | 
            +
                          postal_code: "04094050",
         | 
| 34 | 
            +
                          city: "São Paulo",
         | 
| 35 | 
            +
                          state: "SP"
         | 
| 36 | 
            +
                        }
         | 
| 37 | 
            +
                      ]
         | 
| 38 | 
            +
                    },
         | 
| 39 | 
            +
                    transaction: {
         | 
| 40 | 
            +
                      order_number: "R1245",
         | 
| 41 | 
            +
                      shipping_type: "Sedex",
         | 
| 42 | 
            +
                      shipping_price: 13.94,
         | 
| 43 | 
            +
                      url_notification: "http://prodis.blog.br/tray_notification",
         | 
| 44 | 
            +
                      products: [
         | 
| 45 | 
            +
                        { code: "LOGO-8278",
         | 
| 46 | 
            +
                          quantity: 2,
         | 
| 47 | 
            +
                          price_unit: 100.99,
         | 
| 48 | 
            +
                          description: "Logo Prodis"
         | 
| 49 | 
            +
                        },
         | 
| 50 | 
            +
                        { code: "877",
         | 
| 51 | 
            +
                          quantity: 1,
         | 
| 52 | 
            +
                          price_unit: 10.00,
         | 
| 53 | 
            +
                          description: "Outro produto"
         | 
| 54 | 
            +
                        }
         | 
| 55 | 
            +
                      ]
         | 
| 56 | 
            +
                    },
         | 
| 57 | 
            +
                    payment: {
         | 
| 58 | 
            +
                      method: :mastercard,
         | 
| 59 | 
            +
                      split: 3,
         | 
| 60 | 
            +
                      card: {
         | 
| 61 | 
            +
                        name: "ZEFINHA NOCEGA",
         | 
| 62 | 
            +
                        number: "5105105105105100",
         | 
| 63 | 
            +
                        expdate_month: "09",
         | 
| 64 | 
            +
                        expdate_year: "2015",
         | 
| 65 | 
            +
                        cvv: "123"
         | 
| 66 | 
            +
                      }
         | 
| 67 | 
            +
                    }
         | 
| 68 | 
            +
                  }
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                let(:parser) { Tray::Checkout::ParamsParser.new(params) }
         | 
| 72 | 
            +
                let(:response_params) { parser.parse }
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                describe "#parse" do
         | 
| 75 | 
            +
                  it "sets customer gender expect API value" do
         | 
| 76 | 
            +
                    response_params[:customer][:gender].should == "M"
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                  it "sets customer relationship expect API value" do
         | 
| 80 | 
            +
                    response_params[:customer][:relationship].should == "S"
         | 
| 81 | 
            +
                  end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                  it "sets customer contact type expect API value" do
         | 
| 84 | 
            +
                    response_params[:customer][:contacts][0][:type_contact].should == "H"
         | 
| 85 | 
            +
                    response_params[:customer][:contacts][1][:type_contact].should == "M"
         | 
| 86 | 
            +
                    response_params[:customer][:contacts][2][:type_contact].should == "W"
         | 
| 87 | 
            +
                  end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                  it "sets customer contact number expect API value" do
         | 
| 90 | 
            +
                    response_params[:customer][:contacts][0][:number_contact].should == "1142360873"
         | 
| 91 | 
            +
                    response_params[:customer][:contacts][1][:number_contact].should == "11987654321"
         | 
| 92 | 
            +
                    response_params[:customer][:contacts][2][:number_contact].should == "1134567890"
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                  it "sets customer address type expect API value" do
         | 
| 96 | 
            +
                    response_params[:customer][:addresses][0][:type_address].should == "B"
         | 
| 97 | 
            +
                    response_params[:customer][:addresses][1][:type_address].should == "D"
         | 
| 98 | 
            +
                  end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                  it "sets payment method ID expect API value" do
         | 
| 101 | 
            +
                    response_params[:payment][:payment_method_id].should == 4
         | 
| 102 | 
            +
                  end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                  { card_name: "ZEFINHA NOCEGA",
         | 
| 105 | 
            +
                    card_number: "5105105105105100",
         | 
| 106 | 
            +
                    card_expdate_month: "09",
         | 
| 107 | 
            +
                    card_expdate_year: "2015",
         | 
| 108 | 
            +
                    card_cvv: "123"
         | 
| 109 | 
            +
                  }.each do |param, value|
         | 
| 110 | 
            +
                    it "sets payment #{param}" do
         | 
| 111 | 
            +
                      response_params[:payment][param].should == value
         | 
| 112 | 
            +
                    end
         | 
| 113 | 
            +
                  end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                  it "sets products as expect API data structure" do
         | 
| 116 | 
            +
                    response_params[:transaction_product][0][:code].should == "LOGO-8278"
         | 
| 117 | 
            +
                    response_params[:transaction_product][0][:quantity].should == 2
         | 
| 118 | 
            +
                    response_params[:transaction_product][0][:price_unit].should == 100.99
         | 
| 119 | 
            +
                    response_params[:transaction_product][0][:description].should == "Logo Prodis"
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                    response_params[:transaction_product][1][:code].should == "877"
         | 
| 122 | 
            +
                    response_params[:transaction_product][1][:quantity].should == 1
         | 
| 123 | 
            +
                    response_params[:transaction_product][1][:price_unit].should == 10.00
         | 
| 124 | 
            +
                    response_params[:transaction_product][1][:description].should == "Outro produto"
         | 
| 125 | 
            +
                  end
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                  it "keeps token account supplied in params" do
         | 
| 128 | 
            +
                    response_params[:token_account].should == params[:token_account]
         | 
| 129 | 
            +
                  end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                  context "when sets token account in configuration" do
         | 
| 132 | 
            +
                    around do |example|
         | 
| 133 | 
            +
                      Tray::Checkout.configure { |config| config.token_account = "1q2w3e4r5t6y7u8" }
         | 
| 134 | 
            +
                      example.run
         | 
| 135 | 
            +
                      Tray::Checkout.configure { |config| config.token_account = nil }
         | 
| 136 | 
            +
                    end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                    context "and token account is supplied in params" do
         | 
| 139 | 
            +
                      it "keeps token account supplied in params" do
         | 
| 140 | 
            +
                        response_params[:token_account].should == params[:token_account]
         | 
| 141 | 
            +
                      end
         | 
| 142 | 
            +
                    end
         | 
| 143 | 
            +
             | 
| 144 | 
            +
                    context "and token account is not supplied in params" do
         | 
| 145 | 
            +
                      it "uses token account from configuration" do
         | 
| 146 | 
            +
                        params.delete(:token_account)
         | 
| 147 | 
            +
                        response_params = Tray::Checkout::ParamsParser.new(params).parse
         | 
| 148 | 
            +
                        response_params[:token_account].should == "1q2w3e4r5t6y7u8"
         | 
| 149 | 
            +
                      end
         | 
| 150 | 
            +
                    end
         | 
| 151 | 
            +
                  end
         | 
| 152 | 
            +
                end
         | 
| 153 | 
            +
              end
         | 
| 154 | 
            +
             | 
| 155 | 
            +
              context 'account' do
         | 
| 156 | 
            +
                let :params do
         | 
| 157 | 
            +
                  {
         | 
| 158 | 
            +
                    contact_primary: "08000059230",
         | 
| 159 | 
            +
                    name: "Vendedor Loja Modelo",
         | 
| 160 | 
            +
                    trade_name: "Loja Modelo",
         | 
| 161 | 
            +
                    email: "lojamodelo@tray.com.br",
         | 
| 162 | 
            +
                    url_logo: nil,
         | 
| 163 | 
            +
                    css_url: "http://default.com/default.css",
         | 
| 164 | 
            +
                    service_contact: {
         | 
| 165 | 
            +
                      service_phone: "(14)3412-1377",
         | 
| 166 | 
            +
                      email_service: "lojamodelo@tray.com.br",
         | 
| 167 | 
            +
                      service_phone_status: "true",
         | 
| 168 | 
            +
                      email_service_status: "true"
         | 
| 169 | 
            +
                    },
         | 
| 170 | 
            +
                    seconds_redirect: nil
         | 
| 171 | 
            +
                  }
         | 
| 172 | 
            +
                end
         | 
| 173 | 
            +
             | 
| 174 | 
            +
                let(:parser) { Tray::Checkout::ParamsParser.new(params) }
         | 
| 175 | 
            +
                let(:account_params) { parser.parse }
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                describe "#parse" do
         | 
| 178 | 
            +
                  it "sets service_contact expect API value" do
         | 
| 179 | 
            +
                    account_params[:service_contact][:service_phone].should == "(14)3412-1377"
         | 
| 180 | 
            +
                    account_params[:service_contact][:email_service].should == "lojamodelo@tray.com.br"
         | 
| 181 | 
            +
                    account_params[:service_contact][:service_phone_status].should == "true"
         | 
| 182 | 
            +
                    account_params[:service_contact][:email_service_status].should == "true"
         | 
| 183 | 
            +
                  end
         | 
| 184 | 
            +
             | 
| 185 | 
            +
                  it "sets seconds_redirect expect API value" do
         | 
| 186 | 
            +
                    account_params[:seconds_redirect].should be_nil
         | 
| 187 | 
            +
                  end
         | 
| 188 | 
            +
                end
         | 
| 189 | 
            +
              end
         | 
| 190 | 
            +
            end
         | 
| @@ -23,30 +23,30 @@ describe Tray::Checkout::Parser do | |
| 23 23 | 
             
                end
         | 
| 24 24 | 
             
              end
         | 
| 25 25 |  | 
| 26 | 
            -
              describe "# | 
| 26 | 
            +
              describe "#response_params" do
         | 
| 27 27 | 
             
                before :each do
         | 
| 28 28 | 
             
                  @params = {
         | 
| 29 29 | 
             
                    token_account: "949u5uu9ef36f7u",
         | 
| 30 30 | 
             
                    customer: { name: "Pedro Bonamides", sex: :male },
         | 
| 31 31 | 
             
                    payment: { payment_method: :boleto_bancario }
         | 
| 32 32 | 
             
                  }
         | 
| 33 | 
            -
                  @ | 
| 33 | 
            +
                  @response_params = {
         | 
| 34 34 | 
             
                    token_account: "949u5uu9ef36f7u",
         | 
| 35 35 | 
             
                    customer: { name: "Pedro Bonamides", sex: :male, gender: "M" },
         | 
| 36 36 | 
             
                    payment: { payment_method: :boleto, payment_method_id: "6" }
         | 
| 37 37 | 
             
                  }
         | 
| 38 | 
            -
                  @ | 
| 39 | 
            -
                  Tray::Checkout:: | 
| 38 | 
            +
                  @params_parser = Tray::Checkout::ParamsParser.new(@params)
         | 
| 39 | 
            +
                  Tray::Checkout::ParamsParser.stub(:new).and_return(@params_parser)
         | 
| 40 40 | 
             
                end
         | 
| 41 41 |  | 
| 42 42 | 
             
                it "creates transaction params parser" do
         | 
| 43 | 
            -
                  Tray::Checkout:: | 
| 44 | 
            -
                  parser. | 
| 43 | 
            +
                  Tray::Checkout::ParamsParser.should_receive(:new).with(@params)
         | 
| 44 | 
            +
                  parser.response_params(@params)
         | 
| 45 45 | 
             
                end
         | 
| 46 46 |  | 
| 47 47 | 
             
                it "parses params" do
         | 
| 48 | 
            -
                  @ | 
| 49 | 
            -
                  parser. | 
| 48 | 
            +
                  @params_parser.should_receive(:parse).and_return(@response_params)
         | 
| 49 | 
            +
                  parser.response_params(@params).should == @response_params
         | 
| 50 50 | 
             
                end
         | 
| 51 51 | 
             
              end
         | 
| 52 52 | 
             
            end
         | 
| @@ -3,53 +3,6 @@ require 'spec_helper' | |
| 3 3 |  | 
| 4 4 | 
             
            describe Tray::Checkout::ResponseParser do
         | 
| 5 5 | 
             
              describe "#parse" do
         | 
| 6 | 
            -
                context "with success response from temp_transaction" do
         | 
| 7 | 
            -
                  let(:xml) { body_for :create_temp_transaction_with_token }
         | 
| 8 | 
            -
                  let(:parser) { Tray::Checkout::ResponseParser.new(xml) }
         | 
| 9 | 
            -
                  let(:response) { parser.parse }
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  it "returns success" do
         | 
| 12 | 
            -
                    response.success?.should be_true
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                  context "returns transaction" do
         | 
| 16 | 
            -
                    {
         | 
| 17 | 
            -
                      token: "a906bf32cb59060dfc90769524f99d5a",
         | 
| 18 | 
            -
                      url_car: "\n\t\t\thttp://checkout.sandbox.tray.com.br/payment/car/v1/\n\t\t"
         | 
| 19 | 
            -
                    }.each do |param, value|
         | 
| 20 | 
            -
                      it param do
         | 
| 21 | 
            -
                        response.transaction[param].should == value
         | 
| 22 | 
            -
                      end
         | 
| 23 | 
            -
                    end
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  context "returns products" do
         | 
| 27 | 
            -
                    {
         | 
| 28 | 
            -
                      code: "teste",
         | 
| 29 | 
            -
                      img: "\n\t\t\t\t\thttp://catnross.com/wp-content/uploads/2011/08/product1.jpg\n\t\t\t\t",
         | 
| 30 | 
            -
                      sku_code: nil,
         | 
| 31 | 
            -
                      description: "produto teste",
         | 
| 32 | 
            -
                      extra: nil,
         | 
| 33 | 
            -
                      id: 4502,
         | 
| 34 | 
            -
                      type_product: nil
         | 
| 35 | 
            -
                    }.each do |param, value|
         | 
| 36 | 
            -
                      it param do
         | 
| 37 | 
            -
                        response.transaction[:products].first[param].should == value
         | 
| 38 | 
            -
                      end
         | 
| 39 | 
            -
                    end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                    {
         | 
| 42 | 
            -
                      price_unit: "10.0",
         | 
| 43 | 
            -
                      quantity: "5.0",
         | 
| 44 | 
            -
                      weight: "300.0"
         | 
| 45 | 
            -
                    }.each do |param, value|
         | 
| 46 | 
            -
                      it param do
         | 
| 47 | 
            -
                        response.transaction[:products].first[param].to_s.should == value
         | 
| 48 | 
            -
                      end
         | 
| 49 | 
            -
                    end
         | 
| 50 | 
            -
                  end
         | 
| 51 | 
            -
                end
         | 
| 52 | 
            -
             | 
| 53 6 | 
             
                context "with success response" do
         | 
| 54 7 | 
             
                  let(:xml) { body_for :get_success_boleto }
         | 
| 55 8 | 
             
                  let(:parser) { Tray::Checkout::ResponseParser.new(xml) }
         | 
| @@ -58,102 +11,6 @@ describe Tray::Checkout::ResponseParser do | |
| 58 11 | 
             
                  it "returns success" do
         | 
| 59 12 | 
             
                    response.success?.should be_true
         | 
| 60 13 | 
             
                  end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                  it "returns empty errors" do
         | 
| 63 | 
            -
                    response.errors.should be_empty
         | 
| 64 | 
            -
                  end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                  context "returns transaction" do
         | 
| 67 | 
            -
                    {
         | 
| 68 | 
            -
                      order_number: "1234567",
         | 
| 69 | 
            -
                      free: "Texto Interno",
         | 
| 70 | 
            -
                      status_name: "Em Recupera\\xC3\\xA7\\xC3\\xA3o",
         | 
| 71 | 
            -
                      status: :recovering,
         | 
| 72 | 
            -
                      id: 3856,
         | 
| 73 | 
            -
                      token: "4761d2e198ba6b60b45900a4d95482d5"
         | 
| 74 | 
            -
                    }.each do |param, value|
         | 
| 75 | 
            -
                      it param do
         | 
| 76 | 
            -
                        response.transaction[param].should == value
         | 
| 77 | 
            -
                      end
         | 
| 78 | 
            -
                    end
         | 
| 79 | 
            -
                  end
         | 
| 80 | 
            -
             | 
| 81 | 
            -
                  context "returns payment" do
         | 
| 82 | 
            -
                    {
         | 
| 83 | 
            -
                      tid: nil,
         | 
| 84 | 
            -
                      split: 1,
         | 
| 85 | 
            -
                      linha_digitavel: "34191.76007 00536.260144 50565.600009 6 58630000219999",
         | 
| 86 | 
            -
                      method: :boleto,
         | 
| 87 | 
            -
                      method_name: "Boleto Bancario"
         | 
| 88 | 
            -
                    }.each do |param, value|
         | 
| 89 | 
            -
                      it param do
         | 
| 90 | 
            -
                        response.payment[param].should == value
         | 
| 91 | 
            -
                      end
         | 
| 92 | 
            -
                    end
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                    {
         | 
| 95 | 
            -
                      price_original: '2199.99',
         | 
| 96 | 
            -
                      price: '2199.99'
         | 
| 97 | 
            -
                    }.each do |param, value|
         | 
| 98 | 
            -
                      it param do
         | 
| 99 | 
            -
                        response.payment[param].to_s.should == value
         | 
| 100 | 
            -
                      end
         | 
| 101 | 
            -
                    end
         | 
| 102 | 
            -
                  end
         | 
| 103 | 
            -
             | 
| 104 | 
            -
                  context "returns customer" do
         | 
| 105 | 
            -
                    {
         | 
| 106 | 
            -
                      name: "Nome do Cliente",
         | 
| 107 | 
            -
                      cpf: "98489882380",
         | 
| 108 | 
            -
                      email: "emaildo@cliente.com.br",
         | 
| 109 | 
            -
                      company_name: nil,
         | 
| 110 | 
            -
                      trade_name: nil,
         | 
| 111 | 
            -
                      cnpj: nil
         | 
| 112 | 
            -
                    }.each do |param, value|
         | 
| 113 | 
            -
                      it param do
         | 
| 114 | 
            -
                        response.customer[param].should == value
         | 
| 115 | 
            -
                      end
         | 
| 116 | 
            -
                    end
         | 
| 117 | 
            -
             | 
| 118 | 
            -
                    context "address with" do
         | 
| 119 | 
            -
                      {
         | 
| 120 | 
            -
                        street: "Av Paulista",
         | 
| 121 | 
            -
                        number: "1001",
         | 
| 122 | 
            -
                        neighborhood: "Centro",
         | 
| 123 | 
            -
                        postal_code: "04001001",
         | 
| 124 | 
            -
                        completion: nil,
         | 
| 125 | 
            -
                        city: "S\\xC3\\xA3o Paulo",
         | 
| 126 | 
            -
                        state: "SP"
         | 
| 127 | 
            -
                      }.each do |param, value|
         | 
| 128 | 
            -
                        it param do
         | 
| 129 | 
            -
                          response.customer[:addresses].first[param].should == value
         | 
| 130 | 
            -
                        end
         | 
| 131 | 
            -
                      end
         | 
| 132 | 
            -
                    end
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                    context "contacts with" do
         | 
| 135 | 
            -
                      [ {
         | 
| 136 | 
            -
                          number: "11998761234",
         | 
| 137 | 
            -
                          id: nil,
         | 
| 138 | 
            -
                          type: :mobile
         | 
| 139 | 
            -
                        }
         | 
| 140 | 
            -
                      ].each_with_index do |contacts, i|
         | 
| 141 | 
            -
                        contacts.each do |param, value|
         | 
| 142 | 
            -
                          it param do
         | 
| 143 | 
            -
                            response.customer[:contacts][i][param].should == value
         | 
| 144 | 
            -
                          end
         | 
| 145 | 
            -
                        end
         | 
| 146 | 
            -
                      end
         | 
| 147 | 
            -
                    end
         | 
| 148 | 
            -
             | 
| 149 | 
            -
                    context "without contacts" do
         | 
| 150 | 
            -
                      it "returns empty array" do
         | 
| 151 | 
            -
                        parser = Tray::Checkout::ResponseParser.new(body_for(:get_success_boleto_without_contacts))
         | 
| 152 | 
            -
                        response = parser.parse
         | 
| 153 | 
            -
                        response.customer[:contacts].should == []
         | 
| 154 | 
            -
                      end
         | 
| 155 | 
            -
                    end
         | 
| 156 | 
            -
                  end
         | 
| 157 14 | 
             
                end
         | 
| 158 15 |  | 
| 159 16 | 
             
                context "with error response" do
         | 
| @@ -165,12 +22,6 @@ describe Tray::Checkout::ResponseParser do | |
| 165 22 | 
             
                    response.success?.should be_false
         | 
| 166 23 | 
             
                  end
         | 
| 167 24 |  | 
| 168 | 
            -
                  [:transaction, :payment, :customer].each do |info|
         | 
| 169 | 
            -
                    it "returns nil #{info}" do
         | 
| 170 | 
            -
                      response.send(info).should be_nil
         | 
| 171 | 
            -
                    end
         | 
| 172 | 
            -
                  end
         | 
| 173 | 
            -
             | 
| 174 25 | 
             
                  context "returns error" do
         | 
| 175 26 | 
             
                    { code: "001001",
         | 
| 176 27 | 
             
                      message: "Token inválido ou não encontrado"
         | 
| @@ -191,12 +42,6 @@ describe Tray::Checkout::ResponseParser do | |
| 191 42 | 
             
                    response.success?.should be_false
         | 
| 192 43 | 
             
                  end
         | 
| 193 44 |  | 
| 194 | 
            -
                  [:transaction, :payment, :customer].each do |info|
         | 
| 195 | 
            -
                    it "returns nil #{info}" do
         | 
| 196 | 
            -
                      response.send(info).should be_nil
         | 
| 197 | 
            -
                    end
         | 
| 198 | 
            -
                  end
         | 
| 199 | 
            -
             | 
| 200 45 | 
             
                  context "returns error" do
         | 
| 201 46 | 
             
                    { code: "13",
         | 
| 202 47 | 
             
                      message: "Tipo de Contato não está incluído na lista"
         | 
| @@ -208,4 +53,22 @@ describe Tray::Checkout::ResponseParser do | |
| 208 53 | 
             
                  end
         | 
| 209 54 | 
             
                end
         | 
| 210 55 | 
             
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              describe("transaction?") do
         | 
| 58 | 
            +
                context "response is from a transaction" do
         | 
| 59 | 
            +
                  let(:xml) { body_for :get_success_boleto }
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  it "returns true" do
         | 
| 62 | 
            +
                    Tray::Checkout::ResponseParser.transaction?(xml).should be_true
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                context "response is not from a transaction" do
         | 
| 67 | 
            +
                  let(:xml) { body_for :get_account_info }
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  it "returns false" do
         | 
| 70 | 
            +
                    Tray::Checkout::ResponseParser.transaction?(xml).should be_false
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
              end
         | 
| 211 74 | 
             
            end
         |