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