Files
openfoodnetwork/spec/helpers/admin/subscriptions_helper_spec.rb

56 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Admin::SubscriptionsHelper do
describe "checking if setup is complete for any [shop]" do
let(:shop) { create(:distributor_enterprise) }
let(:customer) { create(:customer, enterprise: shop) }
let(:shipping_method) { create(:shipping_method, distributors: [shop]) }
let(:payment_method) { create(:payment_method, distributors: [shop]) }
let(:schedule) {
create(:schedule, order_cycles: [create(:simple_order_cycle, coordinator: shop)] )
}
context "when a shop has no shipping methods present" do
before { customer; payment_method; schedule }
it { expect(helper.subscriptions_setup_complete?([shop])).to be false }
end
context "when a shop has no Cash or Stripe payment methods present" do
let!(:paypal) {
Spree::Gateway::PayPalExpress.create!(name: "PayPalExpress", distributor_ids: [shop.id])
}
before { customer; shipping_method; schedule }
it { expect(helper.subscriptions_setup_complete?([shop])).to be false }
end
context "when a shop has no customers present" do
before { shipping_method; payment_method; schedule }
it { expect(helper.subscriptions_setup_complete?([shop])).to be false }
end
context "when a shop does not coordinate any schedules" do
before { customer; shipping_method; payment_method; }
it { expect(helper.subscriptions_setup_complete?([shop])).to be false }
end
context "when a shop meets all requirements" do
before { customer; shipping_method; payment_method; schedule }
let(:some_other_shop) { create(:distributor_enterprise) }
context "but it is not passed in" do
it { expect(helper.subscriptions_setup_complete?([some_other_shop])).to be false }
end
context "and it is passed in" do
it { expect(helper.subscriptions_setup_complete?([shop])).to be true }
end
context "and it is passed in with other shops that do not meet the requirements" do
it { expect(helper.subscriptions_setup_complete?([shop, some_other_shop])).to be true }
end
end
end
end