From 35e20fc179da821ca2a65f19b30ff90b79e90621 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 15 Dec 2021 20:03:33 +0000 Subject: [PATCH] Can sort orders via bill_address.lastname We only need to check the orders sort Fix ordering in api/v0/orders_controller_spec --- app/services/search_orders.rb | 2 +- .../controllers/api/v0/orders_controller_spec.rb | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/services/search_orders.rb b/app/services/search_orders.rb index 6ff7afcf3d..6b08d78cfb 100644 --- a/app/services/search_orders.rb +++ b/app/services/search_orders.rb @@ -19,7 +19,7 @@ class SearchOrders includes(:payments, :subscription, :shipments, :bill_address, :distributor, :order_cycle). ransack(params[:q]) - @search.result(distinct: true) + @search.result(distinct: true).joins(:bill_address) end def search_query diff --git a/spec/controllers/api/v0/orders_controller_spec.rb b/spec/controllers/api/v0/orders_controller_spec.rb index 42d75da5ab..cc72207f64 100644 --- a/spec/controllers/api/v0/orders_controller_spec.rb +++ b/spec/controllers/api/v0/orders_controller_spec.rb @@ -21,18 +21,19 @@ module Api let!(:order_cycle2) { create(:simple_order_cycle, coordinator: coordinator2) } let!(:order1) do create(:order, order_cycle: order_cycle, state: 'complete', completed_at: Time.zone.now, - distributor: distributor, billing_address: create(:address), total: 5.0) + distributor: distributor, billing_address: create(:address, lastname: "c"), total: 5.0) end let!(:order2) do create(:order, order_cycle: order_cycle, state: 'complete', completed_at: Time.zone.now, - distributor: distributor2, billing_address: create(:address), total: 10.0) + distributor: distributor2, billing_address: create(:address, lastname: "a"), total: 10.0) end let!(:order3) do create(:order, order_cycle: order_cycle, state: 'complete', completed_at: Time.zone.now, - distributor: distributor, billing_address: create(:address), total: 1.0 ) + distributor: distributor, billing_address: create(:address, lastname: "b"), total: 1.0 ) end let!(:order4) do - create(:completed_order_with_fees, order_cycle: order_cycle2, distributor: distributor2, total: 15.0) + create(:completed_order_with_fees, order_cycle: order_cycle2, distributor: distributor2, + billing_address: create(:address, lastname: "d"), total: 15.0) end let!(:order5) { create(:order, state: 'cart', completed_at: nil) } let!(:line_item1) do @@ -134,6 +135,13 @@ module Api expect(json_response['orders']).to eq serialized_orders([order4, order2, order1, order3]) end + + it 'can sort orders by bill_address.lastname' do + get :index, params: { q: { completed_at_not_null: true, s: 'bill_address_lastname ASC' } }, + as: :json + + expect(json_response['orders'].map{ |o| o[:id] }).to eq serialized_orders([order2, order3, order1, order4]).map{ |o| o["id"] } + end end context 'with pagination' do