| 
				
			 | 
			
			
				@@ -62,4 +62,43 @@ describe('AppCommands', () => { 
			 | 
		
	
		
			
			| 
				62
			 | 
			
				62
			 | 
			
			
				       expect(result).toEqual('the resolved layout'); 
			 | 
		
	
		
			
			| 
				63
			 | 
			
				63
			 | 
			
			
				     }); 
			 | 
		
	
		
			
			| 
				64
			 | 
			
				64
			 | 
			
			
				   }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				65
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				66
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				67
			 | 
			
			
				+  describe('showModal', () => { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				68
			 | 
			
			
				+    it('sends command to native after parsing into a correct layout tree', () => { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				69
			 | 
			
			
				+      uut.showModal({ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				70
			 | 
			
			
				+        name: 'com.example.MyScreen' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				71
			 | 
			
			
				+      }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				72
			 | 
			
			
				+      expect(mockCommandsSender.showModal).toHaveBeenCalledTimes(1); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				73
			 | 
			
			
				+      expect(mockCommandsSender.showModal).toHaveBeenCalledWith({ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				74
			 | 
			
			
				+        type: 'Container', 
			 | 
		
	
		
			
			| 
				
			 | 
			
				75
			 | 
			
			
				+        id: 'Container+UNIQUE_ID', 
			 | 
		
	
		
			
			| 
				
			 | 
			
				76
			 | 
			
			
				+        children: [], 
			 | 
		
	
		
			
			| 
				
			 | 
			
				77
			 | 
			
			
				+        data: { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				+          name: 'com.example.MyScreen' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				79
			 | 
			
			
				+        } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				80
			 | 
			
			
				+      }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				+    }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				82
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				83
			 | 
			
			
				+    it('deep clones input to avoid mutation errors', () => { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				84
			 | 
			
			
				+      const obj = {}; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				85
			 | 
			
			
				+      uut.showModal({ inner: obj }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				86
			 | 
			
			
				+      expect(mockCommandsSender.showModal.mock.calls[0][0].data.inner).not.toBe(obj); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				87
			 | 
			
			
				+    }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				88
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				89
			 | 
			
			
				+    it('passProps into containers', () => { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				90
			 | 
			
			
				+      expect(store.getPropsForContainerId('Container+UNIQUE_ID')).toEqual({}); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				91
			 | 
			
			
				+      uut.showModal({ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				92
			 | 
			
			
				+        name: 'com.example.MyScreen', 
			 | 
		
	
		
			
			| 
				
			 | 
			
				93
			 | 
			
			
				+        passProps: SimpleLayouts.passProps 
			 | 
		
	
		
			
			| 
				
			 | 
			
				94
			 | 
			
			
				+      }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				95
			 | 
			
			
				+      expect(store.getPropsForContainerId('Container+UNIQUE_ID')).toEqual(SimpleLayouts.passProps); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				96
			 | 
			
			
				+    }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				97
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				98
			 | 
			
			
				+    it('returns a promise with the resolved layout', async () => { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				99
			 | 
			
			
				+      mockCommandsSender.showModal.mockReturnValue(Promise.resolve('the resolved layout')); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				100
			 | 
			
			
				+      const result = await uut.showModal({ container: { name: 'com.example.MyScreen' } }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				101
			 | 
			
			
				+      expect(result).toEqual('the resolved layout'); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				102
			 | 
			
			
				+    }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				103
			 | 
			
			
				+  }); 
			 | 
		
	
		
			
			| 
				65
			 | 
			
				104
			 | 
			
			
				 }); 
			 |