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,183 @@ | |
| 1 | 
            +
            # encoding: UTF-8
         | 
| 2 | 
            +
            require 'spec_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Tray::Checkout::TransactionResponseParser do
         | 
| 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::TransactionResponseParser.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 | 
            +
                context "with success response" do
         | 
| 54 | 
            +
                  let(:xml) { body_for :get_success_boleto }
         | 
| 55 | 
            +
                  let(:parser) { Tray::Checkout::TransactionResponseParser.new(xml) }
         | 
| 56 | 
            +
                  let(:response) { parser.parse }
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  it "returns success" do
         | 
| 59 | 
            +
                    response.success?.should be_true
         | 
| 60 | 
            +
                  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::TransactionResponseParser.new(body_for(:get_success_boleto_without_contacts))
         | 
| 152 | 
            +
                        response = parser.parse
         | 
| 153 | 
            +
                        response.customer[:contacts].should == []
         | 
| 154 | 
            +
                      end
         | 
| 155 | 
            +
                    end
         | 
| 156 | 
            +
                  end
         | 
| 157 | 
            +
                end
         | 
| 158 | 
            +
             | 
| 159 | 
            +
                context "with error response" do
         | 
| 160 | 
            +
                  let(:xml) { body_for :get_failure_not_found }
         | 
| 161 | 
            +
                  let(:parser) { Tray::Checkout::ResponseParser.new(xml) }
         | 
| 162 | 
            +
                  let(:response) { parser.parse  }
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                  [:transaction, :payment, :customer].each do |info|
         | 
| 165 | 
            +
                    it "returns nil #{info}" do
         | 
| 166 | 
            +
                      response.send(info).should be_nil
         | 
| 167 | 
            +
                    end
         | 
| 168 | 
            +
                  end
         | 
| 169 | 
            +
                end
         | 
| 170 | 
            +
             | 
| 171 | 
            +
                context "with validation error response" do
         | 
| 172 | 
            +
                  let(:xml) { body_for :create_failure_validation_errors }
         | 
| 173 | 
            +
                  let(:parser) { Tray::Checkout::ResponseParser.new(xml) }
         | 
| 174 | 
            +
                  let(:response) { parser.parse  }
         | 
| 175 | 
            +
             | 
| 176 | 
            +
                  [:transaction, :payment, :customer].each do |info|
         | 
| 177 | 
            +
                    it "returns nil #{info}" do
         | 
| 178 | 
            +
                      response.send(info).should be_nil
         | 
| 179 | 
            +
                    end
         | 
| 180 | 
            +
                  end
         | 
| 181 | 
            +
                end
         | 
| 182 | 
            +
              end
         | 
| 183 | 
            +
            end
         | 
| @@ -79,8 +79,13 @@ describe Tray::Checkout::Transaction do | |
| 79 79 |  | 
| 80 80 | 
             
              describe "#get" do
         | 
| 81 81 | 
             
                context "token account is defined on the configuration" do
         | 
| 82 | 
            -
                   | 
| 82 | 
            +
                  around do |example|
         | 
| 83 83 | 
             
                    Tray::Checkout.configure { |config| config.token_account = "8bfe5ddcb77207b" }
         | 
| 84 | 
            +
                    example.run
         | 
| 85 | 
            +
                    Tray::Checkout.configure { |config| config.token_account = nil }
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                  before :each do
         | 
| 84 89 | 
             
                    VCR.use_cassette 'model/get_success_boleto' do
         | 
| 85 90 | 
             
                      @response = transaction.get("4761d2e198ba6b60b45900a4d95482d5")
         | 
| 86 91 | 
             
                    end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: tray-checkout
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013-11- | 
| 12 | 
            +
            date: 2013-11-28 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: activesupport
         | 
| @@ -122,16 +122,19 @@ files: | |
| 122 122 | 
             
            - Rakefile
         | 
| 123 123 | 
             
            - lib/tray-checkout.rb
         | 
| 124 124 | 
             
            - lib/tray/checkout.rb
         | 
| 125 | 
            -
            - lib/tray/checkout/ | 
| 125 | 
            +
            - lib/tray/checkout/account.rb
         | 
| 126 | 
            +
            - lib/tray/checkout/account_response_parser.rb
         | 
