Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 14b0b8d

Browse files
committed
Fixing issue when a collection nested inside object was failing due to fact that there was no name for collection columns as part of cursor only data type.
Added extra tests.
1 parent 3c3d320 commit 14b0b8d

7 files changed

Lines changed: 162 additions & 3 deletions

File tree

source/expectations/data_values/ut_cursor_column.tpb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ create or replace type body ut_cursor_column as
1414
self.column_len := a_col_max_len; --length of column
1515
self.column_precision := a_col_precision;
1616
self.column_scale := a_col_scale;
17-
self.column_name := TRIM( BOTH '''' FROM a_col_name); --name of the column
1817
self.column_type_name := coalesce(a_col_type_name,a_col_type); --type name e.g. test_dummy_object or varchar2
18+
self.column_name := case when a_col_name is null and a_collection = 1 then
19+
self.column_type_name
20+
else TRIM( BOTH '''' FROM a_col_name)
21+
end; --name of the column, however in nested object for collection name is not defined in cursor.
1922
self.xml_valid_name := ut_utils.get_valid_xml_name(self.column_name);
2023
self.display_path := case when a_access_path is null then
2124
self.column_name
@@ -25,7 +28,7 @@ create or replace type body ut_cursor_column as
2528
self.access_path := case when a_access_path is null then
2629
self.xml_valid_name
2730
else
28-
a_access_path||'/'||self.xml_valid_name
31+
a_access_path||'/'||self.xml_valid_name
2932
end; --Access path used for XMLTABLE query
3033
self.filter_path := '/'||self.access_path; --Filter path will differ from access path in anydata type
3134
--Transformed name needs to be build on full access path to avoid ambiguity when there is 3 or more levels of nesting.

test/install_ut3_tester_helper.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ alter session set plsql_optimize_level=0;
99
@@ut3_tester_helper/test_dummy_nested_object.tps
1010
@@ut3_tester_helper/test_dummy_double_nested_object.tps
1111
@@ut3_tester_helper/test_dummy_object_list.tps
12+
@@ut3_tester_helper/test_dummy_nested_object_list.tps
1213
@@ut3_tester_helper/test_tab_varchar2.tps
1314
@@ut3_tester_helper/test_tab_varray.tps
15+
@@ut3_tester_helper/test_nested_tab_varray.tps
1416
@@ut3_tester_helper/test_dummy_number.tps
1517
@@ut3_tester_helper/ut_test_table.sql
1618
@@ut3_tester_helper/test_event_object.tps
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
declare
2+
l_exists integer;
3+
begin
4+
select count(1) into l_exists from user_types where type_name = 'TEST_DUMMY_NESTED_OBJECT_LIST';
5+
if l_exists > 0 then
6+
execute immediate 'drop type test_dummy_nested_object_list force';
7+
end if;
8+
end;
9+
/
10+
11+
create or replace type test_dummy_nested_object_list as object (
12+
first_nested_obj test_dummy_object_list
13+
)
14+
/
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,12 @@
1+
declare
2+
l_exists integer;
3+
begin
4+
select count(1) into l_exists from user_types where type_name = 'TEST_DUMMY_OBJECT_LIST';
5+
if l_exists > 0 then
6+
execute immediate 'drop type test_dummy_object_list force';
7+
end if;
8+
end;
9+
/
10+
111
create or replace type test_dummy_object_list as table of test_dummy_object
212
/
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
declare
2+
l_exists integer;
3+
begin
4+
select count(1) into l_exists from user_types where type_name = 'TEST_NESTED_TAB_VARRAY';
5+
if l_exists > 0 then
6+
execute immediate 'drop type test_nested_tab_varray force';
7+
end if;
8+
end;
9+
/
10+
11+
create or replace type test_nested_tab_varray as object (
12+
n_varray t_varray
13+
)
14+
/

test/ut3_user/expectations/test_expectation_anydata.pkb

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,6 +1029,105 @@ Rows: [ 60 differences, showing first 20 ]
10291029
--Assert
10301030
ut.expect(l_actual_message).to_be_like(l_expected_message);
10311031
end;
1032+
1033+
procedure success_nesting_objects is
1034+
begin
1035+
--Arrange
1036+
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_nested_object(ut3_tester_helper.test_dummy_object(1, 'A', '0'),ut3_tester_helper.test_dummy_object(1, 'B', '0') ));
1037+
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_nested_object(ut3_tester_helper.test_dummy_object(1, 'A', '0'),ut3_tester_helper.test_dummy_object(1, 'B', '0') ));
1038+
--Act
1039+
ut3_develop.ut.expect( g_test_actual ).to_equal( g_test_expected );
1040+
ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0);
1041+
end;
10321042

