@@ -17,6 +17,21 @@ create or replace package body test_expectations_cursor is
1717 execute immediate 'drop table gtt_test_table';
1818 end;
1919
20+ /** Just returns a pre-made expected object
21+ */
22+ function get_expected_obj return t_test_table
23+ as
24+ l_expected_obj t_test_table;
25+ begin
26+
27+ l_expected_obj(1).my_num := 1;
28+ l_expected_obj(1).my_string := 'This is my test string';
29+ l_expected_obj(1).my_clob := 'This is an even longer test clob';
30+ l_expected_obj(1).my_date := to_date('1984-09-05', 'YYYY-MM-DD');
31+
32+ return l_expected_obj;
33+ end;
34+
2035 procedure test_cursor_w_temp_table
2136 as
2237 pragma autonomous_transaction;
@@ -41,5 +56,138 @@ create or replace package body test_expectations_cursor is
4156
4257 rollback;
4358 end;
59+
60+
61+ procedure test_cursor_success
62+ as
63+ l_expected_obj t_test_table;
64+ l_actual_obj t_test_table;
65+ l_expected sys_refcursor;
66+ l_actual sys_refcursor;
67+ begin
68+
69+ -- Arrange
70+ l_expected_obj := get_expected_obj();
71+ l_actual_obj := get_expected_obj();
72+
73+ open l_expected for select * from table(l_expected_obj);
74+ open l_actual for select * from table(l_actual_obj);
75+
76+ --Act - execute the expectation on cursor opened on GTT
77+ ut3.ut.expect( l_actual ).to_equal( l_expected );
78+
79+ --Assert - check that expectation was executed successfully
80+ ut.expect(ut3.ut_expectation_processor.get_status()).to_equal(ut3.ut_utils.tr_success);
81+
82+ --Cleanup
83+ ut3.ut_expectation_processor.clear_expectations();
84+
85+ end;
86+
87+ --%test(Test cursor comparison success when both empty)
88+ procedure test_cursor_success_on_empty
89+ as
90+ l_expected_obj t_test_table;
91+ l_actual_obj t_test_table;
92+ l_expected sys_refcursor;
93+ l_actual sys_refcursor;
94+ begin
95+
96+ -- Arrange
97+ open l_expected for select * from table(l_expected_obj);
98+ open l_actual for select * from table(l_actual_obj);
99+
100+ --Act - execute the expectation on cursor opened on GTT
101+ ut3.ut.expect( l_actual ).to_equal( l_expected );
102+
103+ --Assert - check that expectation was executed successfully
104+ ut.expect(ut3.ut_expectation_processor.get_status()).to_equal(ut3.ut_utils.tr_success);
105+
106+ --Cleanup
107+ ut3.ut_expectation_processor.clear_expectations();
108+
109+ end;
110+
111+ --%test(Test cursor comparison fails on different content)
112+ procedure test_cursor_fail_on_difference
113+ as
114+ l_expected_obj t_test_table;
115+ l_actual_obj t_test_table;
116+ l_expected sys_refcursor;
117+ l_actual sys_refcursor;
118+ begin
119+
120+ -- Arrange
121+ l_expected_obj := get_expected_obj();
122+ l_actual_obj := get_expected_obj();
123+ l_actual_obj(1).my_clob := 'Another totally different story';
124+
125+ open l_expected for select * from table(l_expected_obj);
126+ open l_actual for select * from table(l_actual_obj);
127+
128+ --Act - execute the expectation on cursor opened on GTT
129+ ut3.ut.expect( l_actual ).to_equal( l_expected );
130+
131+ --Assert - check that expectation was executed successfully
132+ ut.expect(ut3.ut_expectation_processor.get_status()).to_equal(ut3.ut_utils.tr_failure);
133+
134+ --Cleanup
135+ ut3.ut_expectation_processor.clear_expectations();
136+
137+ end;
138+
139+ procedure test_cursor_fail_on_expected_missing
140+ as
141+ l_expected_obj t_test_table;
142+ l_actual_obj t_test_table;
143+ l_expected sys_refcursor;
144+ l_actual sys_refcursor;
145+ begin
146+
147+ -- Arrange
148+ l_expected_obj := get_expected_obj();
149+ l_actual_obj := get_expected_obj();
150+ l_actual_obj(2).my_num := 2;
151+
152+ open l_expected for select * from table(l_expected_obj);
153+ open l_actual for select * from table(l_actual_obj);
154+
155+ --Act - execute the expectation on cursor opened on GTT
156+ ut3.ut.expect( l_actual ).to_equal( l_expected );
157+
158+ --Assert - check that expectation was executed successfully
159+ ut.expect(ut3.ut_expectation_processor.get_status()).to_equal(ut3.ut_utils.tr_failure);
160+
161+ --Cleanup
162+ ut3.ut_expectation_processor.clear_expectations();
163+
164+ end;
165+
166+ procedure test_cursor_fail_on_actual_missing
167+ as
168+ l_expected_obj t_test_table;
169+ l_actual_obj t_test_table;
170+ l_expected sys_refcursor;
171+ l_actual sys_refcursor;
172+ begin
173+
174+ -- Arrange
175+ l_expected_obj := get_expected_obj();
176+ l_expected_obj(2).my_num := 2;
177+ l_actual_obj := get_expected_obj();
178+
179+ open l_expected for select * from table(l_expected_obj);
180+ open l_actual for select * from table(l_actual_obj);
181+
182+ --Act - execute the expectation on cursor opened on GTT
183+ ut3.ut.expect( l_actual ).to_equal( l_expected );
184+
185+ --Assert - check that expectation was executed successfully
186+ ut.expect(ut3.ut_expectation_processor.get_status()).to_equal(ut3.ut_utils.tr_failure);
187+
188+ --Cleanup
189+ ut3.ut_expectation_processor.clear_expectations();
190+
191+ end;
44192end;
45193/
0 commit comments