diff --git a/lib/utils.js b/lib/utils.js index c1daa56f..a36d3e41 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -46,6 +46,10 @@ export function printAndExit (message, code = 1) { } export function getDisplayName (Component) { + if (typeof Component === 'string') { + return Component + } + return Component.displayName || Component.name || 'Unknown' } diff --git a/test/unit/getDisplayName.test.js b/test/unit/getDisplayName.test.js new file mode 100644 index 00000000..8181de67 --- /dev/null +++ b/test/unit/getDisplayName.test.js @@ -0,0 +1,30 @@ +/* global describe, it, expect */ +import { Component } from 'react' +import { getDisplayName } from '../../dist/lib/utils' + +describe('getDisplayName', () => { + it('gets the proper display name of a component', () => { + class ComponentOne extends Component { + render () { + return null + } + } + + class ComponentTwo extends Component { + static displayName = 'CustomDisplayName' + render () { + return null + } + } + + function FunctionalComponent () { + return null + } + + expect(getDisplayName(ComponentOne)).toBe('ComponentOne') + expect(getDisplayName(ComponentTwo)).toBe('CustomDisplayName') + expect(getDisplayName(FunctionalComponent)).toBe('FunctionalComponent') + expect(getDisplayName(() => null)).toBe('Unknown') + expect(getDisplayName('div')).toBe('div') + }) +})