Source code
Revision control
Copy as Markdown
Other Tools
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
"use strict";
const { Aggregator } = ChromeUtils.importESModule(
"resource://gre/modules/megalist/aggregator/Aggregator.sys.mjs"
);
const { DataSourceBase } = ChromeUtils.importESModule(
"resource://gre/modules/megalist/aggregator/datasources/DataSourceBase.sys.mjs"
);
const { LoginTestUtils } = ChromeUtils.importESModule(
);
const { TestUtils } = ChromeUtils.importESModule(
);
const testData = LoginTestUtils.testData;
function mockReloadData(dataSource, lines, linePrototype) {
dataSource.beforeReloadingDataSource();
lines.forEach(line =>
dataSource.addOrUpdateLine(line.record, line.id, linePrototype)
);
dataSource.afterReloadingDataSource();
}
function addLinesToDataSource(dataSourceBase, linePrototype) {
const loginList = testData.loginList();
const lines = loginList.reduce((accLines, curLogin, curIndex) => {
accLines.push(
{ record: curLogin, id: `${curIndex}a` },
{ record: curLogin, id: `${curIndex}b` },
{ record: curLogin, id: `${curIndex}c` }
);
return accLines;
}, []);
mockReloadData(dataSourceBase, [...lines], linePrototype);
return lines;
}
const loginMatch = searchText => record =>
record.displayOrigin.toUpperCase().includes(searchText) ||
record.username.toUpperCase().includes(searchText) ||
record.password.toUpperCase().includes(searchText);
class MockLoginDataSource {
lines = [];
addLines(lines) {
for (let line of lines) {
this.lines.push(line);
}
}
*enumerateLines(searchText) {
for (let line of this.lines) {
const matchFn = loginMatch(searchText.toUpperCase());
if (matchFn(line.record)) {
yield line;
}
}
}
}