From 5bb5f9197a6755cbc7d9bcfa9fb3841793b8cfa4 Mon Sep 17 00:00:00 2001 From: Benjamin Dupont Date: Sun, 7 Aug 2022 03:05:53 -0400 Subject: [PATCH] test(errors): add error tests --- src/errors.test.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/errors.test.ts diff --git a/src/errors.test.ts b/src/errors.test.ts new file mode 100644 index 0000000..bf6eac4 --- /dev/null +++ b/src/errors.test.ts @@ -0,0 +1,36 @@ +import { FragmenterError, FragmenterErrorCode } from './errors'; + +describe('FragmenterError', () => { + describe('isFragmenterError', () => { + it('identifies a FragmenterError', () => { + const error = FragmenterError.create(FragmenterErrorCode.PermissionsError, 'aw hell nah'); + + expect(FragmenterError.isFragmenterError(error)).toBeTruthy(); + }); + + it('does not identify a not FragmenterError', () => { + const error = new Error('when the amogus imposter is sus'); + + expect(FragmenterError.isFragmenterError(error)).toBeFalsy(); + }); + }); + + describe('parseFromMessage', () => { + it('parses valid FragmenterError', () => { + const msg = 'FragmenterError(PermissionsError): EPERM'; + + const parsed = FragmenterError.parseFromMessage(msg); + + expect(parsed.code).toBe(FragmenterErrorCode.PermissionsError); + expect(parsed.message).toBe('FragmenterError(PermissionsError): EPERM'); + }); + + it('does not parse invalid FragmenterError', () => { + const msg = 'NotAFragmenterError(EPERM)'; + + expect(() => { + FragmenterError.parseFromMessage(msg); + }).toThrow(expect.objectContaining({ message: 'Could not parse FragmenterError: does not match regex' })); + }); + }); +});