diff --git a/spec/system/account_notes_spec.rb b/spec/system/account_notes_spec.rb new file mode 100644 index 0000000000..f8be96be86 --- /dev/null +++ b/spec/system/account_notes_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Account notes', :inline_jobs, :js, :streaming do + include ProfileStories + + let(:email) { 'test@example.com' } + let(:password) { 'password' } + let(:confirmed_at) { Time.zone.now } + let(:finished_onboarding) { true } + + let!(:other_account) { Fabricate(:account) } + + before { as_a_logged_in_user } + + it 'can be written and viewed' do + visit_profile(other_account) + + note_text = 'This is a personal note' + fill_in 'Click to add note', with: note_text + + # This is a bit awkward since there is no button to save the change + # The easiest way is to send ctrl+enter ourselves + find_field(class: 'account__header__account-note__content').send_keys [:control, :enter] + + expect(page) + .to have_css('.account__header__account-note .inline-alert', text: 'SAVED') + + expect(page) + .to have_css('.account__header__account-note__content', text: note_text) + + # Navigate back and forth and ensure the comment is still here + visit root_url + visit_profile(other_account) + + expect(AccountNote.find_by(account: bob.account, target_account: other_account).comment) + .to eq note_text + + expect(page) + .to have_css('.account__header__account-note__content', text: note_text) + end + + def visit_profile(account) + visit short_account_path(account) + + expect(page) + .to have_css('div.app-holder') + .and have_css('form.compose-form') + end +end