Skip to content

Commit d75973d

Browse files
committed
Add test for multiple deepMerge calls
1 parent 12bfdf9 commit d75973d

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

packages/interactivity/src/proxies/test/deep-merge.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,50 @@ describe( 'Interactivity API', () => {
582582
expect( double ).toBe( 6 );
583583
} );
584584

585+
it( 'should set the last value for multiple-overwritten getters', async () => {
586+
const target: any = proxifyState( 'test', {
587+
number: 2,
588+
double: 4,
589+
} );
590+
591+
let double: any;
592+
const spy = jest.fn( () => ( double = target.double ) );
593+
effect( spy );
594+
595+
expect( spy ).toHaveBeenCalledTimes( 1 );
596+
expect( double ).toBe( 4 );
597+
598+
deepMerge(
599+
target,
600+
{
601+
number: 3,
602+
get double() {
603+
return this.number * 2;
604+
},
605+
},
606+
true
607+
);
608+
609+
deepMerge(
610+
target,
611+
{
612+
number: 3,
613+
get double() {
614+
return `${ this.number * 2 }!`;
615+
},
616+
},
617+
true
618+
);
619+
620+
expect( spy ).toHaveBeenCalledTimes( 1 );
621+
expect( double ).toBe( 4 );
622+
623+
// Access the getter synchronously.
624+
expect( target.double ).toBe( '6!' );
625+
expect( spy ).toHaveBeenCalledTimes( 2 );
626+
expect( double ).toBe( '6!' );
627+
} );
628+
585629
describe( 'arrays', () => {
586630
it( 'should handle arrays', () => {
587631
const target = { a: [ 1, 2 ] };

0 commit comments

Comments
 (0)