66import org .junit .Before ;
77import org .junit .Test ;
88
9+ import java .text .SimpleDateFormat ;
10+ import java .util .Calendar ;
911import java .util .List ;
1012import java .util .Optional ;
1113
@@ -21,6 +23,8 @@ public class ETDataExtensionIntegrationTest {
2123 private static final String TARGET_LOCALE = "de-DE" ;
2224 private static final String LANGUAGE_COLUMN_NAME = "User_Language__c" ;
2325
26+ private SimpleDateFormat formatter = new SimpleDateFormat ("M/dd/yyyy hh:mm:ss a" );
27+
2428 private ETClient client ;
2529
2630 @ Before
@@ -162,6 +166,72 @@ public void shouldUpdate() throws Exception {
162166 assertEquals (updatedTestColumnValue , foundRow .get ().getColumn ("test column" ));
163167 }
164168
169+ @ Test
170+ public void shouldNotInsertAndUpdateInvalidDate () throws Exception {
171+ ETDataExtension dataExtension = new ETDataExtension ();
172+ dataExtension .setName ("Test name" + RandomStringUtils .random (5 ));
173+ dataExtension .setKey ("Test_key" + RandomUtils .nextInt ());
174+ dataExtension .addColumn (LANGUAGE_COLUMN_NAME , true );
175+ dataExtension .addColumn ("test date" , ETDataExtensionColumn .Type .DATE );
176+
177+ client .create (dataExtension );
178+
179+ String date = formatter .format (Calendar .getInstance ().getTime ());
180+
181+ Calendar calendar = Calendar .getInstance ();
182+ calendar .add (Calendar .YEAR , 1 );
183+ String updatedDate = formatter .format (calendar .getTime ());
184+
185+ // insert date column in valid format
186+ ETDataExtensionRow insertedRow = new ETDataExtensionRow ();
187+ insertedRow .setColumn (LANGUAGE_COLUMN_NAME , DEFAULT_SOURCE_LOCALE );
188+ insertedRow .setColumn ("test date" , date );
189+ ETResponse <ETDataExtensionRow > response = dataExtension .insert (insertedRow );
190+ assertNotNull (response .getRequestId ());
191+ assertEquals (OK , response .getStatus ());
192+
193+ List <ETDataExtensionRow > rows = dataExtension .select ().getObjects ();
194+ assertNotNull (rows );
195+ assertEquals (1 , rows .size ());
196+ assertEquals (date , rows .get (0 ).getColumn ("test date" ));
197+
198+ // insert date column in invalid format
199+ insertedRow = new ETDataExtensionRow ();
200+ insertedRow .setColumn (LANGUAGE_COLUMN_NAME , TARGET_LOCALE );
201+ insertedRow .setColumn ("test date" , RandomStringUtils .random (8 ));
202+ response = dataExtension .insert (insertedRow );
203+ assertNotNull (response .getRequestId ());
204+ assertEquals (ERROR , response .getStatus ());
205+
206+ rows = dataExtension .select ().getObjects ();
207+ assertNotNull (rows );
208+ assertEquals (1 , rows .size ());
209+
210+ // update date column in valid format
211+ ETDataExtensionRow updatedRow = rows .get (0 );
212+ updatedRow .setColumn ("test date" , updatedDate );
213+ response = dataExtension .update (updatedRow );
214+ assertNotNull (response .getRequestId ());
215+ assertEquals (OK , response .getStatus ());
216+
217+ rows = dataExtension .select ().getObjects ();
218+ assertNotNull (rows );
219+ assertEquals (1 , rows .size ());
220+ assertEquals (updatedDate , rows .get (0 ).getColumn ("test date" ));
221+
222+ // update date column in invalid format
223+ updatedRow = rows .get (0 );
224+ updatedRow .setColumn ("test date" , RandomStringUtils .random (8 ));
225+ response = dataExtension .update (updatedRow );
226+ assertNotNull (response .getRequestId ());
227+ assertEquals (ERROR , response .getStatus ());
228+
229+ rows = dataExtension .select ().getObjects ();
230+ assertNotNull (rows );
231+ assertEquals (1 , rows .size ());
232+ assertEquals (updatedDate , rows .get (0 ).getColumn ("test date" ));
233+ }
234+
165235 private static Optional <ETDataExtensionRow > getDataExtensionRowByLanguage (List <ETDataExtensionRow > rows , String language )
166236 {
167237 return rows .stream ().filter (row -> language .equals (row .getColumn (LANGUAGE_COLUMN_NAME ))).findFirst ();
0 commit comments