-
Notifications
You must be signed in to change notification settings - Fork 46.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[react-devtools-shared] Added string type check for object name prop …
…in getDisplayName function (#16798) * [react-devtools-shared] Added string type check for object name prop in getDisplayName function from utils.js file; tests included; * Re-added empty string check to getDisplayName() * Tweaked tests to use real functions This more closely simulates how the utility is being used in production, and would catch cases like anonymous functions (with empty string names).
- Loading branch information
Showing
2 changed files
with
43 additions
and
5 deletions.
There are no files selected for viewing
40 changes: 40 additions & 0 deletions
40
packages/react-devtools-shared/src/__tests__/utils-test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
/** | ||
* Copyright (c) Facebook, Inc. and its affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
* | ||
* @flow | ||
*/ | ||
|
||
import {getDisplayName} from 'react-devtools-shared/src/utils'; | ||
|
||
describe('utils', () => { | ||
describe('getDisplayName', () => { | ||
it('should return a function name', () => { | ||
function FauxComponent() {} | ||
expect(getDisplayName(FauxComponent)).toEqual('FauxComponent'); | ||
}); | ||
|
||
it('should return a displayName name if specified', () => { | ||
function FauxComponent() {} | ||
FauxComponent.displayName = 'OverrideDisplayName'; | ||
expect(getDisplayName(FauxComponent)).toEqual('OverrideDisplayName'); | ||
}); | ||
|
||
it('should return the fallback for anonymous functions', () => { | ||
expect(getDisplayName(() => {}, 'Fallback')).toEqual('Fallback'); | ||
}); | ||
|
||
it('should return Anonymous for anonymous functions without a fallback', () => { | ||
expect(getDisplayName(() => {})).toEqual('Anonymous'); | ||
}); | ||
|
||
// Simulate a reported bug: | ||
// https://github.com/facebook/react/issues/16685 | ||
it('should return a fallback when the name prop is not a string', () => { | ||
const FauxComponent = {name: {}}; | ||
expect(getDisplayName(FauxComponent, 'Fallback')).toEqual('Fallback'); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters