spec/moip2/order_api_spec.rb in moip2-0.1.4 vs spec/moip2/order_api_spec.rb in moip2-1.0.0
- old
+ new
@@ -1,44 +1,42 @@
describe Moip2::OrderApi do
+ let(:order_api) { described_class.new(sandbox_client) }
- let(:order_api) { described_class.new(sandbox_client) }
-
describe "#create" do
-
let(:order) do
{
own_id: "your_own_id_1",
amount: {
- currency: "BRL"
+ currency: "BRL",
},
items: [
{
product: "Some Product",
quantity: 1,
detail: "Some Product Detail",
- price: 100
- }
+ price: 100,
+ },
],
customer: {
own_id: "your_customer_own_id",
fullname: "John Doe",
email: "john.doe@mailinator.com",
birthdate: "1988-11-11",
tax_document: { number: "22222222222", type: "CPF" },
phone: { country_code: "55", area_code: "11", number: "5566778899" },
- shipping_address:
+ shipping_address:
{
street: "Avenida Faria Lima",
street_number: 2927,
complement: 8,
district: "Itaim",
city: "Sao Paulo",
state: "SP",
country: "BRA",
- zip_code: "01234000"
- }
- }
+ zip_code: "01234000",
+ },
+ },
}
end
let(:created_order) do
VCR.use_cassette("create_order_success") do
@@ -64,29 +62,30 @@
expect(created_order.amount.subtotals.shipping).to eq(0)
expect(created_order.amount.subtotals.addition).to eq(0)
expect(created_order.amount.subtotals.discount).to eq(0)
expect(created_order.amount.subtotals.items).to eq(100)
- expect(created_order.items[0].product).to eq("Some Product")
- expect(created_order.items[0].price).to eq(100)
+ expect(created_order.items[0].product).to eq("Some Product")
+ expect(created_order.items[0].price).to eq(100)
expect(created_order.items[0].detail).to eq("Some Product Detail")
expect(created_order.items[0].quantity).to eq(1)
-
+
expect(created_order.customer.id).to eq("CUS-B6LE6HLFFXKF")
expect(created_order.customer.shipping_address).to_not be_nil
expect(created_order.customer._links).to_not be_nil
- expect(created_order.customer._links.self.href).to eq "#{ENV['sandbox_url']}/v2/customers/CUS-B6LE6HLFFXKF"
+ expect(
+ created_order.customer._links.self.href,
+ ).to eq "#{ENV['sandbox_url']}/v2/customers/CUS-B6LE6HLFFXKF"
end
it "returns an Order object" do
expect(created_order).to be_a(Moip2::Resource::Order)
end
context "when validation error" do
-
let(:created_order) do
VCR.use_cassette("create_order_fail") do
order_api.create({})
end
end
@@ -100,17 +99,14 @@
expect(created_order.errors.size).to eq(2)
expect(created_order.errors[0].code).to_not be_nil
expect(created_order.errors[0].path).to_not be_nil
expect(created_order.errors[0].description).to_not be_nil
end
-
end
-
end
describe "#show" do
-
let(:order) do
VCR.use_cassette("show_order") do
order_api.show("ORD-EQE16JGCM52O")
end
end
@@ -118,21 +114,105 @@
it "returns an order" do
expect(order["id"]).to eq("ORD-EQE16JGCM52O")
end
context "when order not found" do
-
let(:order) do
VCR.use_cassette("show_order_not_found") do
order_api.show("ORD-INVALID")
end
end
it "raises a NotFound" do
expect { order }.to raise_error Moip2::NotFoundError
end
+ end
+ end
+ describe "#find_all" do
+ context "when passing no filters" do
+ subject(:response) do
+ VCR.use_cassette("find_all_orders_no_filter") do
+ order_api.find_all
+ end
+ end
+
+ it { expect(response).to be_a(Moip2::Resource::Order) }
+ it { expect(response._links).not_to be_nil }
+ it { expect(response.summary).not_to be_nil }
+ it { expect(response.orders.size).to eq(20) }
+ it { expect(response.orders.first).to be_a(Moip2::Resource::Order) }
end
- end
+ context "when passing limit" do
+ subject(:response) do
+ VCR.use_cassette("find_all_orders_limit") do
+ order_api.find_all(limit: 10)
+ end
+ end
+ it { expect(response).to be_a(Moip2::Resource::Order) }
+ it { expect(response._links).not_to be_nil }
+ it { expect(response.summary).not_to be_nil }
+ it { expect(response.orders.size).to eq(10) }
+ it { expect(response.orders.first).to be_a(Moip2::Resource::Order) }
+ end
+
+ context "when passing filters" do
+ subject(:response) do
+ VCR.use_cassette("find_all_orders_filters") do
+ order_api.find_all(filters: { status: { in: ["PAID", "WAITING"] } })
+ end
+ end
+
+ it { expect(response).to be_a(Moip2::Resource::Order) }
+ it { expect(response._links).not_to be_nil }
+ it { expect(response.summary).not_to be_nil }
+
+ it "_links.next has the right filters" do
+ expect(response._links.next.href).to eq(
+ "https://test.moip.com.br/v2/orders?filters=status::in(PAID,WAITING)&limit=0&offset=0",
+ )
+ end
+
+ it "all orders satisfy the filter constraint" do
+ expect(response.orders).to satisfy do |orders|
+ orders.all? { |order| ["PAID", "WAITING"].include?(order.status) }
+ end
+ end
+ end
+
+ context "when passing multiple filters" do
+ subject(:response) do
+ VCR.use_cassette("find_all_orders_multi_filters") do
+ order_api.find_all(filters: {
+ status: { in: ["PAID", "WAITING"] },
+ amount: { bt: [500, 1000] },
+ })
+ end
+ end
+
+ it { expect(response).to be_a(Moip2::Resource::Order) }
+ it { expect(response._links).not_to be_nil }
+ it { expect(response.summary).not_to be_nil }
+
+ it "_links.next has the right filters" do
+ expect(response._links.next.href).to eq(
+ "https://test.moip.com.br/v2/orders?filters=" \
+ "status::in(PAID,WAITING)|amount::bt(500,1000)&limit=0&offset=0",
+ )
+ end
+
+ it "all orders satisfy the status constraint" do
+ expect(response.orders).to satisfy do |orders|
+ orders.all? { |order| ["PAID", "WAITING"].include?(order.status) }
+ end
+ end
+
+ it "all orders satisfy the amount constraint" do
+ expect(response.orders).to satisfy do |orders|
+ orders.all? { |order| order.amount.total.between?(500, 1000) }
+ end
+ end
+ end
+ end
end