www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

groupTest.js (5182B)


      1 "use strict";
      2 
      3 describe("Zotero.Group", function () {
      4 	describe("#constructor()", function() {
      5 		it("should accept required parameters", function* () {
      6 			let group = new Zotero.Group();
      7 			yield assert.isRejected(group.saveTx()); // fails without required parameters
      8 			
      9 			let groupID = Zotero.Utilities.rand(10000, 1000000);
     10 			let groupName = "Test " + Zotero.Utilities.randomString();
     11 			let groupVersion = Zotero.Utilities.rand(10000, 1000000);
     12 			group = new Zotero.Group({
     13 				groupID: groupID,
     14 				name: groupName,
     15 				description: "",
     16 				version:groupVersion,
     17 				editable: true,
     18 				filesEditable: true
     19 			});
     20 			yield assert.isFulfilled(group.saveTx(), "saves given required parameters");
     21 			
     22 			assert.isTrue(Zotero.Libraries.exists(group.libraryID));
     23 			assert.equal(group, Zotero.Groups.get(group.groupID));
     24 			
     25 			assert.equal(group.name, groupName);
     26 			assert.equal(group.groupID, groupID);
     27 			assert.equal(group.version, groupVersion);
     28 		});
     29 	});
     30 	
     31 	describe("#version", function() {
     32 		it("should be settable to increasing values", function() {
     33 			let library = new Zotero.Group();
     34 			assert.throws(() => library.version = -1);
     35 			assert.throws(() => library.version = "a");
     36 			assert.throws(() => library.version = 1.1);
     37 			assert.doesNotThrow(() => library.version = 0);
     38 			assert.doesNotThrow(() => library.version = 5);
     39 		});
     40 		it("should not be possible to decrement", function() {
     41 			let library = new Zotero.Group();
     42 			library.version = 5;
     43 			assert.throws(() => library.version = 0);
     44 		});
     45 	});
     46 	
     47 	describe("#erase()", function () {
     48 		it("should unregister group", function* () {
     49 			var group = yield createGroup();
     50 			var id = group.id;
     51 			yield group.eraseTx();
     52 			assert.isFalse(Zotero.Groups.exists(id));
     53 		})
     54 		
     55 		it("should provide libraryID in extraData", function* () {
     56 			var group = yield createGroup();
     57 			var libraryID = group.libraryID;
     58 			
     59 			var deferred = Zotero.Promise.defer();
     60 			var observerID = Zotero.Notifier.registerObserver({
     61 				notify: function (event, type, ids, extraData) {
     62 					deferred.resolve(extraData[ids[0]]);
     63 				}
     64 			}, ['group'], "test");
     65 			try {
     66 				yield group.eraseTx();
     67 				let extraData = yield deferred.promise;
     68 				assert.equal(extraData.libraryID, libraryID);
     69 			}
     70 			finally {
     71 				Zotero.Notifier.unregisterObserver(observerID);
     72 			}
     73 		})
     74 	})
     75 	
     76 	describe("#fromJSON()", function () {
     77 		it("should set permissions for owner", function* () {
     78 			var group = new Zotero.Group;
     79 			group.fromJSON({
     80 				owner: 1,
     81 				libraryEditing: 'admins',
     82 				fileEditing: 'admins'
     83 			}, 1);
     84 			assert.isTrue(group.editable);
     85 			assert.isTrue(group.filesEditable);
     86 			
     87 			var group = new Zotero.Group;
     88 			group.fromJSON({
     89 				owner: 1,
     90 				libraryEditing: 'members',
     91 				fileEditing: 'members'
     92 			}, 1);
     93 			assert.isTrue(group.editable);
     94 			assert.isTrue(group.filesEditable);
     95 			
     96 			var group = new Zotero.Group;
     97 			group.fromJSON({
     98 				owner: 1,
     99 				libraryEditing: 'admins',
    100 				fileEditing: 'none'
    101 			}, 1);
    102 			assert.isTrue(group.editable);
    103 			assert.isFalse(group.filesEditable);
    104 		})
    105 		
    106 		it("should set permissions for admin", function* () {
    107 			var group = new Zotero.Group;
    108 			group.fromJSON({
    109 				owner: 1,
    110 				libraryEditing: 'admins',
    111 				fileEditing: 'admins',
    112 				admins: [2]
    113 			}, 2);
    114 			assert.isTrue(group.editable);
    115 			assert.isTrue(group.filesEditable);
    116 			
    117 			var group = new Zotero.Group;
    118 			group.fromJSON({
    119 				owner: 1,
    120 				libraryEditing: 'members',
    121 				fileEditing: 'members',
    122 				admins: [2]
    123 			}, 2);
    124 			assert.isTrue(group.editable);
    125 			assert.isTrue(group.filesEditable);
    126 			
    127 			var group = new Zotero.Group;
    128 			group.fromJSON({
    129 				owner: 1,
    130 				libraryEditing: 'admins',
    131 				fileEditing: 'none',
    132 				admins: [2]
    133 			}, 2);
    134 			assert.isTrue(group.editable);
    135 			assert.isFalse(group.filesEditable);
    136 		})
    137 		
    138 		it("should set permissions for member", function* () {
    139 			var group = new Zotero.Group;
    140 			group.fromJSON({
    141 				owner: 1,
    142 				libraryEditing: 'members',
    143 				fileEditing: 'members',
    144 				admins: [2],
    145 				members: [3]
    146 			}, 3);
    147 			assert.isTrue(group.editable);
    148 			assert.isTrue(group.filesEditable);
    149 			
    150 			var group = new Zotero.Group;
    151 			group.fromJSON({
    152 				owner: 1,
    153 				libraryEditing: 'admins',
    154 				fileEditing: 'admins',
    155 				admins: [2],
    156 				members: [3]
    157 			}, 3);
    158 			assert.isFalse(group.editable);
    159 			assert.isFalse(group.filesEditable);
    160 			
    161 			var group = new Zotero.Group;
    162 			group.fromJSON({
    163 				owner: 1,
    164 				libraryEditing: 'admins',
    165 				fileEditing: 'members', // Shouldn't be possible
    166 				admins: [2],
    167 				members: [3]
    168 			}, 3);
    169 			assert.isFalse(group.editable);
    170 			assert.isFalse(group.filesEditable);
    171 			
    172 			var group = new Zotero.Group;
    173 			group.fromJSON({
    174 				owner: 1,
    175 				libraryEditing: 'members',
    176 				fileEditing: 'none',
    177 				// No admins
    178 				members: [3]
    179 			}, 3);
    180 			assert.isTrue(group.editable);
    181 			assert.isFalse(group.filesEditable);
    182 		})
    183 		
    184 		it("should set permissions for non-member", function* () {
    185 			var group = new Zotero.Group;
    186 			group.fromJSON({
    187 				owner: 1,
    188 				libraryEditing: 'members',
    189 				fileEditing: 'members',
    190 				admins: [2],
    191 				members: [3]
    192 			});
    193 			assert.isFalse(group.editable);
    194 			assert.isFalse(group.filesEditable);
    195 		})
    196 	})
    197 })