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:
@@ -79,7 +79,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
save: function() {
|
save: function() {
|
||||||
if (!this.mutable || !this.hasUnsavedChanges) {
|
if (!this.hasUnsavedChanges) {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,9 +97,9 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
_maybeSetName: function() {
|
_maybeSetName: function() {
|
||||||
return this._hasNameChange ?
|
return this._hasNameChange && this.mutable ?
|
||||||
this.$.restAPI.setAccountName(this._account.name) :
|
this.$.restAPI.setAccountName(this._account.name) :
|
||||||
Promise.resolve();
|
Promise.resolve();
|
||||||
},
|
},
|
||||||
|
|
||||||
_maybeSetStatus: function() {
|
_maybeSetStatus: function() {
|
||||||
|
|||||||
@@ -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>
|
</script>
|
||||||
|
|||||||
@@ -118,11 +118,10 @@ limitations under the License.
|
|||||||
<fieldset id="profile">
|
<fieldset id="profile">
|
||||||
<gr-account-info
|
<gr-account-info
|
||||||
id="accountInfo"
|
id="accountInfo"
|
||||||
mutable="{{_accountInfoMutable}}"
|
mutable="{{_accountNameMutable}}"
|
||||||
has-unsaved-changes="{{_accountInfoChanged}}"></gr-account-info>
|
has-unsaved-changes="{{_accountInfoChanged}}"></gr-account-info>
|
||||||
<gr-button
|
<gr-button
|
||||||
on-tap="_handleSaveAccountInfo"
|
on-tap="_handleSaveAccountInfo"
|
||||||
hidden$="[[!_accountInfoMutable]]"
|
|
||||||
disabled="[[!_accountInfoChanged]]">Save changes</gr-button>
|
disabled="[[!_accountInfoChanged]]">Save changes</gr-button>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<h2
|
<h2
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
type: Object,
|
type: Object,
|
||||||
value: function() { return {}; },
|
value: function() { return {}; },
|
||||||
},
|
},
|
||||||
_accountInfoMutable: Boolean,
|
_accountNameMutable: Boolean,
|
||||||
_accountInfoChanged: Boolean,
|
_accountInfoChanged: Boolean,
|
||||||
_diffPrefs: Object,
|
_diffPrefs: Object,
|
||||||
_changeTableColumnsNotDisplayed: Array,
|
_changeTableColumnsNotDisplayed: Array,
|
||||||
|
|||||||
Reference in New Issue
Block a user