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

Skip to content

Commit 42563e9

Browse files
committed
Update documentation and added additional test.
1 parent 74c3648 commit 42563e9

3 files changed

Lines changed: 81 additions & 1 deletion

File tree

docs/userguide/expectations.md

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,9 +443,42 @@ The matcher supports all advanced comparison options as `equal` e.g. include , e
443443

444444
The matcher will be successful only when all of the values in expected results are part of actual set.
445445

446+
In situation where the duplicate is present in expected set we would also expect matching number of occurrences in actual set for matcher to be success.
447+
448+
*Example 1*
449+
450+
```sql
451+
PROCEDURE ut_refcursors IS
452+
l_actual SYS_REFCURSOR;
453+
l_expected SYS_REFCURSOR;
454+
begin
455+
--Arrange
456+
open l_actual for select rownum as rn from dual a connect by level < 10;
457+
open l_expected for select rownum as rn from dual a connect by level < 4
458+
union all select rownum as rn from dual a connect by level < 4;
459+
460+
--Act
461+
ut.expect(l_actual).to_include(l_expected);
462+
END;
463+
```
464+
465+
Will result in failure message
466+
467+
```sql
468+
1) ut_refcursors
469+
Actual: refcursor [ count = 9 ] was expected to include: refcursor [ count = 6 ]
470+
Diff:
471+
Rows: [ 3 differences ]
472+
Missing: <ROW><RN>3</RN></ROW>
473+
Missing: <ROW><RN>2</RN></ROW>
474+
Missing: <ROW><RN>1</RN></ROW>
475+
```
476+
477+
478+
446479
Similar negated `not_to_include`/ `not_to_contain` will be successful only when none of the values from expected set are part of actual e.g.
447480

448-
*Example 1.*
481+
*Example 2.*
449482

450483
Set 1 is defined as [ A , B , C ]
451484

test/core/expectations/test_expectations_cursor.pkb

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2420,6 +2420,47 @@ Diff:%
24202420
--Assert
24212421
ut.expect(expectations.failed_expectations_data()).to_be_empty();
24222422
end;
2423+
2424+
procedure to_include_duplicates is
2425+
l_actual SYS_REFCURSOR;
2426+
l_expected SYS_REFCURSOR;
2427+
begin
2428+
--Arrange
2429+
open l_actual for select rownum as rn from dual a connect by level < 10
2430+
union all
2431+
select rownum as rn from dual a connect by level < 4;
2432+
open l_expected for select rownum as rn from dual a connect by level < 4;
2433+
2434+
--Act
2435+
ut3.ut.expect(l_actual).to_include(l_expected);
2436+
--Assert
2437+
ut.expect(expectations.failed_expectations_data()).to_be_empty();
2438+
end;
2439+
2440+
procedure to_include_duplicates_fail is
2441+
l_actual SYS_REFCURSOR;
2442+
l_expected SYS_REFCURSOR;
2443+
l_expected_message varchar2(32767);
2444+
l_actual_message varchar2(32767);
2445+
begin
2446+
--Arrange
2447+
open l_actual for select rownum as rn from dual a connect by level < 10;
2448+
open l_expected for select rownum as rn from dual a connect by level < 4
2449+
union all select rownum as rn from dual a connect by level < 4;
2450+
2451+
--Act
2452+
ut3.ut.expect(l_actual).to_include(l_expected);
2453+
--Assert
2454+
l_expected_message := q'[%Actual: refcursor [ count = 9 ] was expected to include: refcursor [ count = 6 ]
2455+
%Diff:
2456+
%Rows: [ 3 differences ]
2457+
%Missing: <ROW><RN>%</RN></ROW>
2458+
%Missing: <ROW><RN>%</RN></ROW>
2459+
%Missing: <ROW><RN>%</RN></ROW>]';
2460+
l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message;
2461+
--Assert
2462+
ut.expect(l_actual_message).to_be_like(l_expected_message);
2463+
end;
24232464

24242465
end;
24252466
/

test/core/expectations/test_expectations_cursor.pks

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,12 @@ create or replace package test_expectations_cursor is
387387

388388
--%test(Cursor not contains data with of columns to exclude and join by value)
389389
procedure not_cont_join_excl_cols_as_lst;
390+
391+
--%test(Cursor to include duplicates)
392+
procedure to_include_duplicates;
393+
394+
--%test(Cursor to include duplicates fail)
395+
procedure to_include_duplicates_fail;
390396

391397
end;
392398
/

0 commit comments

Comments
 (0)