| Index: test/filterStorage_readwrite.js |
| =================================================================== |
| --- a/test/filterStorage_readwrite.js |
| +++ b/test/filterStorage_readwrite.js |
| @@ -19,26 +19,27 @@ |
| const {createSandbox, unexpectedError} = require("./_common"); |
| let Filter = null; |
| let FilterStorage = null; |
| let IO = null; |
| let Prefs = null; |
| let ExternalSubscription = null; |
| +let SpecialSubscription = null; |
| exports.setUp = function(callback) |
| { |
| let sandboxedRequire = createSandbox(); |
| ( |
| {Filter} = sandboxedRequire("../lib/filterClasses"), |
| {FilterStorage} = sandboxedRequire("../lib/filterStorage"), |
| {IO} = sandboxedRequire("./stub-modules/io"), |
| {Prefs} = sandboxedRequire("./stub-modules/prefs"), |
| - {ExternalSubscription} = sandboxedRequire("../lib/subscriptionClasses") |
| + {ExternalSubscription, SpecialSubscription} = sandboxedRequire("../lib/subscriptionClasses") |
| ); |
| FilterStorage.addFilter(Filter.fromText("foobar")); |
| callback(); |
| }; |
| let testData = new Promise((resolve, reject) => |
| { |
| @@ -85,17 +86,17 @@ |
| return -1; |
| else if (a.key > b.key) |
| return 1; |
| return 0; |
| }); |
| return sections; |
| } |
| -function testReadWrite(test, withExternal) |
| +function testReadWrite(test, withExternal, withEmptySpecial) |
| { |
| test.ok(!FilterStorage.initialized, "Uninitialized before the first load"); |
| return testData.then(data => |
| { |
| IO._setFileContents(FilterStorage.sourceFile, data); |
| return FilterStorage.loadFromDisk(); |
| }).then(() => |
| @@ -113,16 +114,30 @@ |
| let externalSubscriptions = [...FilterStorage.subscriptions()].filter(subscription => subscription instanceof ExternalSubscription); |
| test.equal(externalSubscriptions.length, 1, "Number of external subscriptions after updateExternalSubscription"); |
| test.equal(externalSubscriptions[0].url, "~external~external subscription ID", "ID of external subscription"); |
| test.equal(externalSubscriptions[0].filters.length, 2, "Number of filters in external subscription"); |
| } |
| + if (withEmptySpecial) |
| + { |
| + let specialSubscription = |
| + SpecialSubscription.createForFilter(Filter.fromText("!foo")); |
| + FilterStorage.addSubscription(specialSubscription); |
| + |
| + FilterStorage.removeFilter(Filter.fromText("!foo"), specialSubscription); |
| + |
| + test.equal(specialSubscription.filters.length, 0, |
| + "No filters in special subscription"); |
| + test.ok(new Set(FilterStorage.subscriptions()).has(specialSubscription), |
| + "Empty special subscription still in storage"); |
| + } |
| + |
| return FilterStorage.saveToDisk(); |
| }).then(() => testData).then(expected => |
| { |
| test.deepEqual(canonize(IO._getFileContents(FilterStorage.sourceFile)), |
| canonize(expected), "Read/write result"); |
| }).catch(unexpectedError.bind(test)).then(() => test.done()); |
| } |
| @@ -131,16 +146,21 @@ |
| testReadWrite(test, false); |
| }; |
| exports.testReadAndSaveToFileWithExternalSubscription = function(test) |
| { |
| testReadWrite(test, true); |
| }; |
| +exports.testReadAndSaveToFileWithEmptySpecial = function(test) |
| +{ |
| + testReadWrite(test, false, true); |
| +}; |
| + |
| exports.testImportExport = function(test) |
| { |
| testData.then(lines => |
| { |
| if (lines.length && lines[lines.length - 1] == "") |
| lines.pop(); |
| let importer = FilterStorage.importData(); |