| 127 | 
            +
            - lib/tray/checkout/base_service.rb
         | 
| 126 128 | 
             
            - lib/tray/checkout/config.rb
         | 
| 127 129 | 
             
            - lib/tray/checkout/constants.rb
         | 
| 128 130 | 
             
            - lib/tray/checkout/hash.rb
         | 
| 131 | 
            +
            - lib/tray/checkout/params_parser.rb
         | 
| 129 132 | 
             
            - lib/tray/checkout/parser.rb
         | 
| 130 133 | 
             
            - lib/tray/checkout/response.rb
         | 
| 131 134 | 
             
            - lib/tray/checkout/response_parser.rb
         | 
| 132 135 | 
             
            - lib/tray/checkout/temp_transaction.rb
         | 
| 133 136 | 
             
            - lib/tray/checkout/transaction.rb
         | 
| 134 | 
            -
            - lib/tray/checkout/ | 
| 137 | 
            +
            - lib/tray/checkout/transaction_response_parser.rb
         | 
| 135 138 | 
             
            - lib/tray/checkout/uri.rb
         | 
| 136 139 | 
             
            - lib/tray/checkout/version.rb
         | 
| 137 140 | 
             
            - lib/tray/checkout/web_service.rb
         | 
| @@ -141,6 +144,7 @@ files: | |
| 141 144 | 
             
            - spec/support/responses/create_success_boleto.xml
         | 
| 142 145 | 
             
            - spec/support/responses/create_success_mastercard.xml
         | 
| 143 146 | 
             
            - spec/support/responses/create_temp_transaction_with_token.xml
         | 
| 147 | 
            +
            - spec/support/responses/get_account_info.xml
         | 
| 144 148 | 
             
            - spec/support/responses/get_failure_not_found.xml
         | 
| 145 149 | 
             
            - spec/support/responses/get_success_boleto.xml
         | 
| 146 150 | 
             
            - spec/support/responses/get_success_boleto_without_contacts.xml
         | 
| @@ -151,14 +155,19 @@ files: | |
| 151 155 | 
             
            - spec/support/vcr/model/create_success_mastercard.yml
         | 
| 152 156 | 
             
            - spec/support/vcr/model/get_failure_not_found.yml
         | 
| 153 157 | 
             
            - spec/support/vcr/model/get_success_boleto.yml
         | 
| 158 | 
            +
            - spec/support/vcr/model/invalid_token.yml
         | 
| 154 159 | 
             
            - spec/support/vcr/model/update_cart.yml
         | 
| 160 | 
            +
            - spec/support/vcr/model/valid_token.yml
         | 
| 155 161 | 
             
            - spec/support/vcr_setup.rb
         | 
| 162 | 
            +
            - spec/tray/checkout/account_response_parser_spec.rb
         | 
| 163 | 
            +
            - spec/tray/checkout/account_spec.rb
         | 
| 156 164 | 
             
            - spec/tray/checkout/hash_spec.rb
         | 
| 165 | 
            +
            - spec/tray/checkout/params_parser_spec.rb
         | 
| 157 166 | 
             
            - spec/tray/checkout/parser_spec.rb
         | 
| 158 167 | 
             
            - spec/tray/checkout/response_parser_spec.rb
         | 
| 159 168 | 
             
            - spec/tray/checkout/response_spec.rb
         | 
| 160 169 | 
             
            - spec/tray/checkout/temp_transaction_spec.rb
         | 
| 161 | 
            -
            - spec/tray/checkout/ | 
| 170 | 
            +
            - spec/tray/checkout/transaction_response_parser_spec.rb
         | 
| 162 171 | 
             
            - spec/tray/checkout/transaction_spec.rb
         | 
| 163 172 | 
             
            - spec/tray/checkout/uri_spec.rb
         | 
| 164 173 | 
             
            - spec/tray/checkout/web_service_spec.rb
         | 
| @@ -185,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 185 194 | 
             
                  version: '0'
         | 
| 186 195 | 
             
                  segments:
         | 
| 187 196 | 
             
                  - 0
         | 
| 188 | 
            -
                  hash: - | 
| 197 | 
            +
                  hash: -3900495863757727813
         | 
| 189 198 | 
             
            requirements: []
         | 
| 190 199 | 
             
            rubyforge_project: 
         | 
