diff --git a/spec/controllers/admin/warning_presets_controller_spec.rb b/spec/controllers/admin/warning_presets_controller_spec.rb deleted file mode 100644 index d416b9c3cf1..00000000000 --- a/spec/controllers/admin/warning_presets_controller_spec.rb +++ /dev/null @@ -1,85 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Admin::WarningPresetsController do - render_views - - let(:user) { Fabricate(:admin_user) } - - 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 #edit' do - let(:account_warning_preset) { Fabricate(:account_warning_preset) } - - it 'returns http success and renders edit' do - get :edit, params: { id: account_warning_preset.id } - - expect(response).to have_http_status(:success) - expect(response).to render_template(:edit) - end - end - - describe 'POST #create' do - context 'with valid data' do - it 'creates a new account_warning_preset and redirects' do - expect do - post :create, params: { account_warning_preset: { text: 'The account_warning_preset text.' } } - end.to change(AccountWarningPreset, :count).by(1) - - expect(response).to redirect_to(admin_warning_presets_path) - end - end - - context 'with invalid data' do - it 'does creates a new account_warning_preset and renders index' do - expect do - post :create, params: { account_warning_preset: { text: '' } } - end.to_not change(AccountWarningPreset, :count) - - expect(response).to render_template(:index) - end - end - end - - describe 'PUT #update' do - let(:account_warning_preset) { Fabricate(:account_warning_preset, text: 'Original text') } - - context 'with valid data' do - it 'updates the account_warning_preset and redirects' do - put :update, params: { id: account_warning_preset.id, account_warning_preset: { text: 'Updated text.' } } - - expect(response).to redirect_to(admin_warning_presets_path) - end - end - - context 'with invalid data' do - it 'does not update the account_warning_preset and renders index' do - put :update, params: { id: account_warning_preset.id, account_warning_preset: { text: '' } } - - expect(response).to render_template(:edit) - end - end - end - - describe 'DELETE #destroy' do - let!(:account_warning_preset) { Fabricate(:account_warning_preset) } - - it 'destroys the account_warning_preset and redirects' do - delete :destroy, params: { id: account_warning_preset.id } - - expect { account_warning_preset.reload }.to raise_error(ActiveRecord::RecordNotFound) - expect(response).to redirect_to(admin_warning_presets_path) - end - end -end diff --git a/spec/system/admin/warning_presets_spec.rb b/spec/system/admin/warning_presets_spec.rb new file mode 100644 index 00000000000..f1ab6909812 --- /dev/null +++ b/spec/system/admin/warning_presets_spec.rb @@ -0,0 +1,81 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Admin Warning Presets' do + describe 'Managing warning presets' do + before { sign_in Fabricate(:admin_user) } + + describe 'Viewing warning presets' do + let!(:account_warning_preset) { Fabricate :account_warning_preset, text: 'This is a preset' } + + it 'lists existing records' do + visit admin_warning_presets_path + + expect(page) + .to have_content(I18n.t('admin.warning_presets.title')) + .and have_content(account_warning_preset.text) + end + end + + describe 'Creating a new account warning preset' do + it 'creates new record with valid attributes' do + visit admin_warning_presets_path + + # Invalid submission + fill_in 'account_warning_preset_text', with: '' + expect { submit_form } + .to_not change(AccountWarningPreset, :count) + expect(page) + .to have_content(/error below/) + + # Valid submission + fill_in 'account_warning_preset_text', with: 'You cant do that here' + expect { submit_form } + .to change(AccountWarningPreset, :count).by(1) + expect(page) + .to have_content(I18n.t('admin.warning_presets.title')) + end + + def submit_form + click_on I18n.t('admin.warning_presets.add_new') + end + end + + describe 'Editing an existing account warning preset' do + let!(:account_warning_preset) { Fabricate :account_warning_preset, text: 'Preset text' } + + it 'updates with valid attributes' do + visit admin_warning_presets_path + + # Invalid submission + click_on account_warning_preset.text + fill_in 'account_warning_preset_text', with: '' + expect { submit_form } + .to_not change(account_warning_preset.reload, :updated_at) + + # Valid update + fill_in 'account_warning_preset_text', with: 'Updated text' + expect { submit_form } + .to(change { account_warning_preset.reload.text }) + end + + def submit_form + click_on I18n.t('generic.save_changes') + end + end + + describe 'Destroy an account warning preset' do + let!(:account_warning_preset) { Fabricate :account_warning_preset } + + it 'removes the record' do + visit admin_warning_presets_path + + expect { click_on I18n.t('admin.warning_presets.delete') } + .to change(AccountWarningPreset, :count).by(-1) + expect { account_warning_preset.reload } + .to raise_error(ActiveRecord::RecordNotFound) + end + end + end +end