require 'spec_helper'

module Api
  describe EnterpriseFeesController, type: :controller do
    include AuthenticationWorkflow

    let!(:unreferenced_fee) { create(:enterprise_fee) }
    let!(:referenced_fee) { create(:enterprise_fee) }
    let(:product) { create(:product) }
    let(:distributor) { create(:distributor_enterprise) }
    let!(:product_distribution) { create(:product_distribution, product: product, distributor: distributor, enterprise_fee: referenced_fee) }
    let(:current_user) { create(:admin_user) }

    before do
      allow(controller).to receive(:spree_current_user) { current_user }
    end

    describe "destroy" do
      it "removes the fee" do
        expect { spree_delete :destroy, id: unreferenced_fee.id, format: :json }
          .to change { EnterpriseFee.count }.by -1
      end

      context "when the fee is referenced by a product distribution" do
        it "does not remove the fee" do
          spree_delete :destroy, id: referenced_fee.id, format: :json
          expect(response.status).to eq 403
          expect(response.body).to match(/That enterprise fee cannot be deleted/)
          expect(referenced_fee.reload).to eq(referenced_fee)
        end
      end
    end
  end
end

Add specs for new Api::EnterpriseFeesController
Add specs for new Api::EnterpriseFeesController