| 191 200 | 
             
            rubygems_version: 1.8.25
         | 
| @@ -199,6 +208,7 @@ test_files: | |
| 199 208 | 
             
            - spec/support/responses/create_success_boleto.xml
         | 
| 200 209 | 
             
            - spec/support/responses/create_success_mastercard.xml
         | 
| 201 210 | 
             
            - spec/support/responses/create_temp_transaction_with_token.xml
         | 
| 211 | 
            +
            - spec/support/responses/get_account_info.xml
         | 
| 202 212 | 
             
            - spec/support/responses/get_failure_not_found.xml
         | 
| 203 213 | 
             
            - spec/support/responses/get_success_boleto.xml
         | 
| 204 214 | 
             
            - spec/support/responses/get_success_boleto_without_contacts.xml
         | 
| @@ -209,14 +219,19 @@ test_files: | |
| 209 219 | 
             
            - spec/support/vcr/model/create_success_mastercard.yml
         | 
| 210 220 | 
             
            - spec/support/vcr/model/get_failure_not_found.yml
         | 
| 211 221 | 
             
            - spec/support/vcr/model/get_success_boleto.yml
         | 
| 222 | 
            +
            - spec/support/vcr/model/invalid_token.yml
         | 
| 212 223 | 
             
            - spec/support/vcr/model/update_cart.yml
         | 
| 224 | 
            +
            - spec/support/vcr/model/valid_token.yml
         | 
| 213 225 | 
             
            - spec/support/vcr_setup.rb
         | 
| 226 | 
            +
            - spec/tray/checkout/account_response_parser_spec.rb
         | 
| 227 | 
            +
            - spec/tray/checkout/account_spec.rb
         | 
| 214 228 | 
             
            - spec/tray/checkout/hash_spec.rb
         | 
| 229 | 
            +
            - spec/tray/checkout/params_parser_spec.rb
         | 
| 215 230 | 
             
            - spec/tray/checkout/parser_spec.rb
         | 
| 216 231 | 
             
            - spec/tray/checkout/response_parser_spec.rb
         | 
| 217 232 | 
             
            - spec/tray/checkout/response_spec.rb
         | 
| 218 233 | 
             
            - spec/tray/checkout/temp_transaction_spec.rb
         | 
| 219 | 
            -
            - spec/tray/checkout/ | 
| 234 | 
            +
            - spec/tray/checkout/transaction_response_parser_spec.rb
         | 
| 220 235 | 
             
            - spec/tray/checkout/transaction_spec.rb
         | 
| 221 236 | 
             
            - spec/tray/checkout/uri_spec.rb
         | 
| 222 237 | 
             
            - spec/tray/checkout/web_service_spec.rb
         | 
| @@ -1,152 +0,0 @@ | |
| 1 | 
            -
            # encoding: UTF-8
         | 
| 2 | 
            -
            require 'spec_helper'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            describe Tray::Checkout::TransactionParamsParser do
         | 
| 5 | 
            -
              let :params do
         | 
