diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 7569a49..0c1639e 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -64,6 +64,7 @@ def update # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/Cycl email = @model.emails.find_by(address: address) email.primary = true + email.confirm email.save email = @model.emails.find_by(address: old_email) return if email.nil? diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb index 3387c88..491f9e4 100644 --- a/spec/controllers/admin/users_controller_spec.rb +++ b/spec/controllers/admin/users_controller_spec.rb @@ -510,6 +510,33 @@ 'type="hidden" name="custom_data[Has pets]" id="custom_data_Has_pets" value="false"' ) end + + it "can edit a user's primary email and it gets confirmed" do + expect(user.emails.first.address).to eq('user@localhost') + expect(user.emails.first.confirmed?).to be_truthy + post(:update, params: { id: user.id, user: { email: 'user2@localhost' } }) + user.reload + expect(user.emails.first.address).to eq('user2@localhost') + expect(user.emails.first.confirmed?).to be_truthy + end + + it "can edit a user's additional emails and it gets confirmed" do + first = user.emails.order(created_at: :asc).first + + expect(first.address).to eq('user@localhost') + expect(first.confirmed?).to be_truthy + post(:update, params: { id: user.id, user: { + email: user.emails.first.address, email_addresses: ['user2@localhost'] + } }) + user.reload + + first = user.emails.order(created_at: :asc).first + last = user.emails.order(created_at: :asc).last + expect(first.address).to eq('user@localhost') + expect(first.confirmed?).to be_truthy + expect(last.address).to eq('user2@localhost') + expect(last.confirmed?).to be_truthy + end end it 'can expire a user' do expect(user.expired?).to be false