diff --git a/spec/controllers/admin/ip_blocks_controller_spec.rb b/spec/controllers/admin/ip_blocks_controller_spec.rb deleted file mode 100644 index 2e32db5a01..0000000000 --- a/spec/controllers/admin/ip_blocks_controller_spec.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Admin::IpBlocksController do - render_views - - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } - - before do - sign_in user, scope: :user - end - - describe 'GET #index' do - it 'returns http success' do - get :index - - expect(response).to have_http_status(:success) - end - end - - describe 'GET #new' do - it 'returns http success and renders view' do - get :new - - expect(response).to have_http_status(:success) - expect(response).to render_template(:new) - end - end - - describe 'POST #create' do - context 'with valid data' do - it 'creates a new ip block and redirects' do - expect do - post :create, params: { ip_block: { ip: '1.1.1.1', severity: 'no_access', expires_in: 1.day.to_i.to_s } } - end.to change(IpBlock, :count).by(1) - - expect(response).to redirect_to(admin_ip_blocks_path) - expect(flash.notice).to match(I18n.t('admin.ip_blocks.created_msg')) - end - end - - context 'with invalid data' do - it 'does not create new a ip block and renders new' do - expect do - post :create, params: { ip_block: { ip: '1.1.1.1' } } - end.to_not change(IpBlock, :count) - - expect(response).to have_http_status(:success) - expect(response).to render_template(:new) - end - end - end -end diff --git a/spec/system/admin/ip_blocks_spec.rb b/spec/system/admin/ip_blocks_spec.rb index 9c03520277..c101b8e1c6 100644 --- a/spec/system/admin/ip_blocks_spec.rb +++ b/spec/system/admin/ip_blocks_spec.rb @@ -5,20 +5,46 @@ require 'rails_helper' RSpec.describe 'Admin::IpBlocks' do let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } - before do - sign_in current_user + before { sign_in current_user } + + describe 'Creating an IP Block' do + it 'lists blocks and creates new ones' do + # Visit index page + visit admin_ip_blocks_path + expect(page) + .to have_content(I18n.t('admin.ip_blocks.title')) + + # Navigate to new + click_on I18n.t('admin.ip_blocks.add_new') + + # Invalid with missing IP + fill_in 'ip_block_ip', with: '' + expect { submit_form } + .to_not change(IpBlock, :count) + expect(page) + .to have_content(/error below/) + + # Valid with IP + fill_in 'ip_block_ip', with: '192.168.1.1' + expect { submit_form } + .to change(IpBlock, :count).by(1) + expect(page) + .to have_content(I18n.t('admin.ip_blocks.created_msg')) + end + + def submit_form + click_on I18n.t('admin.ip_blocks.add_new') + end end describe 'Performing batch updates' do - before do - visit admin_ip_blocks_path - end - context 'without selecting any records' do it 'displays a notice about selection' do - click_on button_for_delete + visit admin_ip_blocks_path - expect(page).to have_content(selection_error_text) + click_on button_for_delete + expect(page) + .to have_content(selection_error_text) end end