Files
openfoodnetwork/spec/helpers/spree/admin/orders_helper_spec.rb
Cillian O'Ruanaidh 7e2d9ff381 The Resend Confirmation and Send/Print Invoice links should display for resumed orders too
These are links inside the Actions drop down menu on the edit order view. Before they were missing if an order was in a resumed state.

Fixes #5946
2021-04-02 15:41:59 +01:00

132 lines
3.7 KiB
Ruby

# frozen_string_literal: true
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 }
allow(order).to receive(:resumed?) { 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 { enable_invoices }
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
context "resumed order" do
before { allow(order).to receive(:resumed?) { true } }
it "includes a resend confirmation link" do
links = helper.order_links(order).map { |link| link[:name] }
expect(links).to match_array(["Edit Order", "Resend Confirmation"])
end
context "with invoices enabled" do
before { enable_invoices }
it "includes send invoice and print invoice links" do
links = helper.order_links(order).map { |link| link[:name] }
expect(links).to match_array(
["Edit Order", "Print Invoice", "Resend Confirmation", "Send Invoice"]
)
end
end
end
end
private
def enable_invoices
Spree::Config[:enable_invoices?] = true
allow(order).to receive(:distributor) { distributor }
allow(distributor).to receive(:can_invoice?) { true }
end
end