1818
1919import com .google .common .collect .Lists ;
2020import io .cdap .cdap .api .data .schema .Schema ;
21+ import io .cdap .cdap .api .exception .ProgramFailureException ;
2122import org .junit .Assert ;
2223import org .junit .Test ;
2324import org .junit .runner .RunWith ;
2728import java .sql .ResultSet ;
2829import java .sql .ResultSetMetaData ;
2930import java .sql .SQLException ;
31+ import java .sql .Types ;
3032import java .util .List ;
3133
3234public class OracleSchemaReaderTest {
3335
3436 @ Test
3537 public void getSchema_timestampLTZFieldTrue_returnTimestamp () throws SQLException {
36- OracleSourceSchemaReader schemaReader = new OracleSourceSchemaReader (null , false , false , true );
38+ OracleSourceSchemaReader schemaReader = new OracleSourceSchemaReader (null , false , false , true , false );
3739
3840 ResultSet resultSet = Mockito .mock (ResultSet .class );
3941 ResultSetMetaData metadata = Mockito .mock (ResultSetMetaData .class );
@@ -64,7 +66,7 @@ public void getSchema_timestampLTZFieldTrue_returnTimestamp() throws SQLExceptio
6466
6567 @ Test
6668 public void getSchema_timestampLTZFieldFalse_returnDatetime () throws SQLException {
67- OracleSourceSchemaReader schemaReader = new OracleSourceSchemaReader (null , false , false , false );
69+ OracleSourceSchemaReader schemaReader = new OracleSourceSchemaReader (null , false , false , false , false );
6870
6971 ResultSet resultSet = Mockito .mock (ResultSet .class );
7072 ResultSetMetaData metadata = Mockito .mock (ResultSetMetaData .class );
@@ -91,4 +93,37 @@ public void getSchema_timestampLTZFieldFalse_returnDatetime() throws SQLExceptio
9193 Assert .assertEquals (expectedSchemaFields .get (1 ).getName (), actualSchemaFields .get (1 ).getName ());
9294 Assert .assertEquals (expectedSchemaFields .get (1 ).getSchema (), actualSchemaFields .get (1 ).getSchema ());
9395 }
96+
97+ @ Test
98+ public void getSchema_xmlField_returnString () throws SQLException {
99+ OracleSourceSchemaReader schemaReader = new OracleSourceSchemaReader (null , false , false , false , true );
100+ ResultSet resultSet = Mockito .mock (ResultSet .class );
101+ ResultSetMetaData metadata = Mockito .mock (ResultSetMetaData .class );
102+ Mockito .when (resultSet .getMetaData ()).thenReturn (metadata );
103+ Mockito .when (metadata .getColumnCount ()).thenReturn (1 );
104+ Mockito .when (metadata .getColumnType (1 )).thenReturn (Types .SQLXML );
105+ Mockito .when (metadata .getColumnName (1 )).thenReturn ("xmlData" );
106+
107+ List <Schema .Field > actualSchemaFields = schemaReader .getSchemaFields (resultSet );
108+
109+ List <Schema .Field > expectedSchemaFields = Lists .newArrayList ();
110+ expectedSchemaFields .add (Schema .Field .of ("xmlData" , Schema .of (Schema .Type .STRING )));
111+ Assert .assertEquals (expectedSchemaFields .get (0 ).getName (), actualSchemaFields .get (0 ).getName ());
112+ Assert .assertEquals (expectedSchemaFields .get (0 ).getSchema (), actualSchemaFields .get (0 ).getSchema ());
113+ }
114+
115+ @ Test
116+ public void getSchema_xmlFieldDisabled_throwsProgramFailureException () throws SQLException {
117+ OracleSourceSchemaReader schemaReader = new OracleSourceSchemaReader (null ,
118+ false , false , false , false );
119+ ResultSet resultSet = Mockito .mock (ResultSet .class );
120+ ResultSetMetaData metadata = Mockito .mock (ResultSetMetaData .class );
121+ Mockito .when (resultSet .getMetaData ()).thenReturn (metadata );
122+ Mockito .when (metadata .getColumnCount ()).thenReturn (1 );
123+ Mockito .when (metadata .getColumnType (1 )).thenReturn (Types .SQLXML );
124+ Mockito .when (metadata .getColumnName (1 )).thenReturn ("xmlData" );
125+
126+ Assert .assertThrows (ProgramFailureException .class , () -> schemaReader .getSchemaFields (resultSet ));
127+
128+ }
94129}
0 commit comments