mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Fix problem in array concatenation in orders helper and cover it with specs
This commit is contained in:
@@ -5,7 +5,7 @@ module Spree
|
||||
@order ||= order
|
||||
links = []
|
||||
links << edit_order_link unless action_name == "edit"
|
||||
links << complete_order_links if @order.complete?
|
||||
links.concat(complete_order_links) if @order.complete?
|
||||
links << ship_order_link if @order.ready_to_ship?
|
||||
links << cancel_order_link if @order.can_cancel?
|
||||
links
|
||||
@@ -16,8 +16,8 @@ module Spree
|
||||
def complete_order_links
|
||||
complete_order_links = []
|
||||
complete_order_links << resend_confirmation_link
|
||||
complete_order_links << invoice_links
|
||||
complete_order_links << ticket_links
|
||||
complete_order_links.concat(invoice_links)
|
||||
complete_order_links.concat(ticket_links)
|
||||
complete_order_links
|
||||
end
|
||||
|
||||
@@ -34,7 +34,7 @@ module Spree
|
||||
end
|
||||
|
||||
def ticket_links
|
||||
return [] unless Spree::Config.enable_receipt_printing?
|
||||
return [] unless Spree::Config[:enable_receipt_printing?]
|
||||
[print_ticket_link, select_ticket_printer_link]
|
||||
end
|
||||
|
||||
|
||||
102
spec/helpers/spree/admin/orders_helper_spec.rb
Normal file
102
spec/helpers/spree/admin/orders_helper_spec.rb
Normal file
@@ -0,0 +1,102 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Spree::Admin::OrdersHelper, type: :helper do
|
||||
describe "#orders_links" do
|
||||
let(:order) { double(:order) }
|
||||
let(:distributor) { double(:enterprise) }
|
||||
|
||||
around do |example|
|
||||
original_invoices_setting = Spree::Config[:enable_invoices?]
|
||||
original_tickets_setting = Spree::Config[:enable_receipt_printing?]
|
||||
example.run
|
||||
Spree::Config[:enable_invoices?] = original_invoices_setting
|
||||
Spree::Config[:enable_receipt_printing?] = original_tickets_setting
|
||||
end
|
||||
|
||||
before do
|
||||
allow(order).to receive(:complete?) { false }
|
||||
allow(order).to receive(:ready_to_ship?) { false }
|
||||
allow(order).to receive(:can_cancel?) { false }
|
||||
Spree::Config[:enable_invoices?] = false
|
||||
Spree::Config[:enable_receipt_printing?] = false
|
||||
end
|
||||
|
||||
it "returns only edit order link when all conditions are set to false" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 1
|
||||
expect(links.first[:name]).to eq "Edit Order"
|
||||
end
|
||||
|
||||
context "complete order" do
|
||||
before do
|
||||
allow(order).to receive(:complete?) { true }
|
||||
end
|
||||
|
||||
it "returns edit order and resend confirmation links" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 2
|
||||
expect(links[0][:name]).to eq "Edit Order"
|
||||
expect(links[1][:name]).to eq "Resend Confirmation"
|
||||
end
|
||||
|
||||
context "that can be canceled" do
|
||||
before do
|
||||
allow(order).to receive(:can_cancel?) { true }
|
||||
allow(order).to receive(:number) { 111 }
|
||||
end
|
||||
|
||||
it "adds cancel order link" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 3
|
||||
expect(links[2][:name]).to eq "Cancel Order"
|
||||
end
|
||||
end
|
||||
|
||||
context "that can be shipped" do
|
||||
before do
|
||||
allow(order).to receive(:ready_to_ship?) { true }
|
||||
end
|
||||
|
||||
it "adds ship order link" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 3
|
||||
expect(links[2][:name]).to eq "Ship Order"
|
||||
end
|
||||
end
|
||||
|
||||
context "with invoices enabled" do
|
||||
before do
|
||||
Spree::Config[:enable_invoices?] = true
|
||||
allow(order).to receive(:distributor) { distributor }
|
||||
allow(distributor).to receive(:can_invoice?) { true }
|
||||
end
|
||||
|
||||
it "adds send and print invoice links" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 4
|
||||
expect(links[2][:name]).to eq "Send Invoice"
|
||||
expect(links[3][:name]).to eq "Print Invoice"
|
||||
end
|
||||
end
|
||||
|
||||
context "with tickets enabled" do
|
||||
before do
|
||||
Spree::Config[:enable_receipt_printing?] = true
|
||||
end
|
||||
|
||||
it "adds print and select ticket links" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 4
|
||||
expect(links[2][:name]).to eq "Print Ticket"
|
||||
expect(links[3][:name]).to eq "Select printer for tickets"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user