From 3d00b9535996ec48eea1d0b0df40cfa60d55bc01 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 16 Dec 2024 03:11:48 -0500 Subject: [PATCH] Convert `settings/profiles` controller spec to system spec (#33305) --- .../settings/profiles_controller_spec.rb | 51 ------------------- spec/system/settings/profiles_spec.rb | 37 ++++++++++++++ 2 files changed, 37 insertions(+), 51 deletions(-) delete mode 100644 spec/controllers/settings/profiles_controller_spec.rb create mode 100644 spec/system/settings/profiles_spec.rb diff --git a/spec/controllers/settings/profiles_controller_spec.rb b/spec/controllers/settings/profiles_controller_spec.rb deleted file mode 100644 index e3197f0a6d..0000000000 --- a/spec/controllers/settings/profiles_controller_spec.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Settings::ProfilesController do - render_views - - let!(:user) { Fabricate(:user) } - let(:account) { user.account } - - before do - sign_in user, scope: :user - end - - describe 'GET #show' do - before do - get :show - end - - it 'returns http success with private cache control headers', :aggregate_failures do - expect(response).to have_http_status(200) - expect(response.headers['Cache-Control']).to include('private, no-store') - end - end - - describe 'PUT #update' do - before do - user.account.update(display_name: 'Old name') - end - - it 'updates the user profile' do - allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) - put :update, params: { account: { display_name: 'New name' } } - expect(account.reload.display_name).to eq 'New name' - expect(response).to redirect_to(settings_profile_path) - expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id) - end - end - - describe 'PUT #update with new profile image' do - it 'updates profile image' do - allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) - expect(account.avatar.instance.avatar_file_name).to be_nil - - put :update, params: { account: { avatar: fixture_file_upload('avatar.gif', 'image/gif') } } - expect(response).to redirect_to(settings_profile_path) - expect(account.reload.avatar.instance.avatar_file_name).to_not be_nil - expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id) - end - end -end diff --git a/spec/system/settings/profiles_spec.rb b/spec/system/settings/profiles_spec.rb new file mode 100644 index 0000000000..73a5751141 --- /dev/null +++ b/spec/system/settings/profiles_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Settings profile page' do + let(:user) { Fabricate :user } + let(:account) { user.account } + + before do + allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) + sign_in user + end + + it 'Views and updates profile information' do + visit settings_profile_path + + expect(page) + .to have_private_cache_control + + fill_in display_name_field, with: 'New name' + attach_file avatar_field, Rails.root.join('spec', 'fixtures', 'files', 'avatar.gif') + + expect { click_on submit_button } + .to change { account.reload.display_name }.to('New name') + .and(change { account.reload.avatar.instance.avatar_file_name }.from(nil).to(be_present)) + expect(ActivityPub::UpdateDistributionWorker) + .to have_received(:perform_async).with(account.id) + end + + def display_name_field + I18n.t('simple_form.labels.defaults.display_name') + end + + def avatar_field + I18n.t('simple_form.labels.defaults.avatar') + end +end