Event API: add follow up event unwind test (#15612)
Dominic Gannaway committed
May 10, 2019 at 13:36 UTC
90f54d77f3bcc93cd9b298b5de6385bd6c16c4dc
1 file changed
+37
packages/react-reconciler/src/__tests__/ReactFiberEvents-test-internal.js
+37
@@ -788,6 +788,43 @@ describe('ReactFiberEvents', () => {
788
expect(componentStackMessage.includes('Test')).toBe(true);
789
expect(componentStackMessage.includes('Wrapper')).toBe(true);
790
});
791
+
792
+ it('should handle unwinding event component fibers in concurrent mode', () => {
793
+ let resolveThenable;
794
+
795
+ const thenable = {
796
+ then(resolve) {
797
+ resolveThenable = resolve;
798
+ },
799
+ };
800
+
801
+ function Async() {
802
+ Scheduler.yieldValue('Suspend!');
803
+ throw thenable;
804
+ }
805
+
806
+ function Text(props) {
807
+ Scheduler.yieldValue(props.text);
808
+ return props.text;
809
+ }
810
+
811
+ ReactTestRenderer.create(
812
+ <React.Suspense fallback={<Text text="Loading..." />}>
813
+ <EventComponent>
814
+ <div>
815
+ <Async />
816
+ <Text text="Sibling" />
817
+ </div>
818
+ </EventComponent>
819
+ </React.Suspense>,
820
+ {
821
+ unstable_isConcurrent: true,
822
+ },
823
+ );
824
+
825
+ expect(Scheduler).toFlushAndYieldThrough(['Suspend!']);
826
+ resolveThenable();
827
+ });
828
});
829
830
describe('ReactDOM', () => {