updating groups so that members leave a group when it is deleted

v1.18.x
Julian Lam 11 years ago
parent ce867aec53
commit 4701eb1cee

@ -178,6 +178,9 @@
}, },
function(next) { function(next) {
db.setRemove('groups', groupName, next); db.setRemove('groups', groupName, next);
},
function(next) {
db.delete('group:' + groupName + ':members', next);
} }
], callback); ], callback);
}; };

@ -433,10 +433,11 @@ Upgrade.upgrade = function(callback) {
function(next) { function(next) {
Groups.list({ showAllGroups: true }, function(err, groups) { Groups.list({ showAllGroups: true }, function(err, groups) {
async.each(groups, function(group, next) { async.each(groups, function(group, next) {
// If empty, delete group
if (group.memberCount === 0) { if (group.memberCount === 0) {
// If empty, delete group
Groups.destroy(group.name, next); Groups.destroy(group.name, next);
} else if (group.hidden && !isValidHiddenGroup.test(group.name)) { } else if (group.hidden && !isValidHiddenGroup.test(group.name)) {
// If invalidly named hidden group, delete
Groups.destroy(group.name, next); Groups.destroy(group.name, next);
} else { } else {
next(); next();

@ -184,6 +184,10 @@ describe('Groups', function() {
}); });
describe('.destroy()', function() { describe('.destroy()', function() {
before(function(done) {
Groups.join('foo', 1, done);
});
it('should destroy a group', function(done) { it('should destroy a group', function(done) {
Groups.destroy('foo', function(err) { Groups.destroy('foo', function(err) {
if (err) return done(err); if (err) return done(err);
@ -196,6 +200,16 @@ describe('Groups', function() {
}); });
}); });
}); });
it('should also remove the members set', function(done) {
db.exists('group:foo:members', function(err, exists) {
if (err) return done(err);
assert.strictEqual(false, exists);
done();
});
});
}); });
describe('.join()', function() { describe('.join()', function() {
@ -235,7 +249,7 @@ describe('Groups', function() {
Groups.leaveAllGroups(1, function(err) { Groups.leaveAllGroups(1, function(err) {
if (err) return done(err); if (err) return done(err);
var groups = ['Test', 'Hidden', 'foo']; var groups = ['Test', 'Hidden'];
async.every(groups, function(group, next) { async.every(groups, function(group, next) {
Groups.isMember(1, group, function(err, isMember) { Groups.isMember(1, group, function(err, isMember) {
if (err) done(err); if (err) done(err);

Loading…
Cancel
Save