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

Skip to content

Commit ec5784b

Browse files
committed
Migrated few more tests for cursor comparison.
Added some additional tests.
1 parent fb44153 commit ec5784b

6 files changed

Lines changed: 184 additions & 164 deletions

old_tests/RunAll.sql

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,6 @@ exec ut_coverage.coverage_start_develop();
6969
@@lib/RunTest.sql ut_expectations/ut.expect.to_equal.anydata.GivesSuccessWithExcludedCollectionAttributesXPath.sql
7070
@@lib/RunTest.sql ut_expectations/ut.expect.to_equal.anydata.GivesSuccessWithExcludedObjectAttributes.sql
7171
@@lib/RunTest.sql ut_expectations/ut.expect.to_equal.anydata.GivesSuccessWithExcludedObjectAttributesXPath.sql
72-
@@lib/RunTest.sql ut_expectations/ut.expect.to_equal.cursor.ReportsTheExceptionWhenAnExceptionInCursorIsCaught.sql
73-
@@lib/RunTest.sql ut_expectations/ut.expect.to_equal.cursor.ReturnsCursorDataForFailure.sql
74-
@@lib/RunTest.sql ut_expectations/ut.expect.to_equal.cursor.SupportsSQLandPLSQLdatatypes.sql
7572
@@lib/RunTest.sql ut_expectations/ut.expect.to_equal.cursor.UsesDefaultNLSSettingsForDatesFormatting.sql
7673
@@lib/RunTest.sql ut_expectations/ut.expect.to_equal.cursor.worksOnLargeDatasets.sql
7774
@@ut_expectations/ut.expect.to_equal.GivesFailureForDifferentDataTypes.sql

old_tests/ut_expectations/ut.expect.to_equal.cursor.ReportsTheExceptionWhenAnExceptionInCursorIsCaught.sql

Lines changed: 0 additions & 24 deletions
This file was deleted.

old_tests/ut_expectations/ut.expect.to_equal.cursor.ReturnsCursorDataForFailure.sql

Lines changed: 0 additions & 28 deletions
This file was deleted.

old_tests/ut_expectations/ut.expect.to_equal.cursor.SupportsSQLandPLSQLdatatypes.sql

Lines changed: 0 additions & 103 deletions
This file was deleted.

test/core/expectations/test_expectations_cursor.pkb

Lines changed: 159 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
create or replace package body test_expectations_cursor is
22

3+
gc_blob blob := to_blob('123');
4+
gc_clob clob := to_clob('abc');
5+
gc_date date := sysdate;
6+
gc_ds_int interval day(9) to second(9) := numtodsinterval(1.12345678912, 'day');
7+
gc_num number := 123456789.1234567890123456789;
8+
gc_ts timestamp(9) := to_timestamp_tz('2017-03-30 00:21:12.123456789 cet','yyyy-mm-dd hh24:mi:ss.ff9 tzr');
9+
gc_ts_tz timestamp(9) with time zone := to_timestamp_tz('2017-03-30 00:21:12.123456789 cet','yyyy-mm-dd hh24:mi:ss.ff9 tzr');
10+
gc_ts_ltz timestamp(9) with local time zone := to_timestamp_tz('2017-03-30 00:21:12.123456789 cet','yyyy-mm-dd hh24:mi:ss.ff9 tzr');
11+
gc_varchar varchar2(4000) := 'a varchar2';
12+
gc_ym_int interval year(9) to month := numtoyminterval(1.1, 'year');
13+
314
procedure cleanup_expectations is
415
begin
516
ut3.ut_expectation_processor.clear_expectations();
@@ -255,9 +266,7 @@ procedure fail_on_different_column_order
255266
as
256267
l_actual SYS_REFCURSOR;
257268
l_expected SYS_REFCURSOR;
258-
l_result integer;
259-
e_xpath_error exception;
260-
pragma exception_init (e_xpath_error,-31011);
269+
l_error_code integer := -31011; --xpath_error
261270
begin
262271
--Arrange
263272
open l_actual for select a.*, 'a' as "A_Column", 'c' as A_COLUMN, 'x' SOME_COL, 'd' "Some_Col" from all_objects a where rownum < 4;
@@ -266,10 +275,10 @@ procedure fail_on_different_column_order
266275
--Act
267276
ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>'/ROW/A_COLUMN,//Some_Col');
268277
--Assert
269-
ut.fail('Expected -31011 but nothing was raised');
278+
ut.fail('Expected '||l_error_code||' but nothing was raised');
270279
exception
271-
when e_xpath_error then
272-
ut.expect(sqlcode).to_equal(-31011);
280+
when others then
281+
ut.expect(sqlcode).to_equal(l_error_code);
273282
end;
274283
end;
275284

@@ -288,6 +297,150 @@ procedure fail_on_different_column_order
288297
ut.expect(ut3.ut_expectation_processor.get_status()).to_equal(ut3.ut_utils.tr_success);
289298
end;
290299

