diff --git a/spec/features/settings/profile_spec.rb b/spec/features/settings/profile_spec.rb new file mode 100644 index 0000000..c54cffe --- /dev/null +++ b/spec/features/settings/profile_spec.rb @@ -0,0 +1,45 @@ +require 'rails_helper' + +RSpec.describe 'Profile settings', type: :feature do + let(:user) { create :user, cn: "mwahlberg" } + + before do + login_as user, :scope => :user + end + + feature "Update display name" do + before do + allow(user).to receive(:display_name).and_return("Mark") + allow_any_instance_of(User).to receive(:dn).and_return("cn=mwahlberg,ou=kosmos.org,cn=users,dc=kosmos,dc=org") + allow_any_instance_of(User).to receive(:ldap_entry).and_return({ + uid: user.cn, ou: user.ou, display_name: "Mark" + }) + end + + scenario 'fails with validation error' do + visit setting_path(:profile) + fill_in 'Display name', with: "M" + click_button "Save" + + expect(current_url).to eq(setting_url(:profile)) + expect(page).to have_field('Display name', with: 'M') + within ".error-msg" do + expect(page).to have_content("is too short") + end + end + + scenario 'works with valid input' do + expect(LdapManager::UpdateDisplayName).to receive(:call) + .with(user.dn, "Marky Mark").and_return(true) + + visit setting_path(:profile) + fill_in 'Display name', with: "Marky Mark" + click_button "Save" + + expect(current_url).to eq(setting_url(:profile)) + within ".flash-msg" do + expect(page).to have_content("Settings saved") + end + end + end +end