Commit 4084096a authored by Jimmy Gong's avatar Jimmy Gong Committed by Commit Bot

Refactor CupsPrinterEntryTests

- Refactor the tests to be able to verify visible and
  filtered printers separately.
- CupsPrinterEntryList's tests are now easier to follow with
  their actual vs expected printer list comparisons.

Bug: 965721
Test: browsertests
Change-Id: Iffdda03fa5e2f5b6ecb6aa309bf91657db27a807
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1820028
Commit-Queue: jimmy gong <jimmyxgong@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarBailey Berro <baileyberro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700482}
parent 5d158333
......@@ -5,11 +5,17 @@
/**
* Helper function to verify that printers in |printerListEntries| that contain
* |searchTerm| are not in |hiddenEntries|.
* @param {!Element} printerListEntries
* @param {!Element} hiddenEntries
* @param {!Element} printerEntryListTestElement
* @param {string} searchTerm
*/
function verifyFilteredPrinters(printerListEntries, hiddenEntries, searchTerm) {
function verifyFilteredPrinters(printerEntryListTestElement, searchTerm) {
const printerListEntries = Array.from(
printerEntryListTestElement.$.printerEntryList.querySelectorAll(
'settings-cups-printers-entry'));
const hiddenEntries = Array.from(
printerEntryListTestElement.$.printerEntryList.querySelectorAll(
'settings-cups-printers-entry[hidden]'));
for (let i = 0; i < printerListEntries.length; ++i) {
const entry = printerListEntries[i];
if (hiddenEntries.indexOf(entry) == -1) {
......@@ -20,32 +26,47 @@ function verifyFilteredPrinters(printerListEntries, hiddenEntries, searchTerm) {
}
}
/**
* Helper function to verify that the actual visible printers match the
* expected printer list.
* @param {!Element} printerEntryListTestElement
* @param {!Array<!PrinterListEntry>} expectedVisiblePrinters
*/
function verifyVisiblePrinters(
printerEntryListTestElement, expectedVisiblePrinters) {
const actualPrinterList = Array.from(
printerEntryListTestElement.$.printerEntryList.querySelectorAll(
'settings-cups-printers-entry:not([hidden])'));
assertEquals(expectedVisiblePrinters.length, actualPrinterList.length);
for (let i = 0; i < expectedVisiblePrinters.length; i++) {
const expectedPrinter = expectedVisiblePrinters[i].printerInfo;
const actualPrinter = actualPrinterList[i].printerEntry.printerInfo;
assertEquals(actualPrinter.printerName, expectedPrinter.printerName);
assertEquals(actualPrinter.printerAddress, expectedPrinter.printerAddress);
assertEquals(actualPrinter.printerId, expectedPrinter.printerId);
}
}
/**
* Helper function to verify that printers are hidden accordingly if they do not
* match the search query. Also checks if the no search results section is shown
* when appropriate.
* @param {!Element} printerEntryListTestElement
* @param {!Array<!PrinterListEntry>} expectedVisiblePrinters
* @param {string} searchTerm
* @param {number} expectedNumVisiblePrinters
*/
function verifySearchQueryResults(
printerEntryListTestElement, searchTerm, expectedNumVisiblePrinters) {
printerEntryListTestElement, expectedVisiblePrinters, searchTerm) {
printerEntryListTestElement.searchTerm = searchTerm;
Polymer.dom.flush();
let printerListEntries = Array.from(
printerEntryListTestElement.$.printerEntryList.querySelectorAll(
'settings-cups-printers-entry'));
let hiddenEntries = Array.from(
printerEntryListTestElement.$.printerEntryList.querySelectorAll(
'settings-cups-printers-entry[hidden]'));
verifyVisiblePrinters(printerEntryListTestElement, expectedVisiblePrinters);
verifyFilteredPrinters(printerEntryListTestElement, searchTerm);
assertEquals(
expectedNumVisiblePrinters,
printerListEntries.length - hiddenEntries.length);
verifyFilteredPrinters(printerListEntries, hiddenEntries, searchTerm);
if (expectedNumVisiblePrinters) {
if (expectedVisiblePrinters.length) {
assertTrue(printerEntryListTestElement.$$('#no-search-results').hidden);
} else {
assertFalse(printerEntryListTestElement.$$('#no-search-results').hidden);
......@@ -160,6 +181,12 @@ suite('CupsPrinterEntryList', function() {
*/
let printerEntryListTestElement = null;
/** @type {?Array<!PrinterListEntry>} */
let printerList = [];
/** @type {string} */
let searchTerm = '';
setup(function() {
PolymerTest.clearBody();
printerEntryListTestElement =
......@@ -171,6 +198,8 @@ suite('CupsPrinterEntryList', function() {
teardown(function() {
printerEntryListTestElement.remove();
printerEntryListTestElement = null;
printerList = [];
searchTerm = '';
});
/**
......@@ -212,81 +241,90 @@ suite('CupsPrinterEntryList', function() {
test('SearchTermFiltersCorrectPrinters', function() {
printerEntryListTestElement.push(
'printers',
createPrinterListEntry('test1', '123', '1', PrinterType.SAVED));
createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED));
printerEntryListTestElement.push(
'printers',
createPrinterListEntry('test2', '123', '2', PrinterType.SAVED));
createPrinterListEntry('test2', 'address', '2', PrinterType.SAVED));
printerEntryListTestElement.push(
'printers',
createPrinterListEntry('google', '123', '3', PrinterType.SAVED));
createPrinterListEntry('google', 'address', '3', PrinterType.SAVED));
Polymer.dom.flush();
let printerListEntries =
printerEntryListTestElement.shadowRoot.querySelectorAll(
'settings-cups-printers-entry');
assertEquals(3, printerListEntries.length);
verifyVisiblePrinters(printerEntryListTestElement, [
createPrinterListEntry('google', 'address', '3', PrinterType.SAVED),
createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED),
createPrinterListEntry('test2', 'address', '2', PrinterType.SAVED)
]);
let searchTerm = 'google';
searchTerm = 'google';
// Set the search term and filter out the printers. Filtering "google"
// should result in one visible entry and two hidden entries.
verifySearchQueryResults(
printerEntryListTestElement, searchTerm,
1 /* expectedNumVisiblePrinters */);
printerEntryListTestElement,
[createPrinterListEntry('google', 'address', '3', PrinterType.SAVED)],
searchTerm);
// Change the search term and assert that entries are filtered correctly.
// Filtering "test" should result in two visible entries and one hidden
// entry.
searchTerm = 'test';
verifySearchQueryResults(
printerEntryListTestElement, searchTerm,
2 /* expectedNumVisiblePrinters */);
printerEntryListTestElement,
[
createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED),
createPrinterListEntry('test2', 'address', '2', PrinterType.SAVED)
],
searchTerm);
// Add more printers and assert that they are correctly filtered.
printerEntryListTestElement.push(
'printers',
createPrinterListEntry('test3', '123', '4', PrinterType.SAVED));
createPrinterListEntry('test3', 'address', '4', PrinterType.SAVED));
printerEntryListTestElement.push(
'printers',
createPrinterListEntry('google2', '123', '5', PrinterType.SAVED));
createPrinterListEntry('google2', 'address', '5', PrinterType.SAVED));
Polymer.dom.flush();
verifySearchQueryResults(
printerEntryListTestElement, searchTerm,
3 /* expectedNumVisiblePrinters */);
printerEntryListTestElement,
[
createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED),
createPrinterListEntry('test2', 'address', '2', PrinterType.SAVED),
createPrinterListEntry('test3', 'address', '4', PrinterType.SAVED)
],
searchTerm);
});
test('NoSearchFound', function() {
printerEntryListTestElement.push(
'printers',
createPrinterListEntry('test1', '123', '1', PrinterType.SAVED));
createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED));
printerEntryListTestElement.push(
'printers',
createPrinterListEntry('google', '123', '2', PrinterType.SAVED));
createPrinterListEntry('google', 'address', '2', PrinterType.SAVED));
Polymer.dom.flush();
let searchTerm = 'google';
searchTerm = 'google';
// Set the search term and filter out the printers. Filtering "google"
// should result in one visible entry and two hidden entries.
verifySearchQueryResults(
printerEntryListTestElement, searchTerm,
1 /* expectedNumVisiblePrinters */);
printerEntryListTestElement,
[createPrinterListEntry('google', 'address', '2', PrinterType.SAVED)],
searchTerm);
// Change search term to something that has no matches.
searchTerm = 'noSearchFound';
verifySearchQueryResults(
printerEntryListTestElement, searchTerm,
0 /* expectedNumVisiblePrinters */);
verifySearchQueryResults(printerEntryListTestElement, [], searchTerm);
// Change search term back to "google" and verify that the No search found
// message is no longer there.
searchTerm = 'google';
verifySearchQueryResults(
printerEntryListTestElement, searchTerm,
1 /* expectedNumVisiblePrinters */);
printerEntryListTestElement,
[createPrinterListEntry('google', 'address', '2', PrinterType.SAVED)],
searchTerm);
});
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment