Fix fatal error in reports helper for orders without payments

This commit is contained in:
Matt-Yorkley
2020-06-09 14:58:07 +02:00
parent ca458018ca
commit e84e0aebe6
2 changed files with 32 additions and 4 deletions

View File

@@ -11,10 +11,13 @@ module Spree
end
def report_payment_method_options(orders)
orders.map do |o|
pm = o.payments.first.payment_method
[pm.andand.name, pm.andand.id]
end.uniq
orders.map do |order|
payment_method = order.payments.first.andand.payment_method
next unless payment_method
[payment_method.name, payment_method.id]
end.compact.uniq
end
def report_shipping_method_options(orders)

View File

@@ -0,0 +1,25 @@
# frozen_string_literal: true
require 'spec_helper'
describe Spree::ReportsHelper, type: :helper do
describe "#report_payment_method_options" do
let(:order_with_payments) { create(:order_ready_to_ship) }
let(:order_without_payments) { create(:order_with_line_items) }
let(:orders) { [order_with_payments, order_without_payments] }
let(:payment_method) { order_with_payments.payments.first.payment_method }
it "returns payment method select options for given orders" do
select_options = helper.report_payment_method_options([order_with_payments])
expect(select_options).to eq [[payment_method.name, payment_method.id]]
end
it "handles orders that don't have payments, without error" do
select_options = helper.report_payment_method_options(orders)
expect(select_options).to eq [[payment_method.name, payment_method.id]]
end
end
end