Skip to content

Commit 087a3b8

Browse files
committed
Fixing include / joinb by / exclude for objects
1 parent bab43b0 commit 087a3b8

File tree

2 files changed

+39
-16
lines changed

2 files changed

+39
-16
lines changed

source/expectations/data_values/ut_data_value_anydata.tpb

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,31 @@ create or replace type body ut_data_value_anydata as
3838

3939
member function get_cursor_sql_from_anydata(a_data_value anydata) return varchar2 is
4040
l_cursor_sql varchar2(32767);
41+
l_type_code integer;
42+
l_anytype anytype;
43+
l_elements_info ut_metadata.t_anytype_members_rec;
44+
l_element_info ut_metadata.t_anytype_elem_info_rec;
45+
l_idx pls_integer := 1;
46+
l_select_sql ut_varchar2_list := ut_varchar2_list();
4147
begin
48+
49+
/*To avoid gettign a type name as part of XML we need to access attributes directly*/
50+
if self.compound_type = 'object' then
51+
l_type_code := a_data_value.gettype(l_anytype);
52+
l_elements_info := ut_metadata.get_anytype_members_info( l_anytype );
53+
54+
if l_elements_info.elements_count is null then
55+
l_element_info := ut_metadata.get_attr_elem_info( l_anytype );
56+
else
57+
while l_idx <= l_elements_info.elements_count loop
58+
l_element_info := ut_metadata.get_attr_elem_info( l_anytype, l_idx );
59+
l_select_sql.extend;
60+
l_select_sql(l_select_sql.last) := 'udt.t."'||l_element_info.attribute_name||'" as "'||l_element_info.attribute_name||'"';
61+
l_idx := l_idx + 1;
62+
end loop;
63+
end if;
64+
end if;
65+
4266
l_cursor_sql := '
4367
declare
4468
l_data '||self.data_type||';
@@ -50,8 +74,7 @@ create or replace type body ut_data_value_anydata as
5074
case when self.compound_type = 'collection' then
5175
q'[ open :l_tmp_refcursor for select * from table(l_data) x;]'
5276
else
53-
q'[ open :l_tmp_refcursor for select l_data as "]'||ut_metadata.get_object_name(self.data_type)||
54-
q'[" from dual;]'
77+
q'[ open :l_tmp_refcursor for select ]'||ut_utils.table_to_clob(l_select_sql,',')||q'[ from (select l_data t from dual) udt;]'
5578
end ||
5679
'end;';
5780
return l_cursor_sql;

