
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
137 lines
3.1 KiB
JavaScript
137 lines
3.1 KiB
JavaScript
"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);
|
|
})
|
|
})
|
|
})
|