| 6 | 
            -
                {
         | 
| 7 | 
            -
                  token_account: "949u5uu9ef36f7u",
         | 
| 8 | 
            -
                  customer: {
         | 
| 9 | 
            -
                    name: "Pedro Bonamides",
         | 
| 10 | 
            -
                    cpf: "18565842673",
         | 
| 11 | 
            -
                    email: "pedro@bo.com.br",
         | 
| 12 | 
            -
                    sex: :male,
         | 
| 13 | 
            -
                    marital_status: :single,
         | 
| 14 | 
            -
                    contacts: [
         | 
| 15 | 
            -
                      { type: :home,   number: "1142360873"  },
         | 
| 16 | 
            -
                      { type: :mobile, number: "11987654321" },
         | 
| 17 | 
            -
                      { type: :work,   number: "1134567890"  }
         | 
| 18 | 
            -
                    ],
         | 
| 19 | 
            -
                    addresses: [
         | 
| 20 | 
            -
                      { type: :billing,
         | 
| 21 | 
            -
                        street: "Avenida Pedro Alvares Cabral",
         | 
| 22 | 
            -
                        number: "123",
         | 
| 23 | 
            -
                        neighborhood: "Parque Ibirapuera",
         | 
| 24 | 
            -
                        postal_code: "04094050",
         | 
| 25 | 
            -
                        city: "São Paulo",
         | 
| 26 | 
            -
                        state: "SP"
         | 
| 27 | 
            -
                      },
         | 
| 28 | 
            -
                      { type: :delivery,
         | 
| 29 | 
            -
                        street: "Avenida Pedro Alvares Cabral",
         | 
| 30 | 
            -
                        number: "123",
         | 
| 31 | 
            -
                        neighborhood: "Parque Ibirapuera",
         | 
| 32 | 
            -
                        postal_code: "04094050",
         | 
| 33 | 
            -
                        city: "São Paulo",
         | 
| 34 | 
            -
                        state: "SP"
         | 
| 35 | 
            -
                      }
         | 
| 36 | 
            -
                    ]
         | 
| 37 | 
            -
                  },
         | 
| 38 | 
            -
                  transaction: {
         | 
| 39 | 
            -
                    order_number: "R1245",
         | 
| 40 | 
            -
                    shipping_type: "Sedex",
         | 
| 41 | 
            -
                    shipping_price: 13.94,
         | 
| 42 | 
            -
                    url_notification: "http://prodis.blog.br/tray_notification",
         | 
| 43 | 
            -
                    products: [
         | 
| 44 | 
            -
                      { code: "LOGO-8278",
         | 
| 45 | 
            -
                        quantity: 2,
         | 
| 46 | 
            -
                        price_unit: 100.99,
         | 
| 47 | 
            -
                        description: "Logo Prodis"
         | 
| 48 | 
            -
                      },
         | 
| 49 | 
            -
                      { code: "877",
         | 
| 50 | 
            -
                        quantity: 1,
         | 
| 51 | 
            -
                        price_unit: 10.00,
         | 
| 52 | 
            -
                        description: "Outro produto"
         | 
| 53 | 
            -
                      }
         | 
| 54 | 
            -
                    ]
         | 
| 55 | 
            -
                  },
         | 
| 56 | 
            -
                  payment: {
         | 
| 57 | 
            -
                    method: :mastercard,
         | 
| 58 | 
            -
                    split: 3,
         | 
| 59 | 
            -
                    card: {
         | 
| 60 | 
            -
                      name: "ZEFINHA NOCEGA",
         | 
| 61 | 
            -
                      number: "5105105105105100",
         | 
| 62 | 
            -
                      expdate_month: "09",
         | 
| 63 | 
            -
                      expdate_year: "2015",
         | 
| 64 | 
            -
                      cvv: "123"
         | 
| 65 | 
            -
                    }
         | 
| 66 | 
            -
                  }
         | 
| 67 | 
            -
                }
         | 
| 68 | 
            -
              end
         | 
| 69 | 
            -
             | 
| 70 | 
            -
              let(:parser) { Tray::Checkout::TransactionParamsParser.new(params) }
         | 
| 71 | 
            -
              let(:transaction_params) { parser.parse }
         | 
| 72 | 
            -
             | 
| 73 | 
            -
              describe "#parse" do
         | 
| 74 | 
            -
                it "sets customer gender expect API value" do
         | 
| 75 | 
            -
                  transaction_params[:customer][:gender].should == "M"
         | 
| 76 | 
            -
                end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                it "sets customer relationship expect API value" do
         | 
| 79 | 
            -
                  transaction_params[:customer][:relationship].should == "S"
         | 
| 80 | 
            -
                end
         | 
| 81 | 
            -
             | 
| 82 | 
            -
                it "sets customer contact type expect API value" do
         | 
| 83 | 
            -
                  transaction_params[:customer][:contacts][0][:type_contact].should == "H"
         | 
| 84 | 
            -
                  transaction_params[:customer][:contacts][1][:type_contact].should == "M"
         | 
| 85 | 
            -
                  transaction_params[:customer][:contacts][2][:type_contact].should == "W"
         | 
| 86 | 
            -
                end
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                it "sets customer contact number expect API value" do
         | 
| 89 | 
            -
                  transaction_params[:customer][:contacts][0][:number_contact].should == "1142360873"
         | 
| 90 | 
            -
                  transaction_params[:customer][:contacts][1][:number_contact].should == "11987654321"
         | 
| 91 | 
            -
                  transaction_params[:customer][:contacts][2][:number_contact].should == "1134567890"
         | 