test/ut3_user/expectations/test_expectation_anydata.pkb

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ create or replace package body test_expectation_anydata is
7171
l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object was expected to equal: ut3_tester_helper.test_dummy_object
7272
%Diff:
7373
%Rows: [ 1 differences ]
74-
%Row No. 1 - Missing: <TEST_DUMMY_OBJECT><ID>1</ID><name>A</name><Value>0</Value></TEST_DUMMY_OBJECT>]';
74+
%Row No. 1 - Missing: <ID>1</ID><name>A</name><Value>0</Value>]';
7575
l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1);
7676
--Assert
7777
ut.expect(l_actual_message).to_be_like(l_expected_message);
@@ -249,7 +249,7 @@ create or replace package body test_expectation_anydata is
249249
l_list ut3.ut_varchar2_list;
250250
begin
251251
--Arrange
252-
l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','/TEST_DUMMY_OBJECT/ID');
252+
l_list := ut3.ut_varchar2_list('Value','/ID');
253253
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') );
254254
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>3, "name"=>'A',"Value"=>'1') );
255255
--Act
@@ -262,7 +262,7 @@ create or replace package body test_expectation_anydata is
262262
l_list varchar2(100);
263263
begin
264264
--Arrange
265-
l_list := 'TEST_DUMMY_OBJECT/Value,TEST_DUMMY_OBJECT/ID';
265+
l_list := 'Value,ID';
266266
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') );
267267
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>2, "name"=>'A',"Value"=>'1') );
268268
--Act
@@ -275,7 +275,7 @@ create or replace package body test_expectation_anydata is
275275
l_xpath varchar2(100);
276276
begin
277277
--Arrange
278-
l_xpath := '//TEST_DUMMY_OBJECT/Value|//TEST_DUMMY_OBJECT/ID';
278+
l_xpath := '//Value|//ID';
279279
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') );
280280
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>2, "name"=>'A',"Value"=>'1') );
281281
--Act
@@ -301,7 +301,7 @@ create or replace package body test_expectation_anydata is
301301
l_list ut3.ut_varchar2_list;
302302
begin
303303
--Arrange
304-
l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','TEST_DUMMY_OBJECT/ID');
304+
l_list := ut3.ut_varchar2_list('Value','ID');
305305
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') );
306306
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'b',"Value"=>'0') );
307307
--Act
@@ -314,7 +314,7 @@ create or replace package body test_expectation_anydata is
314314
l_xpath varchar2(100);
315315
begin
316316
--Arrange
317-
l_xpath := 'TEST_DUMMY_OBJECT/key,TEST_DUMMY_OBJECT/ID';
317+
l_xpath := 'key,ID';
318318
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') );
319319
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') );
320320
--Act
@@ -327,7 +327,7 @@ create or replace package body test_expectation_anydata is
327327
l_xpath varchar2(100);
328328
begin
329329
--Arrange
330-
l_xpath := '//TEST_DUMMY_OBJECT/key|//TEST_DUMMY_OBJECT/ID';
330+
l_xpath := '//key|//ID';
331331
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') );
332332
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') );
333333
--Act
@@ -340,7 +340,7 @@ create or replace package body test_expectation_anydata is
340340
l_include varchar2(100);
341341
begin
342342
--Arrange
343-
l_include := ' BadAttributeName, TEST_DUMMY_OBJECT/ID ';
343+
l_include := ' BadAttributeName, ID ';
344344
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') );
345345
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') );
346346
--Act
@@ -354,8 +354,8 @@ create or replace package body test_expectation_anydata is
354354
l_include varchar2(100);
355355
begin
356356
--Arrange
357-
l_include := 'TEST_DUMMY_OBJECT/key,TEST_DUMMY_OBJECT/ID,TEST_DUMMY_OBJECT/Value';
358-
l_exclude := '//TEST_DUMMY_OBJECT/key|//TEST_DUMMY_OBJECT/Value';
357+
l_include := 'key,ID,Value';
358+
l_exclude := '//key|//Value';
359359
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') );
360360
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') );
361361
--Act
@@ -371,8 +371,8 @@ create or replace package body test_expectation_anydata is
371371
l_actual varchar2(32767);
372372
begin
373373
--Arrange
374-
l_include := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/key','TEST_DUMMY_OBJECT/ID','TEST_DUMMY_OBJECT/Value');
375-
l_exclude := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/key','TEST_DUMMY_OBJECT/Value');
374+
l_include := ut3.ut_varchar2_list('key','ID','Value');
375+
l_exclude := ut3.ut_varchar2_list('key','Value');
376376
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') );
377377
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') );
378378
--Act
@@ -387,7 +387,7 @@ create or replace package body test_expectation_anydata is
387387
begin
388388
--Arrange
389389
g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') );
390-
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, NULL, '0') );
390+
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, cast (NULL as varchar2), '0') );
391391
l_expected := q'[Actual: ut3_tester_helper.test_dummy_object was expected to equal: ut3_tester_helper.test_dummy_object
392392
Diff:
393393
Rows: [ 1 differences ]
@@ -931,7 +931,7 @@ Rows: [ 60 differences, showing first 20 ]
931931
g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') );
932932

933933
--Act
934-
ut3.ut.expect(g_test_actual).to_equal(g_test_expected).join_by('TEST_DUMMY_OBJECT/ID');
934+
ut3.ut.expect(g_test_actual).to_equal(g_test_expected).join_by('ID');
935935
ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0);
936936
end;
937937

0 commit comments

Comments
 (0)