schemaTest.js (1685B)
1 describe("Zotero.Schema", function() { 2 describe("#initializeSchema()", function () { 3 it("should set last client version", function* () { 4 yield resetDB({ 5 thisArg: this, 6 skipBundledFiles: true 7 }); 8 9 var sql = "SELECT value FROM settings WHERE setting='client' AND key='lastVersion'"; 10 var lastVersion = yield Zotero.DB.valueQueryAsync(sql); 11 yield assert.eventually.equal(Zotero.DB.valueQueryAsync(sql), Zotero.version); 12 }); 13 }); 14 15 describe("#updateSchema()", function () { 16 it("should set last client version", function* () { 17 var sql = "REPLACE INTO settings (setting, key, value) VALUES ('client', 'lastVersion', ?)"; 18 return Zotero.DB.queryAsync(sql, "5.0old"); 19 20 yield Zotero.Schema.updateSchema(); 21 22 var sql = "SELECT value FROM settings WHERE setting='client' AND key='lastVersion'"; 23 var lastVersion = yield Zotero.DB.valueQueryAsync(sql); 24 yield assert.eventually.equal(Zotero.DB.valueQueryAsync(sql), Zotero.version); 25 }); 26 }); 27 28 describe("#integrityCheck()", function () { 29 before(function* () { 30 yield resetDB({ 31 thisArg: this, 32 skipBundledFiles: true 33 }); 34 }) 35 36 it("should repair a foreign key violation", function* () { 37 yield assert.eventually.isTrue(Zotero.Schema.integrityCheck()); 38 39 yield Zotero.DB.queryAsync("PRAGMA foreign_keys = OFF"); 40 yield Zotero.DB.queryAsync("INSERT INTO itemTags VALUES (1234,1234,0)"); 41 yield Zotero.DB.queryAsync("PRAGMA foreign_keys = ON"); 42 43 yield assert.eventually.isFalse(Zotero.Schema.integrityCheck()); 44 yield assert.eventually.isTrue(Zotero.Schema.integrityCheck(true)); 45 yield assert.eventually.isTrue(Zotero.Schema.integrityCheck()); 46 }) 47 }) 48 })