abapGit/src/utils/zcl_abapgit_log.clas.testclasses.abap
Marc Bernard cf9da3c06d
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
Enhance logging with message id and number (#7111)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-12-10 15:17:28 -05:00

297 lines
7.2 KiB
ABAP

CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
PRIVATE SECTION.
DATA:
mi_cut TYPE REF TO zif_abapgit_log.
METHODS:
setup,
from_x FOR TESTING,
get_status FOR TESTING,
get_log_level FOR TESTING,
merge_with FOR TESTING,
merge_with_min_level FOR TESTING,
empty FOR TESTING,
clone FOR TESTING,
add FOR TESTING,
add_with_id_number FOR TESTING.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mi_cut TYPE zcl_abapgit_log.
ENDMETHOD.
METHOD empty.
cl_abap_unit_assert=>assert_equals(
act = mi_cut->count( )
exp = 0 ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_title( )
exp = 'Log' ).
ENDMETHOD.
METHOD add.
DATA lv_message TYPE string.
DATA lt_messages TYPE zif_abapgit_log=>ty_log_outs.
DATA ls_message LIKE LINE OF lt_messages.
lv_message = 'hello'.
mi_cut->add( lv_message ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->count( )
exp = 1 ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_status( )
exp = 'E' ).
lt_messages = mi_cut->get_messages( ).
READ TABLE lt_messages INDEX 1 INTO ls_message.
cl_abap_unit_assert=>assert_subrc( ).
cl_abap_unit_assert=>assert_equals(
act = ls_message-text
exp = lv_message ).
ENDMETHOD.
METHOD add_with_id_number.
DATA lv_message TYPE string.
DATA lt_messages TYPE zif_abapgit_log=>ty_log_outs.
DATA ls_message LIKE LINE OF lt_messages.
lv_message = 'abracadabra'.
mi_cut->add(
iv_msg = lv_message
iv_type = 'W'
iv_class = 'SL'
iv_number = '123' ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->count( )
exp = 1 ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_status( )
exp = 'W' ).
lt_messages = mi_cut->get_messages( ).
READ TABLE lt_messages INDEX 1 INTO ls_message.
cl_abap_unit_assert=>assert_subrc( ).
cl_abap_unit_assert=>assert_equals(
act = ls_message-text
exp = lv_message ).
cl_abap_unit_assert=>assert_equals(
act = ls_message-id
exp = 'SL' ).
cl_abap_unit_assert=>assert_equals(
act = ls_message-number
exp = '123' ).
ENDMETHOD.
METHOD get_status.
DATA lo_x TYPE REF TO zcx_abapgit_exception.
mi_cut->add_success( 'success' ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_status( )
exp = zif_abapgit_log=>c_status-ok ).
mi_cut->add_warning( 'warn' ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_status( )
exp = zif_abapgit_log=>c_status-warning ).
mi_cut->add_error( 'err' ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_status( )
exp = zif_abapgit_log=>c_status-error ).
mi_cut->clear( ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_status( )
exp = zif_abapgit_log=>c_status-ok ).
CREATE OBJECT lo_x EXPORTING msgv1 = 'x'.
mi_cut->add_exception( lo_x ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_status( )
exp = zif_abapgit_log=>c_status-error ).
ENDMETHOD.
METHOD merge_with.
DATA li_secondary_log LIKE mi_cut.
DATA lt_act_msgs TYPE zif_abapgit_log=>ty_log_outs.
CREATE OBJECT li_secondary_log TYPE zcl_abapgit_log.
mi_cut->add_success( 'success' ).
li_secondary_log->add_warning( 'warn' ).
mi_cut->merge_with( li_secondary_log ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->count( )
exp = 2 ).
lt_act_msgs = mi_cut->get_messages( ).
READ TABLE lt_act_msgs TRANSPORTING NO FIELDS WITH KEY text = 'success'.
cl_abap_unit_assert=>assert_subrc( ).
READ TABLE lt_act_msgs TRANSPORTING NO FIELDS WITH KEY text = 'warn'.
cl_abap_unit_assert=>assert_subrc( ).
ENDMETHOD.
METHOD merge_with_min_level.
DATA li_secondary_log LIKE mi_cut.
DATA lt_act_msgs TYPE zif_abapgit_log=>ty_log_outs.
CREATE OBJECT li_secondary_log TYPE zcl_abapgit_log.
mi_cut->add_success( 'success' ).
li_secondary_log->add_warning( 'warn' ).
mi_cut->merge_with(
ii_log = li_secondary_log
iv_min_level = zif_abapgit_log=>c_log_level-error ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->count( )
exp = 1 ).
lt_act_msgs = mi_cut->get_messages( ).
READ TABLE lt_act_msgs TRANSPORTING NO FIELDS WITH KEY text = 'success'.
cl_abap_unit_assert=>assert_subrc( ).
" change level to warning
mi_cut->merge_with(
ii_log = li_secondary_log
iv_min_level = zif_abapgit_log=>c_log_level-warning ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->count( )
exp = 2 ).
lt_act_msgs = mi_cut->get_messages( ).
READ TABLE lt_act_msgs TRANSPORTING NO FIELDS WITH KEY text = 'success'.
cl_abap_unit_assert=>assert_subrc( ).
READ TABLE lt_act_msgs TRANSPORTING NO FIELDS WITH KEY text = 'warn'.
cl_abap_unit_assert=>assert_subrc( ).
ENDMETHOD.
METHOD from_x.
DATA lo_x TYPE REF TO zcx_abapgit_exception.
DATA lt_act_msgs TYPE zif_abapgit_log=>ty_log_outs.
" Uninitialized
mi_cut = zcl_abapgit_log=>from_exception( lo_x ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->count( )
exp = 0 ).
" Notmal exception
TRY.
zcx_abapgit_exception=>raise( 'Error!' ).
CATCH zcx_abapgit_exception INTO lo_x.
mi_cut = zcl_abapgit_log=>from_exception( lo_x ).
ENDTRY.
cl_abap_unit_assert=>assert_bound( mi_cut ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->count( )
exp = 1 ).
lt_act_msgs = mi_cut->get_messages( ).
READ TABLE lt_act_msgs TRANSPORTING NO FIELDS WITH KEY type = 'E'.
cl_abap_unit_assert=>assert_subrc( ).
READ TABLE lt_act_msgs TRANSPORTING NO FIELDS WITH KEY text = 'Error!'.
cl_abap_unit_assert=>assert_subrc( ).
ENDMETHOD.
METHOD get_log_level.
DATA lo_x TYPE REF TO zcx_abapgit_exception.
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_log_level( )
exp = zif_abapgit_log=>c_log_level-empty ).
mi_cut->add_success( 'success' ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_log_level( )
exp = zif_abapgit_log=>c_log_level-info ).
mi_cut->add_warning( 'warn' ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_log_level( )
exp = zif_abapgit_log=>c_log_level-warning ).
mi_cut->add_error( 'err' ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_log_level( )
exp = zif_abapgit_log=>c_log_level-error ).
CREATE OBJECT lo_x EXPORTING msgv1 = 'x'.
mi_cut->add_exception( lo_x ).
cl_abap_unit_assert=>assert_equals(
act = mi_cut->get_log_level( )
exp = zif_abapgit_log=>c_log_level-error ).
ENDMETHOD.
METHOD clone.
DATA li_clone TYPE REF TO zif_abapgit_log.
mi_cut->add( 'Hello' ).
mi_cut->set_title( 'My log' ).
li_clone = mi_cut->clone( ).
mi_cut->add( 'World' ).
mi_cut->set_title( 'My log CHANGED' ).
cl_abap_unit_assert=>assert_equals(
act = li_clone->count( )
exp = 1 ).
cl_abap_unit_assert=>assert_equals(
act = li_clone->get_title( )
exp = 'My log' ).
ENDMETHOD.
ENDCLASS.