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 @@ ...@@ -5,11 +5,17 @@
/** /**
* Helper function to verify that printers in |printerListEntries| that contain * Helper function to verify that printers in |printerListEntries| that contain
* |searchTerm| are not in |hiddenEntries|. * |searchTerm| are not in |hiddenEntries|.
* @param {!Element} printerListEntries * @param {!Element} printerEntryListTestElement
* @param {!Element} hiddenEntries
* @param {string} searchTerm * @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) { for (let i = 0; i < printerListEntries.length; ++i) {
const entry = printerListEntries[i]; const entry = printerListEntries[i];
if (hiddenEntries.indexOf(entry) == -1) { if (hiddenEntries.indexOf(entry) == -1) {
...@@ -20,32 +26,47 @@ function verifyFilteredPrinters(printerListEntries, hiddenEntries, searchTerm) { ...@@ -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 * 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 * match the search query. Also checks if the no search results section is shown
* when appropriate. * when appropriate.
* @param {!Element} printerEntryListTestElement * @param {!Element} printerEntryListTestElement
* @param {!Array<!PrinterListEntry>} expectedVisiblePrinters
* @param {string} searchTerm * @param {string} searchTerm
* @param {number} expectedNumVisiblePrinters
*/ */
function verifySearchQueryResults( function verifySearchQueryResults(
printerEntryListTestElement, searchTerm, expectedNumVisiblePrinters) { printerEntryListTestElement, expectedVisiblePrinters, searchTerm) {
printerEntryListTestElement.searchTerm = searchTerm; printerEntryListTestElement.searchTerm = searchTerm;
Polymer.dom.flush(); Polymer.dom.flush();
let printerListEntries = Array.from( verifyVisiblePrinters(printerEntryListTestElement, expectedVisiblePrinters);
printerEntryListTestElement.$.printerEntryList.querySelectorAll( verifyFilteredPrinters(printerEntryListTestElement, searchTerm);
'settings-cups-printers-entry'));
let hiddenEntries = Array.from(
printerEntryListTestElement.$.printerEntryList.querySelectorAll(
'settings-cups-printers-entry[hidden]'));
assertEquals( if (expectedVisiblePrinters.length) {
expectedNumVisiblePrinters,
printerListEntries.length - hiddenEntries.length);
verifyFilteredPrinters(printerListEntries, hiddenEntries, searchTerm);
if (expectedNumVisiblePrinters) {
assertTrue(printerEntryListTestElement.$$('#no-search-results').hidden); assertTrue(printerEntryListTestElement.$$('#no-search-results').hidden);
} else { } else {
assertFalse(printerEntryListTestElement.$$('#no-search-results').hidden); assertFalse(printerEntryListTestElement.$$('#no-search-results').hidden);
...@@ -160,6 +181,12 @@ suite('CupsPrinterEntryList', function() { ...@@ -160,6 +181,12 @@ suite('CupsPrinterEntryList', function() {
*/ */
let printerEntryListTestElement = null; let printerEntryListTestElement = null;
/** @type {?Array<!PrinterListEntry>} */
let printerList = [];
/** @type {string} */
let searchTerm = '';
setup(function() { setup(function() {
PolymerTest.clearBody(); PolymerTest.clearBody();
printerEntryListTestElement = printerEntryListTestElement =
...@@ -171,6 +198,8 @@ suite('CupsPrinterEntryList', function() { ...@@ -171,6 +198,8 @@ suite('CupsPrinterEntryList', function() {
teardown(function() { teardown(function() {
printerEntryListTestElement.remove(); printerEntryListTestElement.remove();
printerEntryListTestElement = null; printerEntryListTestElement = null;
printerList = [];
searchTerm = '';
}); });
/** /**
...@@ -212,81 +241,90 @@ suite('CupsPrinterEntryList', function() { ...@@ -212,81 +241,90 @@ suite('CupsPrinterEntryList', function() {
test('SearchTermFiltersCorrectPrinters', function() { test('SearchTermFiltersCorrectPrinters', function() {
printerEntryListTestElement.push( printerEntryListTestElement.push(
'printers', 'printers',
createPrinterListEntry('test1', '123', '1', PrinterType.SAVED)); createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED));
printerEntryListTestElement.push( printerEntryListTestElement.push(
'printers', 'printers',
createPrinterListEntry('test2', '123', '2', PrinterType.SAVED)); createPrinterListEntry('test2', 'address', '2', PrinterType.SAVED));
printerEntryListTestElement.push( printerEntryListTestElement.push(
'printers', 'printers',
createPrinterListEntry('google', '123', '3', PrinterType.SAVED)); createPrinterListEntry('google', 'address', '3', PrinterType.SAVED));
Polymer.dom.flush(); Polymer.dom.flush();
let printerListEntries = verifyVisiblePrinters(printerEntryListTestElement, [
printerEntryListTestElement.shadowRoot.querySelectorAll( createPrinterListEntry('google', 'address', '3', PrinterType.SAVED),
'settings-cups-printers-entry'); createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED),
createPrinterListEntry('test2', 'address', '2', PrinterType.SAVED)
assertEquals(3, printerListEntries.length); ]);
let searchTerm = 'google'; searchTerm = 'google';
// Set the search term and filter out the printers. Filtering "google" // Set the search term and filter out the printers. Filtering "google"
// should result in one visible entry and two hidden entries. // should result in one visible entry and two hidden entries.
verifySearchQueryResults( verifySearchQueryResults(
printerEntryListTestElement, searchTerm, printerEntryListTestElement,
1 /* expectedNumVisiblePrinters */); [createPrinterListEntry('google', 'address', '3', PrinterType.SAVED)],
searchTerm);
// Change the search term and assert that entries are filtered correctly. // Change the search term and assert that entries are filtered correctly.
// Filtering "test" should result in two visible entries and one hidden // Filtering "test" should result in two visible entries and one hidden
// entry. // entry.
searchTerm = 'test'; searchTerm = 'test';
verifySearchQueryResults( verifySearchQueryResults(
printerEntryListTestElement, searchTerm, printerEntryListTestElement,
2 /* expectedNumVisiblePrinters */); [
createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED),
createPrinterListEntry('test2', 'address', '2', PrinterType.SAVED)
],
searchTerm);
// Add more printers and assert that they are correctly filtered. // Add more printers and assert that they are correctly filtered.
printerEntryListTestElement.push( printerEntryListTestElement.push(
'printers', 'printers',
createPrinterListEntry('test3', '123', '4', PrinterType.SAVED)); createPrinterListEntry('test3', 'address', '4', PrinterType.SAVED));
printerEntryListTestElement.push( printerEntryListTestElement.push(
'printers', 'printers',
createPrinterListEntry('google2', '123', '5', PrinterType.SAVED)); createPrinterListEntry('google2', 'address', '5', PrinterType.SAVED));
Polymer.dom.flush(); Polymer.dom.flush();
verifySearchQueryResults( verifySearchQueryResults(
printerEntryListTestElement, searchTerm, printerEntryListTestElement,
3 /* expectedNumVisiblePrinters */); [
createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED),
createPrinterListEntry('test2', 'address', '2', PrinterType.SAVED),
createPrinterListEntry('test3', 'address', '4', PrinterType.SAVED)
],
searchTerm);
}); });
test('NoSearchFound', function() { test('NoSearchFound', function() {
printerEntryListTestElement.push( printerEntryListTestElement.push(
'printers', 'printers',
createPrinterListEntry('test1', '123', '1', PrinterType.SAVED)); createPrinterListEntry('test1', 'address', '1', PrinterType.SAVED));
printerEntryListTestElement.push( printerEntryListTestElement.push(
'printers', 'printers',
createPrinterListEntry('google', '123', '2', PrinterType.SAVED)); createPrinterListEntry('google', 'address', '2', PrinterType.SAVED));
Polymer.dom.flush(); Polymer.dom.flush();
let searchTerm = 'google'; searchTerm = 'google';
// Set the search term and filter out the printers. Filtering "google" // Set the search term and filter out the printers. Filtering "google"
// should result in one visible entry and two hidden entries. // should result in one visible entry and two hidden entries.
verifySearchQueryResults( verifySearchQueryResults(
printerEntryListTestElement, searchTerm, printerEntryListTestElement,
1 /* expectedNumVisiblePrinters */); [createPrinterListEntry('google', 'address', '2', PrinterType.SAVED)],
searchTerm);
// Change search term to something that has no matches. // Change search term to something that has no matches.
searchTerm = 'noSearchFound'; searchTerm = 'noSearchFound';
verifySearchQueryResults( verifySearchQueryResults(printerEntryListTestElement, [], searchTerm);
printerEntryListTestElement, searchTerm,
0 /* expectedNumVisiblePrinters */);
// Change search term back to "google" and verify that the No search found // Change search term back to "google" and verify that the No search found
// message is no longer there. // message is no longer there.
searchTerm = 'google'; searchTerm = 'google';
verifySearchQueryResults( verifySearchQueryResults(
printerEntryListTestElement, searchTerm, printerEntryListTestElement,
1 /* expectedNumVisiblePrinters */); [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