Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/user_spec.rb')
-rw-r--r--spec/models/user_spec.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 08f58e6d069..45f0144f68e 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -379,6 +379,44 @@ describe User do
user.update_attributes!(email: 'shawnee.ritchie@denesik.com')
end
end
+
+ describe '#update_emails_with_primary_email' do
+ before do
+ @user = create(:user, email: 'primary@example.com').tap do |user|
+ user.skip_reconfirmation!
+ end
+ @secondary = create :email, email: 'secondary@example.com', user: @user
+ @user.reload
+ end
+
+ it 'gets called when email updated' do
+ expect(@user).to receive(:update_emails_with_primary_email)
+ @user.update_attributes!(email: 'new_primary@example.com')
+ end
+
+ it 'does not add old primary to secondary emails' do
+ @user.update_attributes!(email: 'new_primary@example.com')
+ @user.reload
+ expect(@user.emails.count).to eq 1
+ expect(@user.emails.first.email).to eq @secondary.email
+ end
+
+ it 'adds old primary to secondary emails if secondary is becoming a primary' do
+ @user.update_attributes!(email: @secondary.email)
+ @user.reload
+ expect(@user.emails.count).to eq 1
+ expect(@user.emails.first.email).to eq 'primary@example.com'
+ end
+
+ it 'transfers old confirmation values into new secondary' do
+ org_user = @user
+ @user.update_attributes!(email: @secondary.email)
+ @user.reload
+ expect(@user.emails.count).to eq 1
+ expect(@user.emails.first.confirmed_at).not_to eq nil
+ end
+ end
+
end
describe '#update_tracked_fields!', :clean_gitlab_redis_shared_state do