PolyGerrit: Allow status editing when full name is not editable
LDAP installs would not allow editing the status when full name was not
editable.
Bug: Issue 6080
Change-Id: Ifd53448891607908af9600b3ab61df4771304da9
diff --git a/polygerrit-ui/app/elements/settings/gr-account-info/gr-account-info_test.html b/polygerrit-ui/app/elements/settings/gr-account-info/gr-account-info_test.html
index 8f4e89d..cf35450 100644
--- a/polygerrit-ui/app/elements/settings/gr-account-info/gr-account-info_test.html
+++ b/polygerrit-ui/app/elements/settings/gr-account-info/gr-account-info_test.html
@@ -168,5 +168,92 @@
});
});
});
+
+ suite('edit name and status', function() {
+ var nameChangedSpy;
+ var statusChangedSpy;
+ var nameStub;
+ var statusStub;
+
+ setup(function() {
+ nameChangedSpy = sandbox.spy(element, '_nameChanged');
+ statusChangedSpy = sandbox.spy(element, '_statusChanged');
+ element.set('_serverConfig',
+ {auth: {editable_account_fields: ['FULL_NAME']}});
+
+ nameStub = sandbox.stub(element.$.restAPI, 'setAccountName',
+ function(name) { return Promise.resolve(); });
+ statusStub = sandbox.stub(element.$.restAPI, 'setAccountStatus',
+ function(status) { return Promise.resolve(); });
+ });
+
+ test('set name and status', function(done) {
+ assert.isTrue(element.mutable);
+ assert.isFalse(element.hasUnsavedChanges);
+
+ element.set('_account.name', 'new name');
+
+ assert.isTrue(nameChangedSpy.called);
+
+ element.set('_account.status', 'new status');
+
+ assert.isTrue(statusChangedSpy.called);
+
+ assert.isTrue(element.hasUnsavedChanges);
+
+ element.save().then(function() {
+ assert.isTrue(statusStub.called);
+ assert.isTrue(nameStub.called);
+
+ assert.equal(nameStub.lastCall.args[0], 'new name');
+
+ assert.equal(statusStub.lastCall.args[0], 'new status');
+
+ done();
+ });
+ });
+ });
+
+ suite('set status but read name', function() {
+ var statusChangedSpy;
+ var statusStub;
+
+ setup(function() {
+ statusChangedSpy = sandbox.spy(element, '_statusChanged');
+ element.set('_serverConfig',
+ {auth: {editable_account_fields: []}});
+
+ statusStub = sandbox.stub(element.$.restAPI, 'setAccountStatus',
+ function(status) { return Promise.resolve(); });
+ });
+
+ test('read full name but set status', function(done) {
+ var section = element.$.nameSection;
+ var displaySpan = section.querySelectorAll('.value')[0];
+ var inputSpan = section.querySelectorAll('.value')[1];
+
+ assert.isFalse(element.mutable);
+
+ assert.isFalse(element.hasUnsavedChanges);
+
+ assert.isFalse(displaySpan.hasAttribute('hidden'));
+ assert.equal(displaySpan.textContent, account.name);
+ assert.isTrue(inputSpan.hasAttribute('hidden'));
+
+ element.set('_account.status', 'new status');
+
+ assert.isTrue(statusChangedSpy.called);
+
+ assert.isTrue(element.hasUnsavedChanges);
+
+ element.save().then(function() {
+ assert.isTrue(statusStub.called);
+ statusStub.lastCall.returnValue.then(function() {
+ assert.equal(statusStub.lastCall.args[0], 'new status');
+ done();
+ });
+ });
+ });
+ });
});
</script>