@datadog/mobile-react-native
Version:
A client-side React Native module to interact with Datadog
50 lines (41 loc) • 1.69 kB
text/typescript
/*
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/
import { getErrorName } from '../errorUtils';
describe('errorUtils', () => {
describe('getErrorName', () => {
it('returns the error.name if defined', () => {
let error;
try {
// eslint-disable-next-line no-unused-expressions
error.bad.property;
} catch (e) {
// error will be a TypeError
error = e;
}
expect(getErrorName(error)).toBe('TypeError');
});
it('returns the error.name if defined by an extension', () => {
class CustomError extends Error {
name = 'CustomError';
}
const error = new CustomError('some custom error');
expect(getErrorName(error)).toBe('CustomError');
});
it('returns "Error" for an Error object', () => {
const error = new Error('some error');
expect(getErrorName(error)).toBe('Error');
});
it('returns "Error" for an object without a name property', () => {
const error = { message: 'some error' };
expect(getErrorName(error)).toBe('Error');
});
it('returns "Error" for an non object types', () => {
expect(getErrorName(undefined)).toBe('Error');
expect(getErrorName(null)).toBe('Error');
expect(getErrorName('some error')).toBe('Error');
});
});
});