Add support function to reset the DB and a test that it works.

This commit is contained in:
Simon Kornblith 2015-03-09 14:25:49 -04:00
parent b6673511f7
commit c7c58f8343
5 changed files with 41 additions and 2 deletions

View file

@ -54,6 +54,7 @@ Components.utils.import("resource://gre/modules/Services.jsm");
this.join = join;
this.randomString = randomString;
this.moveToUnique = moveToUnique;
this.reinit = reinit; // defined in zotero-service.js
// Public properties
this.initialized = false;

View file

@ -177,6 +177,21 @@ ZoteroContext.prototype = {
}
return zContext;
},
/**
* Shuts down Zotero, calls a callback (that may return a promise),
* then reinitializes Zotero. Returns a promise that is resolved
* when this process completes.
*/
"reinit":function(cb, isConnector) {
Services.obs.notifyObservers(zContext.Zotero, "zotero-before-reload", isConnector ? "connector" : "full");
return zContext.Zotero.shutdown().then(function() {
return cb ? cb() : false;
}).finally(function() {
makeZoteroContext(isConnector);
zContext.Zotero.init(zInitOptions);
});
}
};

View file

@ -164,4 +164,15 @@ function getTestDataDirectory() {
resURI = Services.io.newURI("resource://zotero-unit-tests/data", null, null);
return Services.io.newURI(resource.resolveURI(resURI), null, null).
QueryInterface(Components.interfaces.nsIFileURL).file;
}
/**
* Resets the Zotero DB and restarts Zotero. Returns a promise resolved
* when this finishes.
*/
function resetDB() {
var db = Zotero.getZoteroDatabase();
return Zotero.reinit(function() {
db.remove(false);
});
}

View file

@ -1,5 +1,6 @@
var TESTS = {
"recognizePDF":["recognizePDF.js"],
"support":["support.js"],
"utilities":["utilities.js"],
"lookup":["lookup.js"],
"utilities":["utilities.js"]
"recognizePDF":["recognizePDF.js"]
};

11
test/tests/support.js Normal file
View file

@ -0,0 +1,11 @@
describe("Support Functions for Unit Testing", function() {
describe("resetDB", function() {
it("should restore the DB to factory settings", function() {
var quickstart = Zotero.Items.erase(1);
assert.equal(Zotero.Items.get(1), false);
return resetDB().then(function() {
assert.equal(Zotero.Items.get(1).getField("url"), "http://zotero.org/support/quick_start_guide");
});
});
});
});