diff --git a/src/groups/search.js b/src/groups/search.js index 55bf5e5789..4826579f6c 100644 --- a/src/groups/search.js +++ b/src/groups/search.js @@ -66,10 +66,6 @@ module.exports = function (Groups) { Groups.searchMembers = function (data, callback) { function findUids(query, searchBy, callback) { - if (!query) { - return Groups.getMembers(data.groupName, 0, -1, callback); - } - query = query.toLowerCase(); async.waterfall([ diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index 64e568f919..858d9bdeff 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -237,7 +237,7 @@ SocketGroups.search = function (socket, data, callback) { return; } - groups.search(data.query, data.options || {}, callback); + groups.search(data.query, data.options, callback); }; SocketGroups.loadMore = function (socket, data, callback) { diff --git a/test/groups.js b/test/groups.js index 35d3c17be6..c2b30b9d94 100644 --- a/test/groups.js +++ b/test/groups.js @@ -93,14 +93,68 @@ describe('Groups', function () { }); describe('.search()', function () { + var socketGroups = require('../src/socket.io/groups'); + + it('should return the groups when search query is empty', function (done) { + socketGroups.search({uid: adminUid}, {query: ''}, function (err, groups) { + assert.ifError(err); + assert.equal(3, groups.length); + done(); + }); + }); + it('should return the "Test" group when searched for', function (done) { - Groups.search('test', {}, function (err, groups) { + socketGroups.search({uid: adminUid}, {query: 'test'}, function (err, groups) { + assert.ifError(err); + assert.equal(1, groups.length); + assert.strictEqual('Test', groups[0].name); + done(); + }); + }); + + it('should return the "Test" group when searched for and sort by member count', function (done) { + Groups.search('test', {filterHidden: true, sort: 'count'}, function (err, groups) { assert.ifError(err); assert.equal(1, groups.length); assert.strictEqual('Test', groups[0].name); done(); }); }); + + it('should return the "Test" group when searched for and sort by creation time', function (done) { + Groups.search('test', {filterHidden: true, sort: 'date'}, function (err, groups) { + assert.ifError(err); + assert.equal(1, groups.length); + assert.strictEqual('Test', groups[0].name); + done(); + }); + }); + + it('should return all users if no query', function (done) { + User.create({ + username: 'newuser', + email: 'newuser@b.com' + }, function (err, uid) { + assert.ifError(err); + Groups.join('Test', uid, function (err) { + assert.ifError(err); + socketGroups.searchMembers({uid: adminUid}, {groupName: 'Test', query: ''}, function (err, data) { + assert.ifError(err); + assert.equal(data.users.length, 2); + done(); + }); + }); + }); + }); + + it('should search group members', function (done) { + socketGroups.searchMembers({uid: adminUid}, {groupName: 'Test', query: 'test'}, function (err, data) { + assert.ifError(err); + assert.strictEqual('testuser', data.users[0].username); + done(); + }); + }); + }); describe('.isMember()', function () {