300+
procedure data_diff_on_failure
301+
as
302+
l_actual sys_refcursor;
303+
l_expected sys_refcursor;
304+
l_actual_message varchar2(32767);
305+
l_expected_message varchar2(32767);
306+
begin
307+
--Arrange
308+
open l_actual for select rownum rn from dual connect by level <=2;
309+
open l_expected for select rownum rn from dual connect by level <=3;
310+
--Act
311+
ut3.ut.expect(l_actual).to_equal(l_expected);
312+
313+
l_expected_message := q'[Actual:%
314+
(rows: 2, mismatched: 1)
315+
(refcursor)%
316+
was expected to equal:%
317+
(rows: 3, mismatched: 1)
318+
row_no: 3 <ROW><RN>3</RN></ROW>
319+
(refcursor)%]';
320+
l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message;
321+
--Assert
322+
ut.expect(l_actual_message).to_be_like(l_expected_message);
323+
end;
324+
325+
procedure prepare_table
326+
as
327+
pragma autonomous_transaction;
328+
begin
329+
execute immediate
330+
'create table test_table_for_cursors (
331+
some_blob blob,
332+
some_clob clob,
333+
some_date date,
334+
some_ds_interval interval day(9) to second(9),
335+
some_nummber number,
336+
some_timestamp timestamp(9),
337+
some_timestamp_tz timestamp(9) with time zone,
338+
some_timestamp_ltz timestamp(9) with local time zone,
339+
some_varchar2 varchar2(4000),
340+
some_ym_interval interval year(9) to month
341+
)';
342+
execute immediate q'[
343+
insert into test_table_for_cursors
344+
values( :gc_blob, :gc_clob, :gc_date, :gc_ds_int, :gc_num, :gc_ts, :gc_ts_tz, :gc_ts_ltz, :gc_varchar, :gc_ym_int
345+
)
346+
]' using gc_blob, gc_clob, gc_date, gc_ds_int, gc_num, gc_ts, gc_ts_tz, gc_ts_ltz, gc_varchar, gc_ym_int;
347+
commit;
348+
end;
349+
350+
procedure cleanup_table
351+
as
352+
pragma autonomous_transaction;
353+
begin
354+
execute immediate 'drop table test_table_for_cursors';
355+
end;
356+
357+
procedure compares_sql_and_plsql_types is
358+
l_expected sys_refcursor;
359+
l_actual sys_refcursor;
360+
begin
361+
--Arrange
362+
open l_expected for
363+
select gc_blob some_blob,
364+
gc_clob some_clob,
365+
gc_date some_date,
366+
gc_ds_int some_ds_interval,
367+
gc_num some_nummber,
368+
gc_ts some_timestamp,
369+
gc_ts_tz some_timestamp_tz,
370+
gc_ts_ltz some_timestamp_ltz ,
371+
gc_varchar some_varchar2,
372+
gc_ym_int some_ym_interval
373+
from dual;
374+
open l_actual for q'[select * from test_table_for_cursors]';
375+
--Act
376+
ut3.ut.expect(l_expected).to_equal(l_actual);
377+
--Assert
378+
ut.expect(ut3.ut_expectation_processor.get_status()).to_equal(ut3.ut_utils.tr_success);
379+
end;
380+
381+
procedure closes_cursor_after_use
382+
as
383+
l_actual sys_refcursor;
384+
begin
385+
--Arrange
386+
open l_actual for select 1 as value from dual;
387+
--Act
388+
ut3.ut.expect(l_actual).to_be_empty();
389+
--Assert
390+
ut.expect(l_actual%isopen).to_be_false();
391+
end;
392+
393+
procedure closes_cursor_after_use_on_err
394+
as
395+
l_actual sys_refcursor;
396+
begin
397+
--Arrange
398+
open l_actual for select 1/0 as value from dual;
399+
--Act
400+
begin
401+
ut3.ut.expect(l_actual).to_be_empty();
402+
exception
403+
when others then
404+
null;
405+
end;
406+
--Assert
407+
ut.expect(l_actual%isopen).to_be_false();
408+
end;
409+
410+
procedure reports_on_exception_in_cursor
411+
as
412+
l_actual sys_refcursor;
413+
l_error_code integer := -19202; --Error occurred in XML processing
414+
begin
415+
--Act
416+
open l_actual for select 1/0 as error_column from dual connect by level < 10;
417+
begin
418+
ut3.ut.expect(l_actual).to_be_empty();
419+
--Assert
420+
ut.fail('Expected '||l_error_code||' but nothing was raised');
421+
exception
422+
when others then
423+
ut.expect(sqlcode).to_equal(l_error_code);
424+
end;
425+
end;
426+
427+
procedure reports_on_closed_cursor
428+
as
429+
l_actual sys_refcursor;
430+
l_error_code integer := -19202; --Error occurred in XML processing
431+
begin
432+
--Act
433+
open l_actual for select 1 as value from dual connect by level < 10;
434+
close l_actual;
435+
begin
436+
ut3.ut.expect(l_actual).to_be_empty();
437+
--Assert
438+
ut.fail('Expected '||l_error_code||' but nothing was raised');
439+
exception
440+
when others then
441+
ut.expect(sqlcode).to_equal(l_error_code);
442+
end;
443+
end;
291444

292445
end;
293446
/

test/core/expectations/test_expectations_cursor.pks

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,30 @@ create or replace package test_expectations_cursor is
6262
--%test(Exclude columns by XPath is case sensitive)
6363
procedure exclude_columns_xpath;
6464

65+
--%test(Reports data-diff on expectation failure)
66+
procedure data_diff_on_failure;
67+
68+
69+
procedure prepare_table;
70+
procedure cleanup_table;
71+
72+
--%test(Compares cursor on table to cursor on plsql data)
73+
--%beforetest(prepare_table)
74+
--%aftertest(cleanup_table)
75+
procedure compares_sql_and_plsql_types;
76+
77+
--%test(Closes the cursor after use)
78+
procedure closes_cursor_after_use;
79+
80+
--%test(Closes the cursor after use when exception was raised)
81+
procedure closes_cursor_after_use_on_err;
82+
83+
--%test(Reports exception when cursor raises exception)
84+
procedure reports_on_exception_in_cursor;
85+
86+
--%test(Reports exception when cursor is closed)
87+
--%disabled
88+
procedure reports_on_closed_cursor;
89+
6590
end;
6691
/

0 commit comments

Comments
 (0)