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:
Dan Stillman 2015-06-07 15:40:04 -04:00
parent 53706d633a
commit a22c4969e6
9 changed files with 294 additions and 106 deletions

136
test/tests/groupTest.js Normal file
View 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);
})
})
})