spec/moip2/customer_api_spec.rb in moip2-0.1.4 vs spec/moip2/customer_api_spec.rb in moip2-1.0.0

- old
+ new

@@ -1,11 +1,9 @@ describe Moip2::CustomerApi do - let(:customer_api) { described_class.new(sandbox_client) } describe "#show" do - let(:customer_external_id) { "CUS-B6LE6HLFFXKF" } let(:customer) do VCR.use_cassette("get_customer") do customer_api.show(customer_external_id) @@ -22,113 +20,128 @@ it { expect(customer.tax_document).to_not be_nil } it { expect(customer.tax_document.type).to eq "CPF" } it { expect(customer.shipping_address).to_not be_nil } it { expect(customer.shipping_address.zip_code).to eq "01234000" } it { expect(customer._links).to_not be_nil } - it { expect(customer._links.self.href).to eq "#{ENV['sandbox_url']}/v2/customers/CUS-B6LE6HLFFXKF" } - + it { + expect( + customer._links.self.href, + ).to eq "#{ENV['sandbox_url']}/v2/customers/CUS-B6LE6HLFFXKF" + } end describe "#create with funding instrument" do - let(:customer_with_funding_instrument) do { - ownId: "meu_id_de_cliente", - fullname: "Jose Silva", - email: "josedasilva@email.com", - phone: { - areaCode: "11", - number: "66778899" + ownId: "meu_id_de_cliente", + fullname: "Jose Silva", + email: "josedasilva@email.com", + phone: { + areaCode: "11", + number: "66778899", }, - birthDate: "1988-12-30", - taxDocument: { - type: "CPF", - number: "22222222222" + birthDate: "1988-12-30", + taxDocument: { + type: "CPF", + number: "22222222222", }, - shippingAddress: { - street: "Avenida Faria Lima", - streetNumber: "2927", - complement: "8", - district: "Itaim", - city: "Sao Paulo", - state: "SP", - country: "BRA", - zipCode: "01234000" + shippingAddress: { + street: "Avenida Faria Lima", + streetNumber: "2927", + complement: "8", + district: "Itaim", + city: "Sao Paulo", + state: "SP", + country: "BRA", + zipCode: "01234000", }, - fundingInstrument: { - method: "CREDIT_CARD", - creditCard: { - expirationMonth: 12, - expirationYear: 15, - number: "4073020000000002", - holder: { - fullname: "Jose Silva", - birthdate: "1988-12-30", - taxDocument: { - type: "CPF", - number: "22222222222" + fundingInstrument: { + method: "CREDIT_CARD", + creditCard: { + expirationMonth: 12, + expirationYear: 15, + number: "4073020000000002", + holder: { + fullname: "Jose Silva", + birthdate: "1988-12-30", + taxDocument: { + type: "CPF", + number: "22222222222", }, - phone: { - areaCode: "11", - number: "66778899" - } - } - } - } + phone: { + areaCode: "11", + number: "66778899", + }, + }, + }, + }, } end - let(:created_customer_with_funding_instrument) do VCR.use_cassette("create_customer_with_funding_instrument") do customer_api.create customer_with_funding_instrument end end it { expect(created_customer_with_funding_instrument.id).to eq "CUS-E5CO735TBXTI" } it { expect(created_customer_with_funding_instrument.own_id).to eq "meu_id_de_cliente" } it { expect(created_customer_with_funding_instrument.email).to eq "josedasilva@email.com" } it { expect(created_customer_with_funding_instrument.funding_instrument).to_not be_nil } - it { expect(created_customer_with_funding_instrument.funding_instrument.credit_card.id).to eq "CRC-F5DR8SVINCUI" } - it { expect(created_customer_with_funding_instrument.funding_instrument.credit_card.brand).to eq "VISA" } + it { + expect( + created_customer_with_funding_instrument.funding_instrument.credit_card.id, + ).to eq "CRC-F5DR8SVINCUI" + } + it { + expect( + created_customer_with_funding_instrument.funding_instrument.credit_card.brand, + ).to eq "VISA" + } it { expect(created_customer_with_funding_instrument.phone).to_not be_nil } it { expect(created_customer_with_funding_instrument.tax_document).to_not be_nil } it { expect(created_customer_with_funding_instrument.tax_document.type).to eq "CPF" } it { expect(created_customer_with_funding_instrument.shipping_address).to_not be_nil } - it { expect(created_customer_with_funding_instrument.shipping_address.zip_code).to eq "01234000" } + it { + expect( + created_customer_with_funding_instrument.shipping_address.zip_code, + ).to eq "01234000" + } it { expect(created_customer_with_funding_instrument._links).to_not be_nil } - it { expect(created_customer_with_funding_instrument._links.self.href).to eq "#{ENV['sandbox_url']}/v2/customers/CUS-E5CO735TBXTI" } - + it { + expect( + created_customer_with_funding_instrument._links.self.href, + ).to eq "#{ENV['sandbox_url']}/v2/customers/CUS-E5CO735TBXTI" + } end describe "#create without funding instrument" do - let(:customer) do { - ownId: "meu_id_sandbox_1231234", - fullname: "Jose Silva", - email: "jose_silva0@email.com", - birthDate: "1988-12-30", - taxDocument: { - type: "CPF", - number: "22222222222" + ownId: "meu_id_sandbox_1231234", + fullname: "Jose Silva", + email: "jose_silva0@email.com", + birthDate: "1988-12-30", + taxDocument: { + type: "CPF", + number: "22222222222", }, - phone: { - countryCode: "55", - areaCode: "11", - number: "66778899" + phone: { + countryCode: "55", + areaCode: "11", + number: "66778899", }, - shippingAddress: { - city: "Sao Paulo", - complement: "8", - district: "Itaim", - street: "Avenida Faria Lima", - streetNumber: "2927", - zipCode: "01234000", - state: "SP", - country: "BRA" - } + shippingAddress: { + city: "Sao Paulo", + complement: "8", + district: "Itaim", + street: "Avenida Faria Lima", + streetNumber: "2927", + zipCode: "01234000", + state: "SP", + country: "BRA", + }, } end let(:created_customer) do VCR.use_cassette("create_customer") do @@ -143,10 +156,72 @@ it { expect(created_customer.tax_document).to_not be_nil } it { expect(created_customer.tax_document.type).to eq "CPF" } it { expect(created_customer.shipping_address).to_not be_nil } it { expect(created_customer.shipping_address.zip_code).to eq "01234000" } it { expect(created_customer._links).to_not be_nil } - it { expect(created_customer._links.self.href).to eq "#{ENV['sandbox_url']}/v2/customers/CUS-4GESZSOAH7HX" } + it { + expect( + created_customer._links.self.href, + ).to eq "#{ENV['sandbox_url']}/v2/customers/CUS-4GESZSOAH7HX" + } + end + describe "#create credit card to customer" do + let(:credit_card) do + { + method: "CREDIT_CARD", + creditCard: { + expirationMonth: "05", + expirationYear: "22", + number: "5555666677778884", + cvc: "123", + holder: { + fullname: "Jose Portador da Silva", + birthdate: "1988-12-30", + taxDocument: { + type: "CPF", + number: "33333333333", + }, + phone: { + countryCode: "55", + areaCode: "11", + number: "66778899", + }, + }, + }, + } + end + + let(:credit_card_added) do + VCR.use_cassette("create_credit_card_customer") do + customer_api.add_credit_card("CUS-4GESZSOAH7HX", credit_card) + end + end + + it { expect(credit_card_added.credit_card.id).to_not be_nil } + it { expect(credit_card_added.credit_card.brand).to eq "MASTERCARD" } + it { expect(credit_card_added.credit_card.first6).to eq "555566" } + it { expect(credit_card_added.credit_card.last4).to eq "8884" } end + describe "#delete a credit card from customer" do + context "when credit card exists" do + let(:credit_card_deleted) do + VCR.use_cassette("delete_credit_card_customer") do + customer_api.delete_credit_card!("CRC-920F3Z3CTVN8") + end + end + + it { expect(credit_card_deleted).to eq true } + end + + context "when credit card doesn't exist" do + let(:credit_card_nonexistent) do + VCR.use_cassette("delete_nonexistent_credit_card_customer") do + customer_api.delete_credit_card!("CRC-450F3Z4CTVN8") + end + end + + it { expect { credit_card_nonexistent }.to raise_error(Moip2::NotFoundError) } + end + end end