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

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Cleanup of ut_executable - made come code private.
Added test placeholders for `ut_executable`.
Some tests referring the executable behavior should be removed with introduction of those tests.
  • Loading branch information
jgebal committed Jul 15, 2018
commit 6fcb366efdc6cc64fc713a905aa9f8704051a1bc
75 changes: 36 additions & 39 deletions source/core/types/ut_executable.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -29,42 +29,6 @@ create or replace type body ut_executable is
return;
end;

member function is_defined(self in out nocopy ut_executable) return boolean is
l_result boolean := false;
l_message_part varchar2(4000) := 'Call params for ' || self.executable_type || ' are not valid: ';
begin

if self.object_name is null then
self.error_stack := l_message_part || 'package is not defined';
elsif self.procedure_name is null then
self.error_stack := l_message_part || 'procedure is not defined';
else
l_result := true;
end if;

return l_result;
end is_defined;

/**
* We will check if error raised because package was invalid if not we let it propagate.
**/
member function is_invalid(self in out nocopy ut_executable) return boolean is
l_result boolean := true;
l_message_part varchar2(4000) := 'Call params for ' || self.executable_type || ' are not valid: ';
begin

if not ut_metadata.package_valid(self.owner_name, self.object_name) then
self.error_stack := l_message_part || 'package does not exist or is invalid: ' ||upper(self.owner_name||'.'||self.object_name);
elsif not ut_metadata.procedure_exists(self.owner_name, self.object_name, self.procedure_name) then
self.error_stack := l_message_part || 'procedure does not exist '
|| upper(self.owner_name || '.' || self.object_name || '.' ||self.procedure_name);
else
l_result := false;
end if;

return l_result;
end is_invalid;

member function form_name return varchar2 is
begin
return ut_metadata.form_name(owner_name, object_name, procedure_name);
Expand All @@ -84,7 +48,40 @@ create or replace type body ut_executable is
l_failed_with_invalid_pck boolean := true;
l_start_transaction_id varchar2(250);
l_end_transaction_id varchar2(250);


function is_defined return boolean is
l_result boolean := false;
l_message_part varchar2(4000) := 'Call params for ' || self.executable_type || ' are not valid: ';
begin

if self.object_name is null then
self.error_stack := l_message_part || 'package is not defined';
elsif self.procedure_name is null then
self.error_stack := l_message_part || 'procedure is not defined';
else
l_result := true;
end if;

return l_result;
end is_defined;

function is_invalid return boolean is
l_result boolean := true;
l_message_part varchar2(4000) := 'Call params for ' || self.executable_type || ' are not valid: ';
begin

if not ut_metadata.package_valid(self.owner_name, self.object_name) then
self.error_stack := l_message_part || 'package does not exist or is invalid: ' ||upper(self.owner_name||'.'||self.object_name);
elsif not ut_metadata.procedure_exists(self.owner_name, self.object_name, self.procedure_name) then
self.error_stack := l_message_part || 'procedure does not exist '
|| upper(self.owner_name || '.' || self.object_name || '.' ||self.procedure_name);
else
l_result := false;
end if;

return l_result;
end is_invalid;

procedure save_dbms_output is
l_status number;
l_line varchar2(32767);
Expand All @@ -111,7 +108,7 @@ create or replace type body ut_executable is
--listener - before call to executable
ut_event_manager.trigger_event('before_'||self.executable_type, self);

l_completed_without_errors := self.is_defined();
l_completed_without_errors := is_defined();
if l_completed_without_errors then
l_statement :=
'declare' || chr(10) ||
Expand Down Expand Up @@ -149,7 +146,7 @@ create or replace type body ut_executable is
dbms_sql.close_cursor(l_cursor_number);
exception
when ut_utils.ex_invalid_package then
l_failed_with_invalid_pck := self.is_invalid();
l_failed_with_invalid_pck := is_invalid();
dbms_sql.close_cursor(l_cursor_number);
if not l_failed_with_invalid_pck then
raise;
Expand Down
2 changes: 0 additions & 2 deletions source/core/types/ut_executable.tps
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ create or replace type ut_executable under ut_event_item(
error_stack varchar2(4000),
serveroutput clob,
constructor function ut_executable( self in out nocopy ut_executable, a_owner varchar2, a_package varchar2, a_procedure_name varchar2, a_executable_type varchar2) return self as result,
member function is_invalid(self in out nocopy ut_executable) return boolean,
member function is_defined(self in out nocopy ut_executable) return boolean,
member function form_name return varchar2,
member procedure do_execute(self in out nocopy ut_executable, a_item in out nocopy ut_suite_item),
/**
Expand Down
56 changes: 56 additions & 0 deletions test/core/test_ut_executable.pkb
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
create or replace package body test_ut_executable is

--%suite(ut_executable)
--%suitepath(utplsql.core)

--%beforeall
procedure create_dummy_package is
begin
null;
end;

--%afterall
procedure drop_dummy_package is
begin
null;
end;

--%context(do_execute)

--%test(Executes procedure in current schema when user was not provided)
procedure exec_schema_package_proc is
begin
null;
end;

--%test(Executes procedure and saves dbms_output)
procedure exec_package_proc is
begin
null;
end;

--%test(Executes a procedure raising exception, saves dbms_output and exception stack trace)
procedure exec_failing_proc is
begin
null;
end;

--%test(Sets state invalidation flag when executed procedure in a state-invalidated package, saves dbms_output and exception stack trace)
procedure exec_invalid_state_proc is
begin
null;
end;

--%endcontext

--%context(form_name)

--%test(Builds a name for the executable test)
procedure form_name is
begin
null;
end;
--%endcontext

end;
/
41 changes: 41 additions & 0 deletions test/core/test_ut_executable.pks
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
create or replace package test_ut_executable is

--%suite(ut_executable)
--%suitepath(utplsql.core)

--%beforeall
procedure create_dummy_package;

--%afterall
procedure drop_dummy_package;

--%context(do_execute)

--%test(Executes procedure in current schema when user was not provided)
--%disabled
procedure exec_schema_package_proc;

--%test(Executes procedure and saves dbms_output)
--%disabled
procedure exec_package_proc;

--%test(Executes a procedure raising exception, saves dbms_output and exception stack trace)
--%disabled
procedure exec_failing_proc;

--%test(Sets state invalidation flag when executed procedure in a state-invalidated package, saves dbms_output and exception stack trace)
--%disabled
procedure exec_invalid_state_proc;

--%endcontext

--%context(form_name)

--%test(Builds a name for the executable test)
--%disabled
procedure form_name;

--%endcontext

end;
/
2 changes: 2 additions & 0 deletions test/install_tests.sql
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ whenever oserror exit failure rollback
@@core/test_output_buffer.pks
@@core/test_file_mapper.pks
@@core/test_suite_manager.pks
@@core/test_ut_executable.pks
@@core/test_suite_builder.pks
@@core/reporters.pks
@@core/reporters/test_coverage.pks
Expand Down Expand Up @@ -72,6 +73,7 @@ set define off
@@core/test_output_buffer.pkb
@@core/test_file_mapper.pkb
@@core/test_suite_manager.pkb
@@core/test_ut_executable.pkb
@@core/test_suite_builder.pkb
@@core/reporters.pkb
@@core/reporters/test_coverage.pkb
Expand Down