141 lines
3.0 KiB
JavaScript
141 lines
3.0 KiB
JavaScript
// Tests the filter search box in the storage inspector
|
|
"use strict";
|
|
|
|
add_task(async function () {
|
|
await openTabAndSetupStorage(MAIN_URL_SECURED + "storage-search.html");
|
|
|
|
gUI.tree.expandAll();
|
|
await selectTreeItem(["cookies", MAIN_ORIGIN_SECURED]);
|
|
|
|
showColumn("expires", false);
|
|
showColumn("host", false);
|
|
showColumn("isHttpOnly", false);
|
|
showColumn("lastAccessed", false);
|
|
showColumn("path", false);
|
|
|
|
// Results: 0=hidden, 1=visible
|
|
const testcases = [
|
|
// Test that search isn't case-sensitive
|
|
{
|
|
value: "FoO",
|
|
results: [0, 0, 1, 1, 0, 1, 0],
|
|
},
|
|
{
|
|
value: "OR",
|
|
results: [0, 1, 0, 0, 0, 1, 0],
|
|
},
|
|
{
|
|
value: "aNImAl",
|
|
results: [0, 1, 0, 0, 0, 0, 0],
|
|
},
|
|
// Test numbers
|
|
{
|
|
value: "01",
|
|
results: [1, 0, 0, 0, 0, 0, 1],
|
|
},
|
|
{
|
|
value: "2016",
|
|
results: [0, 0, 0, 0, 0, 0, 1],
|
|
},
|
|
{
|
|
value: "56789",
|
|
results: [1, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
// Test filtering by value
|
|
{
|
|
value: "horse",
|
|
results: [0, 1, 0, 0, 0, 0, 0],
|
|
},
|
|
{
|
|
value: "$$$",
|
|
results: [0, 0, 0, 0, 1, 0, 0],
|
|
},
|
|
{
|
|
value: "bar",
|
|
results: [0, 0, 1, 1, 0, 0, 0],
|
|
},
|
|
// Test input with whitespace
|
|
{
|
|
value: "energy b",
|
|
results: [0, 0, 1, 0, 0, 0, 0],
|
|
},
|
|
// Test no input at all
|
|
{
|
|
value: "",
|
|
results: [1, 1, 1, 1, 1, 1, 1],
|
|
},
|
|
// Test input that matches nothing
|
|
{
|
|
value: "input that matches nothing",
|
|
results: [0, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
];
|
|
|
|
const testcasesAfterHiding = [
|
|
// Test that search isn't case-sensitive
|
|
{
|
|
value: "OR",
|
|
results: [0, 0, 0, 0, 0, 1, 0],
|
|
},
|
|
{
|
|
value: "01",
|
|
results: [1, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
{
|
|
value: "2016",
|
|
results: [0, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
{
|
|
value: "56789",
|
|
results: [0, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
// Test filtering by value
|
|
{
|
|
value: "horse",
|
|
results: [0, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
{
|
|
value: "$$$",
|
|
results: [0, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
{
|
|
value: "bar",
|
|
results: [0, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
// Test input with whitespace
|
|
{
|
|
value: "energy b",
|
|
results: [0, 0, 0, 0, 0, 0, 0],
|
|
},
|
|
];
|
|
|
|
runTests(testcases);
|
|
showColumn("value", false);
|
|
runTests(testcasesAfterHiding);
|
|
});
|
|
|
|
function runTests(testcases) {
|
|
const $$ = sel => gPanelWindow.document.querySelectorAll(sel);
|
|
const names = $$("#name .table-widget-cell");
|
|
const rows = $$("#value .table-widget-cell");
|
|
for (const testcase of testcases) {
|
|
const { value, results } = testcase;
|
|
|
|
info(`Testing input: ${value}`);
|
|
|
|
gUI.searchBox.value = value;
|
|
gUI.filterItems();
|
|
|
|
for (let i = 0; i < rows.length; i++) {
|
|
info(`Testing row ${i} for "${value}"`);
|
|
info(`key: ${names[i].value}, value: ${rows[i].value}`);
|
|
const state = results[i] ? "visible" : "hidden";
|
|
is(
|
|
rows[i].hasAttribute("hidden"),
|
|
!results[i],
|
|
`Row ${i} should be ${state}`
|
|
);
|
|
}
|
|
}
|
|
}
|