# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
require 'rails_helper'
require 'controllers/support/shared_user_context'
require 'controllers/support/new_controller_user_context'
require 'support/contexts/shared_donation_charge_context'

describe Nonprofits::DonationsController, :type => :controller do

  describe 'rejects unauthenticated users' do
    describe 'index' do
      include_context :shared_user_context
      include_context :open_to_np_associate, :get, :index, nonprofit_id: :__our_np
    end



    describe 'update' do
      include_context :shared_user_context
      include_context :open_to_np_associate, :put, :update, nonprofit_id: :__our_np
    end


  end
  describe 'accept all users' do
    describe 'create' do
      include_context :open_to_all, :get, :create, nonprofit_id: :__our_np
    end

    describe 'follow up' do
      include_context :open_to_all, :put, :followup, nonprofit_id: :__our_np
    end
  end
end

describe 'Nonprofits::DonationsController::create_offsite', :type => :request do
  describe 'create_offsite' do
    include_context :shared_donation_charge_context
    include_context :new_controller_user_context

    it 'reject non-campaign editors (and np authorized folks)' do
      run_authorization_tests({method: :post, action: "/nonprofits/#{nonprofit.id}/donations/create_offsite",
                               successful_users:  roles__open_to_campaign_editor}) do |_|
        {nonprofit_id: nonprofit.id,
         donation: {campaign_id: campaign.id}}
      end
    end
    #include_context :open_to_np_associate, :post, :create_offsite, nonprofit_id: :__our_np
  end
end