Add spec for search filters

This commit is contained in:
Matt-Yorkley
2018-12-10 20:04:10 +00:00
parent d48774e3a2
commit e711c5ed03

View File

@@ -24,6 +24,8 @@ module Api
create(:order, order_cycle: order_cycle, state: 'complete', completed_at: Time.zone.now,
distributor: distributor, billing_address: create(:address) )
end
let!(:order4) { create(:completed_order_with_fees) }
let!(:order5) { create(:order, state: 'cart', completed_at: nil) }
let!(:line_item1) do
create(:line_item, order: order1,
product: create(:product, supplier: supplier))
@@ -119,6 +121,24 @@ module Api
end
end
context 'using search filters' do
before do
allow(controller).to receive(:spree_current_user) { admin_user }
end
it 'can show only completed orders' do
get :index, format: :json, q: { completed_at_not_null: true, s: 'created_at desc' }
expect(json_response['orders']).to eq serialized_orders([order4, order3, order2, order1])
end
it 'can show only unfulfilled orders' do
get :index, format: :json, q: { inventory_units_shipment_id_null: true, s: 'created_at desc' }
expect(json_response['orders']).to eq serialized_orders([order3, order2, order1])
end
end
context 'with pagination' do
before do
allow(controller).to receive(:spree_current_user) { distributor.owner }
@@ -128,7 +148,7 @@ module Api
get :index, per_page: 15, page: 1
pagination_data = {
'results' => 2,
'results' => 3,
'pages' => 1,
'page' => 1,
'per_page' => 15
@@ -141,6 +161,16 @@ module Api
private
def serialized_orders(orders)
serialized_orders = ActiveModel::ArraySerializer.new(
orders,
each_serializer: Api::Admin::OrderSerializer,
root: false
)
JSON.parse(serialized_orders.to_json)
end
def returns_orders(response)
keys = response['orders'].first.keys.map(&:to_sym)
expect(order_attributes.all?{ |attr| keys.include? attr }).to be_truthy