82 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require 'rails_helper'
 | 
						|
 | 
						|
RSpec.describe 'FASP Management', feature: :fasp do
 | 
						|
  include ProviderRequestHelper
 | 
						|
 | 
						|
  before { sign_in Fabricate(:admin_user) }
 | 
						|
 | 
						|
  describe 'Managing capabilities' do
 | 
						|
    let!(:provider) { Fabricate(:confirmed_fasp) }
 | 
						|
    let!(:enable_call) do
 | 
						|
      stub_provider_request(provider,
 | 
						|
                            method: :post,
 | 
						|
                            path: '/capabilities/callback/0/activation')
 | 
						|
    end
 | 
						|
    let!(:disable_call) do
 | 
						|
      stub_provider_request(provider,
 | 
						|
                            method: :delete,
 | 
						|
                            path: '/capabilities/callback/0/activation')
 | 
						|
    end
 | 
						|
 | 
						|
    before do
 | 
						|
      # We currently err on the side of caution and prefer to send
 | 
						|
      # a "disable capability" call too often over risking to miss
 | 
						|
      # one. So the following call _can_ happen here, and if it does
 | 
						|
      # that is fine, but it has no bearing on the behavior that is
 | 
						|
      # being tested.
 | 
						|
      stub_provider_request(provider,
 | 
						|
                            method: :delete,
 | 
						|
                            path: '/capabilities/data_sharing/0/activation')
 | 
						|
    end
 | 
						|
 | 
						|
    it 'allows enabling and disabling of capabilities' do
 | 
						|
      visit admin_fasp_providers_path
 | 
						|
 | 
						|
      expect(page).to have_css('h2', text: I18n.t('admin.fasp.providers.title'))
 | 
						|
      expect(page).to have_css('td', text: provider.name)
 | 
						|
 | 
						|
      click_on I18n.t('admin.fasp.providers.edit')
 | 
						|
 | 
						|
      expect(page).to have_css('h2', text: I18n.t('admin.fasp.providers.edit'))
 | 
						|
 | 
						|
      check 'callback'
 | 
						|
 | 
						|
      click_on I18n.t('admin.fasp.providers.save')
 | 
						|
 | 
						|
      expect(page).to have_css('h2', text: I18n.t('admin.fasp.providers.title'))
 | 
						|
      expect(provider.reload).to be_capability_enabled('callback')
 | 
						|
      expect(enable_call).to have_been_requested
 | 
						|
 | 
						|
      click_on I18n.t('admin.fasp.providers.edit')
 | 
						|
 | 
						|
      expect(page).to have_css('h2', text: I18n.t('admin.fasp.providers.edit'))
 | 
						|
 | 
						|
      uncheck 'callback'
 | 
						|
 | 
						|
      click_on I18n.t('admin.fasp.providers.save')
 | 
						|
 | 
						|
      expect(page).to have_css('h2', text: I18n.t('admin.fasp.providers.title'))
 | 
						|
      expect(provider.reload).to_not be_capability_enabled('callback')
 | 
						|
      expect(disable_call).to have_been_requested
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  describe 'Removing a provider' do
 | 
						|
    let!(:provider) { Fabricate(:fasp_provider) }
 | 
						|
 | 
						|
    it 'allows to completely remove a provider' do
 | 
						|
      visit admin_fasp_providers_path
 | 
						|
 | 
						|
      expect(page).to have_css('h2', text: I18n.t('admin.fasp.providers.title'))
 | 
						|
      expect(page).to have_css('td', text: provider.name)
 | 
						|
 | 
						|
      click_on I18n.t('admin.fasp.providers.delete')
 | 
						|
 | 
						|
      expect(page).to have_css('h2', text: I18n.t('admin.fasp.providers.title'))
 | 
						|
      expect(page).to have_no_css('td', text: provider.name)
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |