mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Extract orders relation as a query object
This commit is contained in:
15
app/queries/complete_visible_orders.rb
Normal file
15
app/queries/complete_visible_orders.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class CompleteVisibleOrders
|
||||
def initialize(order_permissions)
|
||||
@order_permissions = order_permissions
|
||||
end
|
||||
|
||||
def query
|
||||
order_permissions.visible_orders.complete
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :order_permissions
|
||||
end
|
||||
@@ -149,13 +149,15 @@ module OrderManagement
|
||||
end
|
||||
|
||||
def order_permissions
|
||||
return @order_permissions unless @order_permissions.nil?
|
||||
|
||||
@order_permissions = ::Permissions::Order.new(@user, @params[:q])
|
||||
@order_permissions ||= ::Permissions::Order.new(@user, @params[:q])
|
||||
end
|
||||
|
||||
def report_line_items
|
||||
@report_line_items ||= OpenFoodNetwork::Reports::LineItems.new(order_permissions, @params)
|
||||
@report_line_items ||= OpenFoodNetwork::Reports::LineItems.new(
|
||||
order_permissions,
|
||||
@params,
|
||||
CompleteVisibleOrders.new(order_permissions).query
|
||||
)
|
||||
end
|
||||
|
||||
def customer_payments_total_cost(line_items)
|
||||
|
||||
40
spec/queries/complete_visible_orders_spec.rb
Normal file
40
spec/queries/complete_visible_orders_spec.rb
Normal file
@@ -0,0 +1,40 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe CompleteVisibleOrders do
|
||||
subject(:complete_visible_orders) { described_class.new(order_permissions) }
|
||||
let(:filter_canceled) { false }
|
||||
|
||||
describe '#query' do
|
||||
let(:user) { create(:user) }
|
||||
let(:enterprise) { create(:enterprise) }
|
||||
let(:order_permissions) { ::Permissions::Order.new(user, filter_canceled) }
|
||||
|
||||
before do
|
||||
user.enterprises << enterprise
|
||||
user.save!
|
||||
end
|
||||
|
||||
context 'when an order has no completed_at' do
|
||||
let(:cart_order) { create(:order, distributor: enterprise) }
|
||||
|
||||
it 'does not return it' do
|
||||
expect(complete_visible_orders.query).not_to include(cart_order)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when an order has complete_at' do
|
||||
let(:complete_order) { create(:order, completed_at: 1.day.ago, distributor: enterprise) }
|
||||
|
||||
it 'does not return it' do
|
||||
expect(complete_visible_orders.query).to include(complete_order)
|
||||
end
|
||||
end
|
||||
|
||||
it 'calls #visible_orders' do
|
||||
expect(order_permissions).to receive(:visible_orders).and_call_original
|
||||
complete_visible_orders.query
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user