diff --git a/src/helpers/memberHelper.js b/src/helpers/memberHelper.js index 3bee3cb..c5a9c4c 100644 --- a/src/helpers/memberHelper.js +++ b/src/helpers/memberHelper.js @@ -23,7 +23,7 @@ const commandList = ['--help', 'new', 'remove', 'name', 'list', 'displayName', ' mh.parseMemberCommand = async function (authorId, authorFull, args, attachmentUrl = null, attachmentExpiration = null) { let member; // checks whether command is in list, otherwise assumes it's a name - if (!commandList.includes(args[0])) { + if (!commandList.includes(args[0]) && !args[1]) { member = await mh.getMemberInfo(authorId, args[0]); } switch (args[0]) { diff --git a/tests/helpers/memberHelper.test.js b/tests/helpers/memberHelper.test.js index f484e9f..2edbbef 100644 --- a/tests/helpers/memberHelper.test.js +++ b/tests/helpers/memberHelper.test.js @@ -34,12 +34,11 @@ describe('MemberHelper', () => { test.each([ [['new'], 'new member', 'addNewMember', ['new']], [['remove'], 'remove member', 'removeMember', ['remove']], - [['list'], 'all member info', 'getAllMembersInfo', ['list']], + [['list'], 'all member info', 'getAllMembersInfo', authorFull], [['somePerson', 'name'], 'update name', 'updateName', ['somePerson', 'name']], [['somePerson', 'displayname'], 'update display name', 'updateDisplayName', ['somePerson', 'displayname']], - [['somePerson', 'proxy'], 'get proxy', 'getProxyByMember', ['somePerson']], + [['somePerson', 'proxy'], 'get proxy', 'getProxyByMember', 'somePerson'], [['somePerson', 'proxy', 'test'], 'update proxy', 'updateProxy', ['somePerson', 'proxy', 'test']], - [['somePerson', 'propic'], 'update propic', 'updatePropic', ['somePerson', 'propic']], [['somePerson'], 'member info', 'getMemberInfo', 'somePerson'], ])('%s returns correct values and calls methods', async (args, expectedResult, method, passedIn) => { return memberHelper.parseMemberCommand(authorId, authorFull, args).then((result) => { @@ -49,6 +48,17 @@ describe('MemberHelper', () => { }); }); + test('["somePerson", "propic"] returns correct values and calls methods', () => { + // arrange + const args = ['somePerson', 'propic']; + // act & assert + return memberHelper.parseMemberCommand(authorId, authorFull, args, attachmentUrl, attachmentExpiration).then((result) => { + expect(result).toEqual("update propic"); + expect(memberHelper['updatePropic']).toHaveBeenCalledTimes(1); + expect(memberHelper['updatePropic']).toHaveBeenCalledWith(authorId, args, attachmentUrl, attachmentExpiration) + }); + }) + test.each([ [['--help'], enums.help.MEMBER], [['name'], enums.help.NAME], @@ -67,6 +77,39 @@ describe('MemberHelper', () => { }); }); + describe('errors', () => { + beforeEach(() => { + jest.resetModules(); + jest.clearAllMocks(); + jest.spyOn(memberHelper, 'getMemberInfo').mockImplementation(() => { throw new Error('member info error')}); + jest.spyOn(memberHelper, 'addNewMember').mockImplementation(() => { throw new Error('new member error')}); + jest.spyOn(memberHelper, 'removeMember').mockImplementation(() => { throw new Error('remove member error')}); + jest.spyOn(memberHelper, 'getAllMembersInfo').mockImplementation(() => { throw new Error('all member info error')}); + jest.spyOn(memberHelper, 'updateName').mockImplementation(() => { throw new Error('update name error')}); + jest.spyOn(memberHelper, 'updateDisplayName').mockImplementation(() => { throw new Error('update display name error')}); + jest.spyOn(memberHelper, 'updateProxy').mockImplementation(() => { throw new Error('update proxy error')}); + jest.spyOn(memberHelper, 'updatePropic').mockImplementation(() => { throw new Error('update propic error')}); + jest.spyOn(memberHelper, 'getProxyByMember').mockImplementation(() => { throw new Error('get proxy error')}); + }) + test.each([ + [['new'], 'new member error', 'addNewMember', ['new']], + [['remove'], 'remove member error', 'removeMember', ['remove']], + [['list'], 'all member info error', 'getAllMembersInfo', authorFull], + [['somePerson', 'name'], 'update name error', 'updateName', ['somePerson', 'name']], + [['somePerson', 'displayname'], 'update display name error', 'updateDisplayName', ['somePerson', 'displayname']], + [['somePerson', 'proxy'], 'get proxy error', 'getProxyByMember', 'somePerson'], + [['somePerson', 'proxy', 'test'], 'update proxy error', 'updateProxy', ['somePerson', 'proxy', 'test']], + [['somePerson'], 'member info error', 'getMemberInfo', 'somePerson'], + ])('%s returns correct values and calls methods', async (args, expectedError, method, passedIn) => { + memberHelper.parseMemberCommand(authorId, authorFull, args).catch((result) => { + expect(result).toEqual(new Error(expectedError)); + expect(memberHelper[method]).toHaveBeenCalledTimes(1); + expect(memberHelper[method]).toHaveBeenCalledWith(authorId, passedIn) + }); + }); + }) + + afterEach(() => { // restore the spy created with spyOn