abapGit/test/zcl_abapgit_sap_package_test.clas.testclasses.abap
Frank Müller 03d4e51277
Unit Test List Subpackages (#6445)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2023-08-30 19:19:14 +02:00

130 lines
4.0 KiB
ABAP

*"* use this source file for your ABAP unit test classes
CLASS ltcl_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM FINAL.
PRIVATE SECTION.
CLASS-DATA gi_environment TYPE REF TO if_osql_test_environment.
CLASS-METHODS class_setup.
CLASS-METHODS class_teardown.
CLASS-METHODS create_envoirment.
METHODS check_list_subpackages FOR TESTING RAISING zcx_abapgit_exception.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD create_envoirment.
DATA lt_tables TYPE if_osql_test_environment=>ty_t_sobjnames.
DATA ls_tadir TYPE tadir.
DATA lt_tadir TYPE STANDARD TABLE OF tadir.
DATA ls_tdevc TYPE tdevc.
DATA lt_tdevc TYPE STANDARD TABLE OF tdevc.
APPEND 'TADIR' TO lt_tables.
APPEND 'TDEVC' TO lt_tables.
APPEND 'SOTR_HEADU' TO lt_tables.
gi_environment = cl_osql_test_environment=>create( lt_tables ).
ls_tadir-pgmid = 'R3TR'.
ls_tadir-object = 'DEVC'.
ls_tadir-obj_name = 'BASIS'.
ls_tadir-devclass = 'BASIS'.
INSERT ls_tadir INTO TABLE lt_tadir.
ls_tadir-pgmid = 'R3TR'.
ls_tadir-object = 'DEVC'.
ls_tadir-obj_name = '/STMC/FND'.
ls_tadir-devclass = '/STMC/FND'.
INSERT ls_tadir INTO TABLE lt_tadir.
ls_tadir-pgmid = 'R3TR'.
ls_tadir-object = 'DTEL'.
ls_tadir-obj_name = 'DEVCLASS'.
ls_tadir-devclass = 'BASIS'. "not in reality
INSERT ls_tadir INTO TABLE lt_tadir.
ls_tadir-pgmid = 'R3TR'.
ls_tadir-object = 'DTEL'.
ls_tadir-obj_name = 'MATNR'.
ls_tadir-devclass = 'BASIS'. "not in reality
INSERT ls_tadir INTO TABLE lt_tadir.
gi_environment->insert_test_data( lt_tadir ).
ls_tdevc-devclass = 'BASIS'.
INSERT ls_tdevc INTO TABLE lt_tdevc.
ls_tdevc-devclass = '$SWF_RUN_CNT'.
ls_tdevc-parentcl = '/STMC/FND'. "not in reality
INSERT ls_tdevc INTO TABLE lt_tdevc.
ls_tdevc-devclass = '/STMC/FND'.
ls_tdevc-parentcl = 'BASIS'. "not in reality
INSERT ls_tdevc INTO TABLE lt_tdevc.
gi_environment->insert_test_data( lt_tdevc ).
ENDMETHOD.
METHOD check_list_subpackages.
DATA lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
DATA lt_list TYPE zif_abapgit_sap_package=>ty_devclass_tt.
DATA lt_list2 TYPE zif_abapgit_sap_package=>ty_devclass_tt.
DATA lt_list3 TYPE zif_abapgit_sap_package=>ty_devclass_tt.
SELECT devclass FROM tdevc
INTO TABLE lt_list
WHERE parentcl = 'BASIS'
ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF
READ TABLE lt_list TRANSPORTING NO FIELDS
WITH KEY table_line = '/STMC/FND'.
IF sy-subrc <> 0.
cl_abap_unit_assert=>fail( |Package /STMC/FND not found as sub package of BASIS| ).
ENDIF.
SELECT devclass FROM tdevc
INTO TABLE lt_list2
WHERE parentcl = '/STMC/FND'
ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF
READ TABLE lt_list2 TRANSPORTING NO FIELDS
WITH KEY table_line = '$SWF_RUN_CNT'.
IF sy-subrc <> 0.
cl_abap_unit_assert=>fail( |Package $SWF_RUN_CNT not found as sub package of /STMC/FND| ).
ENDIF.
SELECT devclass FROM tdevc
INTO TABLE lt_list3
FOR ALL ENTRIES IN lt_list
WHERE parentcl = lt_list-table_line
ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF
READ TABLE lt_list3 TRANSPORTING NO FIELDS
WITH KEY table_line = '$SWF_RUN_CNT'.
IF sy-subrc <> 0.
cl_abap_unit_assert=>fail( |Package $SWF_RUN_CNT not found as sub package of /STMC/FND with for all entries| ).
ENDIF.
lt_packages = zcl_abapgit_factory=>get_sap_package( 'BASIS' )->list_subpackages( ).
READ TABLE lt_packages TRANSPORTING NO FIELDS
WITH KEY table_line = '$SWF_RUN_CNT'.
IF sy-subrc <> 0.
cl_abap_unit_assert=>fail( |Package $SWF_RUN_CNT not found as sub package with method list_subpackages| ).
ENDIF.
ENDMETHOD.
METHOD class_setup.
create_envoirment( ).
ENDMETHOD.
METHOD class_teardown.
IF NOT gi_environment IS INITIAL.
gi_environment->destroy( ).
ENDIF.
ENDMETHOD.
ENDCLASS.