diff --git a/lib/MessageDecoder.test.ts b/lib/MessageDecoder.test.ts index a679ed3..3788b4e 100644 --- a/lib/MessageDecoder.test.ts +++ b/lib/MessageDecoder.test.ts @@ -61,4 +61,30 @@ describe('MessageDecoder', () => { expect(decodeResult.message.label).toBe('H1'); expect(decodeResult.formatted.items.length).toBe(5); }); + + test('preserves default fallback result when no plugin decodes', () => { + const message = { + label: '44', + text: 'GARBAGE TEXT THAT SHOULD NOT MATCH', + }; + + const decodeResult = decoder.decode(message); + + expect(decodeResult.decoded).toBe(false); + expect(decodeResult.error).toBe('No known decoder plugin for this message'); + expect(decodeResult.decoder).toEqual({ + name: 'none', + type: 'none', + decodeLevel: 'none', + }); + expect(decodeResult.message).toBe(message); + expect(decodeResult.remaining).toEqual({ + text: message.text, + }); + expect(decodeResult.raw).toEqual({}); + expect(decodeResult.formatted).toEqual({ + description: 'Not Decoded', + items: [], + }); + }); }); diff --git a/lib/MessageDecoder.ts b/lib/MessageDecoder.ts index b40f43a..999f960 100644 --- a/lib/MessageDecoder.ts +++ b/lib/MessageDecoder.ts @@ -168,8 +168,9 @@ export class MessageDecoder { for (let i = 0; i < usablePlugins.length; i++) { const plugin = usablePlugins[i]; - result = plugin.decode(message, options); - if (result.decoded) { + const pluginResult = plugin.decode(message, options); + if (pluginResult.decoded) { + result = pluginResult; break; } }