require 'spec_helper' describe Spree::Admin::StoreCreditEventsHelper, type: :helper do describe "#store_credit_event_admin_action_name" do let(:store_credit_event) { create(:store_credit_event, action: action) } subject { store_credit_event_admin_action_name(store_credit_event) } context "capture event" do let(:action) { Spree::StoreCredit::CAPTURE_ACTION } it "returns the action's display text" do expect(subject).to eq "Used" end end context "authorize event" do let(:action) { Spree::StoreCredit::AUTHORIZE_ACTION } it "returns the action's display text" do expect(subject).to eq "Authorized" end end context "eligible event" do let(:action) { Spree::StoreCredit::ELIGIBLE_ACTION } it "returns the action's display text" do expect(subject).to eq "Eligibility Verified" end end context "allocation event" do let(:action) { Spree::StoreCredit::ALLOCATION_ACTION } it "returns the action's display text" do expect(subject).to eq "Added" end end context "void event" do let(:action) { Spree::StoreCredit::VOID_ACTION } it "returns the action's display text" do expect(subject).to eq "Voided" end end context "credit event" do let(:action) { Spree::StoreCredit::CREDIT_ACTION } it "returns the action's display text" do expect(subject).to eq "Credit" end end end describe "#store_credit_event_originator_link" do let(:store_credit_event) { create(:store_credit_adjustment_event, originator: originator) } subject { store_credit_event_originator_link(store_credit_event) } context "originator is a user" do let(:originator) { create(:user) } it "returns a link to the user's edit page" do expect(subject).to eq %(User - #{originator.email}) end end context "originator is a payment" do let(:originator) { create(:payment) } it "returns a link to the order's payments page" do expect(subject).to eq %(Payment - Order ##{originator.order.number}) end end context "originator is a refund" do let(:originator) { create(:refund, amount: 1.0) } it "returns a link to the order's payments page" do expect(subject).to eq %(Refund - Order ##{originator.payment.order.number}) end end context "originator is not specifically handled" do let(:originator) { create(:store_credit_update_reason) } it "raises an error" do expect { subject }.to raise_error(RuntimeError, "Unexpected originator type Spree::StoreCreditUpdateReason") end end end end