@@ -5,7 +5,6 @@ import { NativeEventsReceiver } from '../adapters/NativeEventsReceiver.mock';
55
66describe ( 'ComponentEventsObserver' , ( ) => {
77 const mockEventsReceiver = new NativeEventsReceiver ( ) ;
8- const uut = new ComponentEventsObserver ( mockEventsReceiver ) ;
98 const didAppearFn = jest . fn ( ) ;
109 const didDisappearFn = jest . fn ( ) ;
1110 const didMountFn = jest . fn ( ) ;
@@ -16,13 +15,60 @@ describe('ComponentEventsObserver', () => {
1615 const previewCompletedFn = jest . fn ( ) ;
1716 const modalDismissedFn = jest . fn ( ) ;
1817 let subscription ;
18+ let uut ;
1919
2020 class SimpleScreen extends React . Component < any , any > {
2121 render ( ) {
2222 return 'Hello' ;
2323 }
2424 }
2525
26+ class UnboundScreen extends React . Component < any , any > {
27+ constructor ( props ) {
28+ super ( props ) ;
29+ }
30+
31+ componentDidMount ( ) {
32+ didMountFn ( ) ;
33+ }
34+
35+ componentWillUnmount ( ) {
36+ willUnmountFn ( ) ;
37+ }
38+
39+ componentDidAppear ( ) {
40+ didAppearFn ( ) ;
41+ }
42+
43+ componentDidDisappear ( ) {
44+ didDisappearFn ( ) ;
45+ }
46+
47+ navigationButtonPressed ( event ) {
48+ navigationButtonPressedFn ( event ) ;
49+ }
50+
51+ modalDismissed ( event ) {
52+ modalDismissedFn ( event ) ;
53+ }
54+
55+ searchBarUpdated ( event ) {
56+ searchBarUpdatedFn ( event ) ;
57+ }
58+
59+ searchBarCancelPressed ( event ) {
60+ searchBarCancelPressedFn ( event ) ;
61+ }
62+
63+ previewCompleted ( event ) {
64+ previewCompletedFn ( event ) ;
65+ }
66+
67+ render ( ) {
68+ return 'Hello' ;
69+ }
70+ }
71+
2672 class BoundScreen extends React . Component < any , any > {
2773 constructor ( props ) {
2874 super ( props ) ;
@@ -70,13 +116,43 @@ describe('ComponentEventsObserver', () => {
70116 }
71117 }
72118
119+ beforeEach ( ( ) => {
120+ jest . clearAllMocks ( ) ;
121+ uut = new ComponentEventsObserver ( mockEventsReceiver ) ;
122+ } ) ;
123+
73124 it ( `bindComponent expects a component with componentId` , ( ) => {
74125 const tree = renderer . create ( < SimpleScreen /> ) ;
75126 expect ( ( ) => uut . bindComponent ( tree . getInstance ( ) as any ) ) . toThrow ( '' ) ;
76127 const tree2 = renderer . create ( < SimpleScreen componentId = { 123 } /> ) ;
77128 expect ( ( ) => uut . bindComponent ( tree2 . getInstance ( ) as any ) ) . toThrow ( '' ) ;
78129 } ) ;
79130
131+ it ( `bindComponent accepts an optional componentId` , ( ) => {
132+ const tree = renderer . create ( < UnboundScreen /> ) ;
133+ uut . bindComponent ( tree . getInstance ( ) as any , 'myCompId' )
134+
135+ expect ( tree . toJSON ( ) ) . toBeDefined ( ) ;
136+ expect ( didAppearFn ) . not . toHaveBeenCalled ( ) ;
137+
138+ uut . notifyComponentDidAppear ( { componentId : 'myCompId' , componentName : 'doesnt matter' } ) ;
139+ expect ( didAppearFn ) . toHaveBeenCalledTimes ( 1 ) ;
140+ } ) ;
141+
142+ it ( `bindComponent should use optional componentId if component has a componentId in props` , ( ) => {
143+ const tree = renderer . create ( < UnboundScreen componentId = { 'doNotUseThisId' } /> ) ;
144+ uut . bindComponent ( tree . getInstance ( ) as any , 'myCompId' )
145+
146+ expect ( tree . toJSON ( ) ) . toBeDefined ( ) ;
147+
148+ uut . notifyComponentDidAppear ( { componentId : 'dontUseThisId' , componentName : 'doesnt matter' } ) ;
149+ expect ( didAppearFn ) . not . toHaveBeenCalled ( ) ;
150+
151+
152+ uut . notifyComponentDidAppear ( { componentId : 'myCompId' , componentName : 'doesnt matter' } ) ;
153+ expect ( didAppearFn ) . toHaveBeenCalledTimes ( 1 ) ;
154+ } ) ;
155+
80156 it ( `bindComponent notifies listeners by componentId on events` , ( ) => {
81157 const tree = renderer . create ( < BoundScreen componentId = { 'myCompId' } /> ) ;
82158 expect ( tree . toJSON ( ) ) . toBeDefined ( ) ;
0 commit comments