mirror of https://github.com/wekan/wekan
The Open Source kanban (built with Meteor). Keep variable/table/field names camelCase. For translations, only add Pull Request changes to wekan/i18n/en.i18n.json , other translations are done at https://transifex.com/wekan/wekan only.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
2.0 KiB
51 lines
2.0 KiB
/* eslint-env mocha */
|
|
import { expect } from 'chai';
|
|
import { pullMemberById } from '../removeMember';
|
|
|
|
// Issue #5330: removing a board member whose user account has been deleted did
|
|
// nothing. The member entry references the user only by userId, so removal must
|
|
// work purely on that id, whether or not the Users document still exists.
|
|
describe('removeMember (issue #5330)', function() {
|
|
describe(pullMemberById.name, function() {
|
|
it('removes the entry matching the userId', function() {
|
|
const members = [
|
|
{ userId: 'alice', isAdmin: true },
|
|
{ userId: 'ghost', isAdmin: false },
|
|
];
|
|
const result = pullMemberById(members, 'ghost');
|
|
expect(result.map(m => m.userId)).to.deep.equal(['alice']);
|
|
});
|
|
|
|
it('removes a deleted user even when only the userId is known', function() {
|
|
// "ghost" has no corresponding Users document anymore; matching is purely
|
|
// by the stored userId so the entry is still pulled.
|
|
const members = [{ userId: 'ghost' }];
|
|
expect(pullMemberById(members, 'ghost')).to.deep.equal([]);
|
|
});
|
|
|
|
it('leaves the other members untouched', function() {
|
|
const members = [
|
|
{ userId: 'alice', isAdmin: true },
|
|
{ userId: 'bob', isAdmin: false },
|
|
{ userId: 'ghost' },
|
|
];
|
|
const result = pullMemberById(members, 'ghost');
|
|
expect(result).to.deep.equal([
|
|
{ userId: 'alice', isAdmin: true },
|
|
{ userId: 'bob', isAdmin: false },
|
|
]);
|
|
});
|
|
|
|
it('is a no-op when the userId is not present', function() {
|
|
const members = [{ userId: 'alice' }, { userId: 'bob' }];
|
|
const result = pullMemberById(members, 'nobody');
|
|
expect(result.map(m => m.userId)).to.deep.equal(['alice', 'bob']);
|
|
});
|
|
|
|
it('tolerates an empty or missing members array', function() {
|
|
expect(pullMemberById([], 'ghost')).to.deep.equal([]);
|
|
expect(pullMemberById(undefined, 'ghost')).to.deep.equal([]);
|
|
expect(pullMemberById(null, 'ghost')).to.deep.equal([]);
|
|
});
|
|
});
|
|
});
|
|
|