Relations overhaul (requires new DB upgrade from 4.0)
Relations are now properties of collections and items rather than first-class objects, stored in separate collectionRelations and itemRelations tables with ids for subjects, with foreign keys to the associated data objects. Related items now use dc:relation relations rather than a separate table (among other reasons, because API syncing won't necessarily sync both items at the same time, so they can't be stored by id). The UI assigns related-item relations bidirectionally, and checks for related-item and linked-object relations are done unidirectionally by default. dc:isReplacedBy is now dc:replaces, so that the subject is an existing object, and the predicate is now named Zotero.Attachments.replacedItemPredicate. Some additional work is still needed, notably around following replaced-item relations, and migration needs to be tested more fully, but this seems to mostly work.
This commit is contained in:
parent
75bcfcb685
commit
a740658452
24 changed files with 1414 additions and 812 deletions
24
test/tests/relationsTest.js
Normal file
24
test/tests/relationsTest.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
"use strict";
|
||||
|
||||
describe("Zotero.Relations", function () {
|
||||
describe("#getByPredicateAndObject()", function () {
|
||||
it("should return items matching predicate and object", function* () {
|
||||
var item = createUnsavedDataObject('item');
|
||||
item.setRelations({
|
||||
"dc:relation": [
|
||||
"http://zotero.org/users/1/items/SHREREMS"
|
||||
],
|
||||
"owl:sameAs": [
|
||||
"http://zotero.org/groups/1/items/SRRMGSRM",
|
||||
"http://zotero.org/groups/1/items/GSMRRSSM"
|
||||
]
|
||||
})
|
||||
yield item.saveTx();
|
||||
var objects = yield Zotero.Relations.getByPredicateAndObject(
|
||||
'item', 'owl:sameAs', 'http://zotero.org/groups/1/items/SRRMGSRM'
|
||||
);
|
||||
assert.lengthOf(objects, 1);
|
||||
assert.equal(objects[0], item);
|
||||
})
|
||||
})
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue