Fix bug in comment control hiding

The logic for showing/hiding the 'Show x more' control for messages made
some invalid assumptions, specifically regarding the content of the
_visibleMessages array.

This change adds a new function, _getHumanMessages, that is utilized in
the affected functions to prune the array down to its proper contents to
make the calculations about whether the control should be hidden and
what its labels should say much easier.

Bug: Issue 5749
Change-Id: I465fbff9c8deab0e2357461aa9bdf37e0e6a8299
This commit is contained in:
Kasper Nilsson
2017-03-09 14:24:34 -08:00
committed by Wyatt Allen
parent 537f74ee4f
commit 5da159ee8d
3 changed files with 66 additions and 31 deletions

View File

@@ -128,6 +128,20 @@ limitations under the License.
assert.isTrue(element.$.messageControlsContainer.hasAttribute('hidden'));
});
test('message count still respects non-automated on toggle', function() {
element.messages = _.times(10, randomMessage)
.concat(_.times(11, randomAutomated));
flushAsynchronousOperations();
assert.equal(element.$.oldMessagesBtn.innerText, 'Show 1 message');
assert.isFalse(element.$.messageControlsContainer.hasAttribute('hidden'));
MockInteractions.tap(element.$.automatedMessageToggle);
flushAsynchronousOperations();
assert.equal(element.$.oldMessagesBtn.innerText, 'Show 1 message');
assert.isFalse(element.$.messageControlsContainer.hasAttribute('hidden'));
});
test('show all messages respects expand', function() {
element.messages = _.times(10, randomAutomated)
.concat(_.times(11, randomMessage));
@@ -450,19 +464,34 @@ limitations under the License.
test('_getDelta', function() {
var messages = [randomMessage()];
assert.equal(element._getDelta(0, messages, false), 1);
assert.equal(element._getDelta(0, messages, true), 1);
assert.equal(element._getDelta([], messages, false), 1);
assert.equal(element._getDelta([], messages, true), 1);
messages = _.times(7, randomMessage);
assert.equal(element._getDelta(0, messages, false), 5);
assert.equal(element._getDelta(0, messages, true), 5);
assert.equal(element._getDelta([], messages, false), 5);
assert.equal(element._getDelta([], messages, true), 5);
messages = _.times(4, randomMessage)
.concat(_.times(2, randomAutomated))
.concat(_.times(3, randomMessage));
assert.equal(element._getDelta(2, messages, false), 5);
assert.equal(element._getDelta(2, messages, true), 7);
var dummyArr = _.times(2, randomMessage);
assert.equal(element._getDelta(dummyArr, messages, false), 5);
assert.equal(element._getDelta(dummyArr, messages, true), 7);
});
test('_getHumanMessages', function() {
assert.equal(
element._getHumanMessages(_.times(5, randomAutomated)).length, 0);
assert.equal(
element._getHumanMessages(_.times(5, randomMessage)).length, 5);
var messages = _.shuffle(_.times(5, randomMessage)
.concat(_.times(5, randomAutomated)));
messages = element._getHumanMessages(messages);
assert.equal(messages.length, 5);
assert.isFalse(element._hasAutomatedMessages(messages));
});
});
</script>