@@ -22,6 +22,25 @@ public class Order
2222 public decimal OrderTotal ;
2323 }
2424
25+ public class CustomerSingleOrder
26+ {
27+ public int Id ;
28+ public string FirstName ;
29+ public string LastName ;
30+ public SingleOrder Order ;
31+ }
32+
33+ public class SingleOrder
34+ {
35+ public int Id ;
36+ public OrderDetails Details ;
37+ }
38+
39+ public class OrderDetails
40+ {
41+ public string Address ;
42+ }
43+
2544 [ Test ]
2645 public void Can_Handle_Mapping_A_Single_Dynamic_Object ( )
2746 {
@@ -66,5 +85,47 @@ public void Can_Handle_Mapping_Nested_Members_Using_Dynamic()
6685 Assert . That ( customers . Count ( ) == 5 ) ;
6786 Assert . That ( customers . First ( ) . Orders . Count == 1 ) ;
6887 }
88+
89+ [ Test ]
90+ public void Nested_Member_Should_Be_Null_If_All_Values_Are_Null ( )
91+ {
92+ // Arrange
93+ dynamic customer = new ExpandoObject ( ) ;
94+ customer . Id = 1 ;
95+ customer . FirstName = "FirstName" ;
96+ customer . LastName = "LastName" ;
97+ customer . Order_Id = null ;
98+ customer . Order_OrderTotal = null ;
99+
100+ // Act
101+ var test = Slapper . AutoMapper . MapDynamic < CustomerSingleOrder > ( customer ) ;
102+
103+ // Assert
104+ Assert . That ( test != null ) ;
105+ Assert . That ( test . Order == null ) ;
106+ }
107+
108+ [ Test ]
109+ public void Nested_Member_Should_Be_Null_Only_If_All_Nested_Values_Are_Null ( )
110+ {
111+ // Arrange
112+ dynamic customer = new ExpandoObject ( ) ;
113+ customer . Id = 1 ;
114+ customer . FirstName = "FirstName" ;
115+ customer . LastName = "LastName" ;
116+ customer . Order_Id = null ;
117+ customer . Order_OrderTotal = null ;
118+ customer . Order_Details_Address = "123 Fake Ave." ;
119+
120+ // Act
121+ var test = Slapper . AutoMapper . MapDynamic < CustomerSingleOrder > ( customer ) ;
122+
123+ // Assert
124+ Assert . That ( test != null ) ;
125+ Assert . That ( test . Order != null ) ;
126+ Assert . That ( test . Order . Details != null ) ;
127+ Assert . That ( ! string . IsNullOrWhiteSpace ( test . Order . Details . Address ) ) ;
128+ Assert . That ( test . Order . Details . Address == "123 Fake Ave." ) ;
129+ }
69130 }
70131}
0 commit comments