abapGit/src/zcl_abapgit_repo_online.clas.testclasses.abap
2018-11-08 16:35:08 +01:00

240 lines
5.2 KiB
ABAP

CLASS ltcl_code_inspector DEFINITION FOR TESTING.
PUBLIC SECTION.
INTERFACES:
zif_abapgit_code_inspector.
METHODS:
constructor
IMPORTING
iv_package TYPE devclass.
PRIVATE SECTION.
DATA mv_package TYPE devclass.
ENDCLASS.
CLASS ltcl_code_inspector IMPLEMENTATION.
METHOD constructor.
mv_package = iv_package.
ENDMETHOD.
METHOD zif_abapgit_code_inspector~run.
DATA: ls_list LIKE LINE OF rt_list.
IF mv_package = '$DUMMY'.
ls_list-kind = 'E'.
INSERT ls_list INTO TABLE rt_list.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_code_inspector~get_inspection. "##needed
ENDMETHOD.
ENDCLASS.
CLASS ltcl_run_code_inspection DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA:
mo_repo_online TYPE REF TO zcl_abapgit_repo_online,
mv_error_text TYPE string,
mt_act_list TYPE scit_alvlist.
METHODS:
exception_when_no_check_var FOR TESTING RAISING cx_static_check,
exception_when_error FOR TESTING RAISING cx_static_check,
no_exception_when_no_error FOR TESTING RAISING cx_static_check,
push_not_possible_if_ci_req FOR TESTING RAISING cx_static_check,
given_online_repo
IMPORTING
iv_package TYPE devclass
RAISING
zcx_abapgit_exception,
given_check_variant
IMPORTING
iv_check_variant TYPE string,
given_mock_code_inspector
IMPORTING
iv_package TYPE devclass
iv_check_variant TYPE sci_chkv,
given_block_commit
IMPORTING
iv_block_commit TYPE abap_bool,
when_push,
then_exception_text_is
IMPORTING
iv_exp_error_text TYPE csequence,
when_run_code_inspector,
then_ci_detected_an_error,
then_no_exception_is_raised.
ENDCLASS.
CLASS zcl_abapgit_repo_online DEFINITION LOCAL FRIENDS ltcl_run_code_inspection.
CLASS ltcl_run_code_inspection IMPLEMENTATION.
METHOD exception_when_no_check_var.
given_online_repo( iv_package = '$DUMMY' ).
given_check_variant( || ).
when_run_code_inspector( ).
then_exception_text_is( |No check variant maintained in repo settings.| ).
ENDMETHOD.
METHOD exception_when_error.
given_online_repo( '$DUMMY' ).
given_check_variant( |variant| ).
given_mock_code_inspector( iv_package = '$DUMMY'
iv_check_variant = |variant| ).
when_run_code_inspector( ).
then_ci_detected_an_error( ).
ENDMETHOD.
METHOD no_exception_when_no_error.
given_online_repo( '$PACKAGE' ).
given_check_variant( |variant| ).
given_mock_code_inspector( iv_package = '$PACKAGE'
iv_check_variant = |variant| ).
when_run_code_inspector( ).
then_no_exception_is_raised( ).
ENDMETHOD.
METHOD given_online_repo.
DATA: ls_data TYPE zif_abapgit_persistence=>ty_repo.
ls_data-key = 'dummmy'.
ls_data-package = iv_package.
CREATE OBJECT mo_repo_online
EXPORTING
is_data = ls_data.
ENDMETHOD.
METHOD given_check_variant.
mo_repo_online->ms_data-local_settings-code_inspector_check_variant = iv_check_variant.
ENDMETHOD.
METHOD given_mock_code_inspector.
DATA: lo_mock_code_inspector TYPE REF TO ltcl_code_inspector.
CREATE OBJECT lo_mock_code_inspector
EXPORTING
iv_package = iv_package.
zcl_abapgit_injector=>set_code_inspector( iv_package = iv_package
iv_check_variant_name = iv_check_variant
ii_code_inspector = lo_mock_code_inspector ).
ENDMETHOD.
METHOD push_not_possible_if_ci_req.
given_online_repo( '$PACKAGE' ).
given_check_variant( |variant| ).
given_block_commit( abap_true ).
when_push( ).
then_exception_text_is( |A successful code inspection is required| ).
ENDMETHOD.
METHOD given_block_commit.
mo_repo_online->ms_data-local_settings-block_commit = abap_true.
ENDMETHOD.
METHOD when_push.
DATA: ls_comment TYPE zif_abapgit_definitions=>ty_comment,
lo_stage TYPE REF TO zcl_abapgit_stage,
lx_error TYPE REF TO zcx_abapgit_exception.
CREATE OBJECT lo_stage.
TRY.
mo_repo_online->push( is_comment = ls_comment
io_stage = lo_stage ).
CATCH zcx_abapgit_exception INTO lx_error.
mv_error_text = lx_error->get_text( ).
ENDTRY.
ENDMETHOD.
METHOD then_exception_text_is.
cl_abap_unit_assert=>assert_equals(
exp = iv_exp_error_text
act = mv_error_text ).
ENDMETHOD.
METHOD when_run_code_inspector.
DATA: lx_error TYPE REF TO zcx_abapgit_exception.
TRY.
mt_act_list = mo_repo_online->run_code_inspector( ).
CATCH zcx_abapgit_exception INTO lx_error.
mv_error_text = lx_error->get_text( ).
ENDTRY.
ENDMETHOD.
METHOD then_ci_detected_an_error.
READ TABLE mt_act_list TRANSPORTING NO FIELDS
WITH KEY kind = 'E'.
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
ENDMETHOD.
METHOD then_no_exception_is_raised.
cl_abap_unit_assert=>assert_initial( mv_error_text ).
ENDMETHOD.
ENDCLASS.