diff --git a/src/helpers/memberHelper.js b/src/helpers/memberHelper.js index 986b0db..7ca02b6 100644 --- a/src/helpers/memberHelper.js +++ b/src/helpers/memberHelper.js @@ -24,18 +24,17 @@ const commandList = ['--help', 'new', 'remove', 'name', 'list', 'displayName', ' * @throws {Error} */ mh.parseMemberCommand = async function (authorId, authorFull, args, attachmentUrl = null, attachmentExpiration = null) { - let member; + const memberName = !commandList.includes(args[0]) ? args[0] : args[1]; + // checks whether command is in list, otherwise assumes it's a name - if (!commandList.includes(args[0])) { - member = await mh.getMemberByName(authorId, args[1]).then((m) => { - if (!m) { - return enums.err.NO_MEMBER; - } - }) - } + const member = await mh.getMemberByName(authorId, memberName).then((m) => { + if (!m) { + return enums.err.NO_MEMBER; + } + }) + + switch (args[0]) { - case '--help': - return mh.getMemberCommandInfo(); case 'new': return await mh.addNewMember(authorId, args, attachmentUrl).catch((e) => { throw e @@ -59,31 +58,33 @@ mh.parseMemberCommand = async function (authorId, authorFull, args, attachmentUr return await mh.getAllMembersInfo(authorId, authorFull).catch((e) => { throw e }); + case '--help': case '': - return enums.help.MEMBER; + return mh.getMemberCommandInfo(); } switch (args[1]) { case 'name': - return await mh.updateName(authorId, member.name, args[2]).catch((e) => { + if (!args[2]) return member.name ?? `Name ${enums.err.NO_VALUE}`; + return await mh.updateName(authorId, args[1], args[2]).catch((e) => { throw e }); case 'displayname': if (!args[2]) return member.displayname ?? `Display name ${enums.err.NO_VALUE}`; - return await mh.updateDisplayName(authorId, member.name, args[2]).catch((e) => { + return await mh.updateDisplayName(authorId, args[1], args[2]).catch((e) => { throw e }); case 'proxy': if (!args[2]) return member.proxy ?? `Proxy ${enums.err.NO_VALUE}`; - return await mh.updateProxy(authorId, member.name, args[2]).catch((e) => { + return await mh.updateProxy(authorId, args[1], args[2]).catch((e) => { throw e }); case 'propic': if (!args[2]) return member.propic ?? `Profile picture ${enums.err.NO_VALUE}`; - return await mh.updatePropic(authorId, member.name, args[2], attachmentUrl, attachmentExpiration).catch((e) => { + return await mh.updatePropic(authorId, args[1], args[2], attachmentUrl, attachmentExpiration).catch((e) => { throw e }); default: - return await mh.getMemberInfo(authorId, member.name); + return await mh.getMemberInfo(authorId, args[1]); } } diff --git a/tests/helpers/memberHelper.test.js b/tests/helpers/memberHelper.test.js index 4442750..6e621af 100644 --- a/tests/helpers/memberHelper.test.js +++ b/tests/helpers/memberHelper.test.js @@ -12,6 +12,8 @@ jest.mock('../../src/database.js', () => { create: jest.fn().mockResolvedValue(), update: jest.fn().mockResolvedValue(), destroy: jest.fn().mockResolvedValue(), + findOne: jest.fn().mockResolvedValue(), + findAll: jest.fn().mockResolvedValue(), } } } @@ -24,15 +26,24 @@ describe('MemberHelper', () => { const authorFull = "author#0001"; const attachmentUrl = "../oya.png"; const attachmentExpiration = new Date('2026-01-01T00.00.00.0000Z') - + const member = { + name: "somePerson", + displayname: "Some Person", + proxy: "--text", + propic: "oya.png" + } beforeEach(() => { jest.resetModules(); jest.clearAllMocks(); + jest.spyOn(memberHelper, 'getMemberByName').mockResolvedValue(member); }) describe('parseMemberCommand', () => { + + beforeEach(() => { + jest.spyOn(memberHelper, 'getMemberInfo').mockResolvedValue("member info"); jest.spyOn(memberHelper, 'addNewMember').mockResolvedValue("new member"); jest.spyOn(memberHelper, 'removeMember').mockResolvedValue("remove member"); @@ -41,7 +52,8 @@ describe('MemberHelper', () => { jest.spyOn(memberHelper, 'updateDisplayName').mockResolvedValue("update display name"); jest.spyOn(memberHelper, 'updateProxy').mockResolvedValue("update proxy"); jest.spyOn(memberHelper, 'updatePropic').mockResolvedValue("update propic"); - jest.spyOn(memberHelper, 'getProxyByMember').mockResolvedValue("get proxy"); + + jest.spyOn(memberHelper, 'getMemberCommandInfo').mockResolvedValue("member command info"); }); test.each([