Move editable and filesEditable props to libraries table [DB reupgrade]
And add group.fromJSON(json, userID), which sets editable and filesEditable properties based on the group JSON (libraryReading, role lists, etc.) and the given user
This commit is contained in:
parent
53706d633a
commit
a22c4969e6
9 changed files with 294 additions and 106 deletions
136
test/tests/groupTest.js
Normal file
136
test/tests/groupTest.js
Normal file
|
@ -0,0 +1,136 @@
|
|||
"use strict";
|
||||
|
||||
describe("Zotero.Group", function () {
|
||||
describe("#erase()", function () {
|
||||
it("should unregister group", function* () {
|
||||
var group = yield createGroup();
|
||||
var id = group.id;
|
||||
yield Zotero.DB.executeTransaction(function* () {
|
||||
return group.erase()
|
||||
}.bind(this));
|
||||
assert.isFalse(Zotero.Groups.exists(id));
|
||||
})
|
||||
})
|
||||
|
||||
describe("#fromJSON()", function () {
|
||||
it("should set permissions for owner", function* () {
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'admins',
|
||||
fileEditing: 'admins'
|
||||
}, 1);
|
||||
assert.isTrue(group.editable);
|
||||
assert.isTrue(group.filesEditable);
|
||||
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'members',
|
||||
fileEditing: 'members'
|
||||
}, 1);
|
||||
assert.isTrue(group.editable);
|
||||
assert.isTrue(group.filesEditable);
|
||||
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'admins',
|
||||
fileEditing: 'none'
|
||||
}, 1);
|
||||
assert.isTrue(group.editable);
|
||||
assert.isFalse(group.filesEditable);
|
||||
})
|
||||
|
||||
it("should set permissions for admin", function* () {
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'admins',
|
||||
fileEditing: 'admins',
|
||||
admins: [2]
|
||||
}, 2);
|
||||
assert.isTrue(group.editable);
|
||||
assert.isTrue(group.filesEditable);
|
||||
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'members',
|
||||
fileEditing: 'members',
|
||||
admins: [2]
|
||||
}, 2);
|
||||
assert.isTrue(group.editable);
|
||||
assert.isTrue(group.filesEditable);
|
||||
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'admins',
|
||||
fileEditing: 'none',
|
||||
admins: [2]
|
||||
}, 2);
|
||||
assert.isTrue(group.editable);
|
||||
assert.isFalse(group.filesEditable);
|
||||
})
|
||||
|
||||
it("should set permissions for member", function* () {
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'members',
|
||||
fileEditing: 'members',
|
||||
admins: [2],
|
||||
members: [3]
|
||||
}, 3);
|
||||
assert.isTrue(group.editable);
|
||||
assert.isTrue(group.filesEditable);
|
||||
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'admins',
|
||||
fileEditing: 'admins',
|
||||
admins: [2],
|
||||
members: [3]
|
||||
}, 3);
|
||||
assert.isFalse(group.editable);
|
||||
assert.isFalse(group.filesEditable);
|
||||
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'admins',
|
||||
fileEditing: 'members', // Shouldn't be possible
|
||||
admins: [2],
|
||||
members: [3]
|
||||
}, 3);
|
||||
assert.isFalse(group.editable);
|
||||
assert.isFalse(group.filesEditable);
|
||||
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'members',
|
||||
fileEditing: 'none',
|
||||
admins: [2],
|
||||
members: [3]
|
||||
}, 3);
|
||||
assert.isTrue(group.editable);
|
||||
assert.isFalse(group.filesEditable);
|
||||
})
|
||||
|
||||
it("should set permissions for non-member", function* () {
|
||||
var group = new Zotero.Group;
|
||||
group.fromJSON({
|
||||
owner: 1,
|
||||
libraryEditing: 'members',
|
||||
fileEditing: 'members',
|
||||
admins: [2],
|
||||
members: [3]
|
||||
});
|
||||
assert.isFalse(group.editable);
|
||||
assert.isFalse(group.filesEditable);
|
||||
})
|
||||
})
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue