Add test for 4.0 → 5.0 DB upgrade
With a mechanism for specifying a zipped DB copy to use as the initial DB when resetting the DB in tests
This commit is contained in:
parent
0f96c20f3c
commit
eac98d1c2e
3 changed files with 33 additions and 2 deletions
|
@ -624,8 +624,19 @@ async function resetDB(options = {}) {
|
|||
var db = Zotero.DataDirectory.getDatabase();
|
||||
await Zotero.reinit(
|
||||
async function () {
|
||||
// Swap in the initial copy we made of the DB
|
||||
await OS.File.copy(db + '-test-template', db);
|
||||
// Extract a zipped DB file into place as the initial DB
|
||||
if (options.dbFile && options.dbFile.endsWith('.zip')) {
|
||||
let zipReader = Components.classes['@mozilla.org/libjar/zip-reader;1']
|
||||
.createInstance(Components.interfaces.nsIZipReader);
|
||||
zipReader.open(Zotero.File.pathToFile(options.dbFile));
|
||||
zipReader.extract('zotero.sqlite', Zotero.File.pathToFile(db));
|
||||
zipReader.close();
|
||||
}
|
||||
// Otherwise swap in the initial copy we made of the DB, or an alternative non-zip file
|
||||
// if given
|
||||
else {
|
||||
await OS.File.copy(options.dbFile || db + '-test-template', db);
|
||||
}
|
||||
_defaultGroup = null;
|
||||
},
|
||||
false,
|
||||
|
|
BIN
test/tests/data/zotero-4.0.sqlite.zip
Normal file
BIN
test/tests/data/zotero-4.0.sqlite.zip
Normal file
Binary file not shown.
|
@ -303,4 +303,24 @@ describe("Zotero.Schema", function() {
|
|||
await assert.isTrue(await Zotero.Schema.integrityCheck());
|
||||
});
|
||||
})
|
||||
|
||||
describe("Database Upgrades", function () {
|
||||
after(async function () {
|
||||
await resetDB({
|
||||
thisArg: this,
|
||||
skipBundledFiles: true,
|
||||
});
|
||||
});
|
||||
|
||||
it("should upgrade 4.0 database", async function () {
|
||||
await resetDB({
|
||||
thisArg: this,
|
||||
skipBundledFiles: true,
|
||||
dbFile: OS.Path.join(getTestDataDirectory().path, 'zotero-4.0.sqlite.zip')
|
||||
});
|
||||
// Make sure we can open the Zotero pane without errors
|
||||
win = await loadZoteroPane();
|
||||
win.close();
|
||||
});
|
||||
});
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue