Skip to content

Commit e12e3e1

Browse files
authored
fix: preserve default undecoded result
1 parent 35754f8 commit e12e3e1

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

lib/MessageDecoder.test.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,30 @@ describe('MessageDecoder', () => {
6161
expect(decodeResult.message.label).toBe('H1');
6262
expect(decodeResult.formatted.items.length).toBe(5);
6363
});
64+
65+
test('preserves default fallback result when no plugin decodes', () => {
66+
const message = {
67+
label: '44',
68+
text: 'GARBAGE TEXT THAT SHOULD NOT MATCH',
69+
};
70+
71+
const decodeResult = decoder.decode(message);
72+
73+
expect(decodeResult.decoded).toBe(false);
74+
expect(decodeResult.error).toBe('No known decoder plugin for this message');
75+
expect(decodeResult.decoder).toEqual({
76+
name: 'none',
77+
type: 'none',
78+
decodeLevel: 'none',
79+
});
80+
expect(decodeResult.message).toBe(message);
81+
expect(decodeResult.remaining).toEqual({
82+
text: message.text,
83+
});
84+
expect(decodeResult.raw).toEqual({});
85+
expect(decodeResult.formatted).toEqual({
86+
description: 'Not Decoded',
87+
items: [],
88+
});
89+
});
6490
});

lib/MessageDecoder.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,9 @@ export class MessageDecoder {
168168

169169
for (let i = 0; i < usablePlugins.length; i++) {
170170
const plugin = usablePlugins[i];
171-
result = plugin.decode(message, options);
172-
if (result.decoded) {
171+
const pluginResult = plugin.decode(message, options);
172+
if (pluginResult.decoded) {
173+
result = pluginResult;
173174
break;
174175
}
175176
}

0 commit comments

Comments
 (0)