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
(cherry picked from commit fbe932e296)
This commit is contained in:
Paladox none
2017-04-26 21:36:06 +00:00
parent 09918293ed
commit aadfbd9a3f
4 changed files with 93 additions and 7 deletions

View File

@@ -79,7 +79,7 @@
},
save: function() {
if (!this.mutable || !this.hasUnsavedChanges) {
if (!this.hasUnsavedChanges) {
return Promise.resolve();
}
@@ -97,9 +97,9 @@
},
_maybeSetName: function() {
return this._hasNameChange ?
this.$.restAPI.setAccountName(this._account.name) :
Promise.resolve();
return this._hasNameChange && this.mutable ?
this.$.restAPI.setAccountName(this._account.name) :
Promise.resolve();
},
_maybeSetStatus: function() {

View File

@@ -168,5 +168,92 @@ limitations under the License.
});
});
});
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>

View File

@@ -118,11 +118,10 @@ limitations under the License.
<fieldset id="profile">
<gr-account-info
id="accountInfo"
mutable="{{_accountInfoMutable}}"
mutable="{{_accountNameMutable}}"
has-unsaved-changes="{{_accountInfoChanged}}"></gr-account-info>
<gr-button
on-tap="_handleSaveAccountInfo"
hidden$="[[!_accountInfoMutable]]"
disabled="[[!_accountInfoChanged]]">Save changes</gr-button>
</fieldset>
<h2

View File

@@ -48,7 +48,7 @@
type: Object,
value: function() { return {}; },
},
_accountInfoMutable: Boolean,
_accountNameMutable: Boolean,
_accountInfoChanged: Boolean,
_diffPrefs: Object,
_changeTableColumnsNotDisplayed: Array,