Allows editing contact emails in PolyGerrit account settings
Adds a new section to the PolyGerrit settings screen to edit a user's
contact email addresses. The user may add new addresses, remove
addresses and choose which among their addresses is "preferred".
Bug: Issue 3911
Change-Id: Id612762bef52cd1c1b35fdabe6671ecaf349d6b5
diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html
index 8c063df..c85dbef 100644
--- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html
+++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html
@@ -63,6 +63,11 @@
}
}
+ function stubAddAccountEmail(statusCode) {
+ return sinon.stub(element.$.restAPI, 'addAccountEmail',
+ function() { return Promise.resolve({ status: statusCode }); });
+ }
+
setup(function(done) {
account = {
_account_id: 123,
@@ -109,6 +114,7 @@
getWatchedProjects: function() {
return Promise.resolve(watchedProjects);
},
+ getAccountEmails: function() { return Promise.resolve([]); },
});
element = fixture('basic');
@@ -254,5 +260,67 @@
done();
});
});
+
+ test('add email validation', function() {
+ assert.isFalse(element._isNewEmailValid('invalid email'));
+ assert.isTrue(element._isNewEmailValid('vaguely@valid.email'));
+
+ assert.isFalse(
+ element._computeAddEmailButtonEnabled('invalid email'), true);
+ assert.isFalse(
+ element._computeAddEmailButtonEnabled('vaguely@valid.email', true));
+ assert.isTrue(
+ element._computeAddEmailButtonEnabled('vaguely@valid.email', false));
+ });
+
+ test('add email does not save invalid', function() {
+ var addEmailStub = stubAddAccountEmail(201);
+
+ assert.isFalse(element._addingEmail);
+ assert.isNotOk(element._lastSentVerificationEmail);
+ element._newEmail = 'invalid email';
+
+ element._handleAddEmailButton();
+
+ assert.isFalse(element._addingEmail);
+ assert.isFalse(addEmailStub.called);
+ assert.isNotOk(element._lastSentVerificationEmail);
+
+ assert.isFalse(addEmailStub.called);
+ });
+
+ test('add email does save valid', function(done) {
+ var addEmailStub = stubAddAccountEmail(201);
+
+ assert.isFalse(element._addingEmail);
+ assert.isNotOk(element._lastSentVerificationEmail);
+ element._newEmail = 'valid@email.com';
+
+ element._handleAddEmailButton();
+
+ assert.isTrue(element._addingEmail);
+ assert.isTrue(addEmailStub.called);
+
+ assert.isTrue(addEmailStub.called);
+ addEmailStub.lastCall.returnValue.then(function() {
+ assert.isOk(element._lastSentVerificationEmail);
+ done();
+ });
+ });
+
+ test('add email does not set last-email if error', function(done) {
+ var addEmailStub = stubAddAccountEmail(500);
+
+ assert.isNotOk(element._lastSentVerificationEmail);
+ element._newEmail = 'valid@email.com';
+
+ element._handleAddEmailButton();
+
+ assert.isTrue(addEmailStub.called);
+ addEmailStub.lastCall.returnValue.then(function() {
+ assert.isNotOk(element._lastSentVerificationEmail);
+ done();
+ });
+ });
});
</script>