1043+
procedure success_double_nested_objects is
1044+
begin
1045+
--Arrange
1046+
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_double_nested_obj(ut3_tester_helper.test_dummy_nested_object(ut3_tester_helper.test_dummy_object(1, 'A', '0'),ut3_tester_helper.test_dummy_object(1, 'B', '0') ),'Test'));
1047+
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_double_nested_obj(ut3_tester_helper.test_dummy_nested_object(ut3_tester_helper.test_dummy_object(1, 'A', '0'),ut3_tester_helper.test_dummy_object(1, 'B', '0') ),'Test'));
1048+
--Act
1049+
ut3_develop.ut.expect( g_test_actual ).to_equal( g_test_expected );
1050+
ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0);
1051+
end;
1052+
1053+
procedure failure_nested_object_list is
1054+
l_actual_message varchar2(32767);
1055+
l_expected_message varchar2(32767);
1056+
l_actual ut3_tester_helper.test_dummy_object_list;
1057+
l_expected ut3_tester_helper.test_dummy_object_list;
1058+
begin
1059+
--Arrange
1060+
select ut3_tester_helper.test_dummy_object( rownum + 1, 'Something '||rownum, rownum)
1061+
bulk collect into l_actual
1062+
from dual connect by level <=2
1063+
order by rownum desc;
1064+
select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum)
1065+
bulk collect into l_expected
1066+
from dual connect by level <=2
1067+
order by rownum desc;
1068+
--Arrange
1069+
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_nested_object_list(l_actual));
1070+
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_nested_object_list(l_expected));
1071+
--Act
1072+
l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_nested_object_list was expected to equal: ut3_tester_helper.test_dummy_nested_object_list
1073+
%Diff:
1074+
%Rows: [ 1 differences ]
1075+
%Row No. 1 - Actual: <FIRST_NESTED_OBJ><TEST_DUMMY_OBJECT><ID>2</ID><name>Something 2</name><Value>2</Value></TEST_DUMMY_OBJECT><TEST_DUMMY_OBJECT><ID>1</ID><name>Something 1</name><Value>1</Value></TEST_DUMMY_OBJECT></FIRST_NESTED_OBJ>
1076+
%Row No. 1 - Expected: <FIRST_NESTED_OBJ><TEST_DUMMY_OBJECT><ID>3</ID><name>Something 2</name><Value>2</Value></TEST_DUMMY_OBJECT><TEST_DUMMY_OBJECT><ID>2</ID><name>Something 1</name><Value>1</Value></TEST_DUMMY_OBJECT></FIRST_NESTED_OBJ>]';
1077+
ut3_develop.ut.expect(g_test_actual).to_equal(g_test_expected);
1078+
l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1);
1079+
--Assert
1080+
ut.expect(l_actual_message).to_be_like(l_expected_message);
1081+
end;
1082+
1083+
procedure success_nested_object_list is
1084+
l_actual ut3_tester_helper.test_dummy_object_list;
1085+
l_expected ut3_tester_helper.test_dummy_object_list;
1086+
begin
1087+
--Arrange
1088+
select ut3_tester_helper.test_dummy_object( rownum , 'Something '||rownum, rownum)
1089+
bulk collect into l_actual
1090+
from dual connect by level <=2
1091+
order by rownum desc;
1092+
select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum)
1093+
bulk collect into l_expected
1094+
from dual connect by level <=2
1095+
order by rownum desc;
1096+
--Arrange
1097+
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_nested_object_list(l_actual));
1098+
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_nested_object_list(l_expected));
1099+
--Act
1100+
ut3_develop.ut.expect( g_test_actual ).to_equal( g_test_expected );
1101+
ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0);
1102+
end;
1103+
1104+
procedure nested_varray_same_data is
1105+
begin
1106+
--Arrange
1107+
g_test_expected := anydata.convertObject( ut3_tester_helper.test_nested_tab_varray(ut3_tester_helper.t_varray(1)) );
1108+
g_test_actual := anydata.convertObject( ut3_tester_helper.test_nested_tab_varray(ut3_tester_helper.t_varray(1)) );
1109+
--Act
1110+
ut3_develop.ut.expect( g_test_actual ).to_equal( g_test_expected );
1111+
ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0);
1112+
end;
1113+
1114+
procedure nested_varray_diff_data is
1115+
l_actual_message varchar2(32767);
1116+
l_expected_message varchar2(32767);
1117+
begin
1118+
--Arrange
1119+
g_test_expected := anydata.convertObject( ut3_tester_helper.test_nested_tab_varray(ut3_tester_helper.t_varray(1)) );
1120+
g_test_actual := anydata.convertObject( ut3_tester_helper.test_nested_tab_varray(ut3_tester_helper.t_varray(2)) );
1121+
--Act
1122+
ut3_develop.ut.expect( g_test_actual ).to_equal( g_test_expected );
1123+
l_expected_message := q'[%Actual: ut3_tester_helper.test_nested_tab_varray was expected to equal: ut3_tester_helper.test_nested_tab_varray
1124+
%Diff:
1125+
%Rows: [ 1 differences ]
1126+
%Row No. 1 - Actual: <N_VARRAY><NUMBER>2</NUMBER></N_VARRAY>
1127+
%Row No. 1 - Expected: <N_VARRAY><NUMBER>1</NUMBER></N_VARRAY>]';
1128+
l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1);
1129+
--Assert
1130+
ut.expect(l_actual_message).to_be_like(l_expected_message);
1131+
end;
10331132
end;
10341133
/

test/ut3_user/expectations/test_expectation_anydata.pks

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,28 @@ create or replace package test_expectation_anydata is
204204
--%test ( Empty Array not equal array with space )
205205
procedure arr_empty_nqua_arr_e_unord;
206206

207-
--%test ( Failure of comparing nesting objects )
207+
--%test ( Failure of comparing nested objects )
208208
procedure failure_nesting_objects;
209209

210210
--%test ( Failure of comparing double nested objects )
211211
procedure failure_double_nested_objects;
212212

213+
--%test ( Success of comparing nested objects )
214+
procedure success_nesting_objects;
215+
216+
--%test ( Success of comparing double nested objects )
217+
procedure success_double_nested_objects;
218+
219+
--%test ( Failure of comparing nested object list )
220+
procedure failure_nested_object_list;
221+
222+
--%test ( Success of comparing nested object list )
223+
procedure success_nested_object_list;
224+
225+
--%test(Nested VARRAYS with same data)
226+
procedure nested_varray_same_data;
227+
228+
--%test(Nested VARRAYS with different data)
229+
procedure nested_varray_diff_data;
213230
end;
214231
/

0 commit comments

Comments
 (0)