File tree Expand file tree Collapse file tree 4 files changed +23
-1
lines changed
Filter options
Expand file tree Collapse file tree 4 files changed +23
-1
lines changed
Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ describe('Record', () => {
32
32
const me = Person ( { name : 'My Name' } ) ;
33
33
expect ( me . toString ( ) ) . toEqual ( 'Person { name: "My Name" }' ) ;
34
34
expect ( Record . getDescriptiveName ( me ) ) . toEqual ( 'Person' ) ;
35
+ expect ( Person . displayName ) . toBe ( 'Person' ) ;
35
36
} ) ;
36
37
37
38
it ( 'passes through records of the same type' , ( ) => {
Original file line number Diff line number Diff line change @@ -52,6 +52,14 @@ describe('Record', () => {
52
52
expect ( t instanceof Alphabet ) ;
53
53
expect ( t . soup ( ) ) . toBe ( 6 ) ;
54
54
expect ( t2 . soup ( ) ) . toBe ( 204 ) ;
55
+
56
+ // Uses class name as descriptive name
57
+ expect ( Record . getDescriptiveName ( t ) ) . toBe ( 'Alphabet' ) ;
58
+
59
+ // Uses display name over class name
60
+ class NotADisplayName extends Record ( { x : 1 } , 'DisplayName' ) { }
61
+ const t3 = new NotADisplayName ( ) ;
62
+ expect ( Record . getDescriptiveName ( t3 ) ) . toBe ( 'DisplayName' ) ;
55
63
} ) ;
56
64
57
65
it ( 'can be cleared' , ( ) => {
Original file line number Diff line number Diff line change @@ -44,6 +44,9 @@ export class Record {
44
44
hasInitialized = true ;
45
45
const keys = Object . keys ( defaultValues ) ;
46
46
const indices = ( RecordTypePrototype . _indices = { } ) ;
47
+ // Deprecated: left to attempt not to break any external code which
48
+ // relies on a ._name property existing on record instances.
49
+ // Use Record.getDescriptiveName() instead
47
50
RecordTypePrototype . _name = name ;
48
51
RecordTypePrototype . _keys = keys ;
49
52
RecordTypePrototype . _defaultValues = defaultValues ;
@@ -81,6 +84,10 @@ export class Record {
81
84
) ) ;
82
85
RecordTypePrototype . constructor = RecordType ;
83
86
87
+ if ( name ) {
88
+ RecordType . displayName = name ;
89
+ }
90
+
84
91
return RecordType ;
85
92
}
86
93
@@ -220,7 +227,7 @@ function makeRecord(likeRecord, values, ownerID) {
220
227
}
221
228
222
229
function recordName ( record ) {
223
- return record . _name || record . constructor . name || 'Record' ;
230
+ return record . constructor . displayName || record . constructor . name || 'Record' ;
224
231
}
225
232
226
233
function recordSeq ( record ) {
Original file line number Diff line number Diff line change @@ -2446,6 +2446,12 @@ declare module Immutable {
2446
2446
export interface Factory < TProps extends Object > {
2447
2447
( values ?: Partial < TProps > | Iterable < [ string , any ] > ) : Record < TProps > & Readonly < TProps > ;
2448
2448
new ( values ?: Partial < TProps > | Iterable < [ string , any ] > ) : Record < TProps > & Readonly < TProps > ;
2449
+
2450
+ /**
2451
+ * The name provided to `Record(values, name)` can be accessed with
2452
+ * `displayName`.
2453
+ */
2454
+ displayName : string ;
2449
2455
}
2450
2456
2451
2457
export function Factory < TProps extends Object > ( values ?: Partial < TProps > | Iterable < [ string , any ] > ) : Record < TProps > & Readonly < TProps > ;
You can’t perform that action at this time.
0 commit comments