diff --git a/src/api/groups.js b/src/api/groups.js index 5aa9c04f64..95074c4b6a 100644 --- a/src/api/groups.js +++ b/src/api/groups.js @@ -85,7 +85,7 @@ groupsAPI.listMembers = async (caller, data) => { const { query } = data; const after = parseInt(data.after || 0, 10); let response; - if (query) { + if (query && query.length) { response = await groups.searchMembers({ uid: caller.uid, query, diff --git a/test/groups.js b/test/groups.js index 00bd044e85..3fc70f009a 100644 --- a/test/groups.js +++ b/test/groups.js @@ -9,6 +9,7 @@ const db = require('./mocks/databasemock'); const helpers = require('./helpers'); const Groups = require('../src/groups'); const User = require('../src/user'); +const plugins = require('../src/plugins'); const utils = require('../src/utils'); const socketGroups = require('../src/socket.io/groups'); const apiGroups = require('../src/api/groups'); @@ -20,6 +21,12 @@ describe('Groups', () => { let adminUid; let testUid; before(async () => { + // Attach an emailer hook so related requests do not error + plugins.hooks.register('emailer-test', { + hook: 'static:email.send', + method: dummyEmailerHook, + }); + const navData = require('../install/data/navigation.json'); await navigation.save(navData); @@ -76,6 +83,14 @@ describe('Groups', () => { await Groups.join('administrators', adminUid); }); + async function dummyEmailerHook(data) { + // pretend to handle sending emails + } + + after(async () => { + plugins.hooks.unregister('emailer-test', 'static:email.send'); + }); + describe('.list()', () => { it('should list the groups present', (done) => { Groups.getGroupsFromSet('groups:visible:createtime', 0, -1, (err, groups) => { @@ -167,16 +182,13 @@ describe('Groups', () => { } await createAndJoinGroup('newuser', 'newuser@b.com'); await createAndJoinGroup('bob', 'bob@b.com'); - const data = await socketGroups.searchMembers({ uid: adminUid }, { groupName: 'Test', query: '' }); - assert.equal(data.users.length, 3); + const { users } = await apiGroups.listMembers({ uid: adminUid }, { slug: 'test', query: '' }); + assert.equal(users.length, 3); }); - it('should search group members', (done) => { - socketGroups.searchMembers({ uid: adminUid }, { groupName: 'Test', query: 'test' }, (err, data) => { - assert.ifError(err); - assert.strictEqual('testuser', data.users[0].username); - done(); - }); + it('should search group members', async () => { + const { users } = await apiGroups.listMembers({ uid: adminUid }, { slug: 'test', query: 'test' }); + assert.strictEqual('testuser', users[0].username); }); it('should not return hidden groups', async () => { @@ -1050,34 +1062,25 @@ describe('Groups', () => { } }); - it('should fail to load more groups with invalid data', (done) => { - socketGroups.loadMore({ uid: adminUid }, {}, (err) => { - assert.equal(err.message, '[[error:invalid-data]]'); - done(); - }); + it('should load initial set of groups when passed no arguments', async () => { + const { groups } = await apiGroups.list({ uid: adminUid }, {}); + assert(Array.isArray(groups)); }); - it('should load more groups', (done) => { - socketGroups.loadMore({ uid: adminUid }, { after: 0, sort: 'count' }, (err, data) => { - assert.ifError(err); - assert(Array.isArray(data.groups)); - done(); - }); + it('should load more groups', async () => { + const { groups } = await apiGroups.list({ uid: adminUid }, { after: 0, sort: 'count' }); + assert(Array.isArray(groups)); }); - it('should fail to load more members with invalid data', (done) => { - socketGroups.loadMoreMembers({ uid: adminUid }, {}, (err) => { - assert.equal(err.message, '[[error:invalid-data]]'); - done(); - }); + it('should load initial set of group members when passed no arguments', async () => { + const { users } = await apiGroups.listMembers({ uid: adminUid }, {}); + assert(users); + assert(Array.isArray(users)); }); - it('should load more members', (done) => { - socketGroups.loadMoreMembers({ uid: adminUid }, { after: 0, groupName: 'PrivateCanJoin' }, (err, data) => { - assert.ifError(err); - assert(Array.isArray(data.users)); - done(); - }); + it('should load more members', async () => { + const { users } = await apiGroups.listMembers({ uid: adminUid }, { after: 0, groupName: 'PrivateCanJoin' }); + assert(Array.isArray(users)); }); });