| 92 | 
            -
                end
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                it "sets customer address type expect API value" do
         | 
| 95 | 
            -
                  transaction_params[:customer][:addresses][0][:type_address].should == "B"
         | 
| 96 | 
            -
                  transaction_params[:customer][:addresses][1][:type_address].should == "D"
         | 
| 97 | 
            -
                end
         | 
| 98 | 
            -
             | 
| 99 | 
            -
                it "sets payment method ID expect API value" do
         | 
| 100 | 
            -
                  transaction_params[:payment][:payment_method_id].should == 4
         | 
| 101 | 
            -
                end
         | 
| 102 | 
            -
             | 
| 103 | 
            -
                { card_name: "ZEFINHA NOCEGA",
         | 
| 104 | 
            -
                  card_number: "5105105105105100",
         | 
| 105 | 
            -
                  card_expdate_month: "09",
         | 
| 106 | 
            -
                  card_expdate_year: "2015",
         | 
| 107 | 
            -
                  card_cvv: "123"
         | 
| 108 | 
            -
                }.each do |param, value|
         | 
| 109 | 
            -
                  it "sets payment #{param}" do
         | 
| 110 | 
            -
                    transaction_params[:payment][param].should == value
         | 
| 111 | 
            -
                  end
         | 
| 112 | 
            -
                end
         | 
| 113 | 
            -
             | 
| 114 | 
            -
                it "sets products as expect API data structure" do
         | 
| 115 | 
            -
                  transaction_params[:transaction_product][0][:code].should == "LOGO-8278"
         | 
| 116 | 
            -
                  transaction_params[:transaction_product][0][:quantity].should == 2
         | 
| 117 | 
            -
                  transaction_params[:transaction_product][0][:price_unit].should == 100.99
         | 
| 118 | 
            -
                  transaction_params[:transaction_product][0][:description].should == "Logo Prodis"
         | 
| 119 | 
            -
             | 
| 120 | 
            -
                  transaction_params[:transaction_product][1][:code].should == "877"
         | 
| 121 | 
            -
                  transaction_params[:transaction_product][1][:quantity].should == 1
         | 
| 122 | 
            -
                  transaction_params[:transaction_product][1][:price_unit].should == 10.00
         | 
| 123 | 
            -
                  transaction_params[:transaction_product][1][:description].should == "Outro produto"
         | 
| 124 | 
            -
                end
         | 
| 125 | 
            -
             | 
| 126 | 
            -
                it "keeps token account supplied in params" do
         | 
| 127 | 
            -
                  transaction_params[:token_account].should == params[:token_account]
         | 
| 128 | 
            -
                end
         | 
| 129 | 
            -
             | 
| 130 | 
            -
                context "when sets token account in configuration" do
         | 
| 131 | 
            -
                  around do |example|
         | 
| 132 | 
            -
                    Tray::Checkout.configure { |config| config.token_account = "1q2w3e4r5t6y7u8" }
         | 
| 133 | 
            -
                    example.run
         | 
| 134 | 
            -
                    Tray::Checkout.configure { |config| config.token_account = nil }
         | 
| 135 | 
            -
                  end
         | 
| 136 | 
            -
             | 
| 137 | 
            -
                  context "and token account is supplied in params" do
         | 
| 138 | 
            -
                    it "keeps token account supplied in params" do
         | 
| 139 | 
            -
                      transaction_params[:token_account].should == params[:token_account]
         | 
| 140 | 
            -
                    end
         | 
| 141 | 
            -
                  end
         | 
| 142 | 
            -
             | 
| 143 | 
            -
                  context "and token account is not supplied in params" do
         | 
| 144 | 
            -
                    it "uses token account from configuration" do
         | 
| 145 | 
            -
                      params.delete(:token_account)
         | 
| 146 | 
            -
                      transaction_params = Tray::Checkout::TransactionParamsParser.new(params).parse
         | 
| 147 | 
            -
                      transaction_params[:token_account].should == "1q2w3e4r5t6y7u8"
         | 
| 148 | 
            -
                    end
         | 
| 149 | 
            -
                  end
         | 
| 150 | 
            -
                end
         | 
| 151 | 
            -
              end
         | 
| 152 | 
            -
            end
         |