diff --git a/src/persist/zcl_abapgit_persist_settings.clas.testclasses.abap b/src/persist/zcl_abapgit_persist_settings.clas.testclasses.abap
new file mode 100644
index 000000000..991a25e12
--- /dev/null
+++ b/src/persist/zcl_abapgit_persist_settings.clas.testclasses.abap
@@ -0,0 +1,177 @@
+*"* use this source file for your ABAP unit test classes
+
+CLASS ltcl_persistence_settings DEFINITION FINAL FOR TESTING
+ DURATION SHORT
+ RISK LEVEL DANGEROUS.
+
+ PRIVATE SECTION.
+ CLASS-METHODS:
+ class_setup.
+
+ METHODS:
+ setup,
+ clear_settings_database,
+ "Proxy
+ modify_settings_proxy_url FOR TESTING RAISING cx_static_check,
+ modify_settings_proxy_port FOR TESTING RAISING cx_static_check,
+ read_proxy_settings FOR TESTING RAISING cx_static_check,
+ read_not_found_url FOR TESTING RAISING cx_static_check,
+ read_not_found_port FOR TESTING RAISING cx_static_check,
+ "Run critical tests
+ modify_run_critical_tests FOR TESTING RAISING cx_static_check,
+ read_run_critical_tests FOR TESTING RAISING cx_static_check,
+ read_not_found_critical_tests FOR TESTING RAISING cx_static_check.
+ DATA:
+ mo_persistence_settings TYPE REF TO zcl_abapgit_persist_settings,
+ mo_settings TYPE REF TO zcl_abapgit_settings.
+ENDCLASS.
+
+CLASS ltcl_persistence_settings IMPLEMENTATION.
+
+ METHOD class_setup.
+ "Objects will be created and deleted, do not run in customer system!
+ "These tests may fail if you are locking the entries (e.g. the ZABAPGIT transaction is open)
+ IF zcl_abapgit_persist_settings=>get_instance( )->read( )->get_run_critical_tests( ) = abap_false.
+ cl_abap_unit_assert=>fail(
+ msg = 'Cancelled. You can enable these tests at the Settings page'
+ level = if_aunit_constants=>tolerable ).
+ ENDIF.
+ ENDMETHOD.
+
+ METHOD setup.
+ mo_persistence_settings = zcl_abapgit_persist_settings=>get_instance( ).
+ CREATE OBJECT mo_settings.
+ clear_settings_database( ).
+ ENDMETHOD.
+
+ METHOD modify_settings_proxy_url.
+ DATA lv_proxy_url TYPE string.
+
+ mo_settings->set_proxy_url( 'http://proxy' ).
+
+ mo_persistence_settings->modify( mo_settings ).
+
+ lv_proxy_url = zcl_abapgit_persistence_db=>get_instance( )->read(
+ iv_type = 'SETTINGS'
+ iv_value = 'PROXY_URL' ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_proxy_url
+ exp = 'http://proxy' ).
+ ENDMETHOD.
+
+ METHOD modify_settings_proxy_port.
+ DATA lv_proxy_port TYPE string.
+ mo_settings->set_proxy_port( '8080' ).
+
+ mo_persistence_settings->modify( mo_settings ).
+
+ lv_proxy_port = zcl_abapgit_persistence_db=>get_instance( )->read(
+ iv_type = 'SETTINGS'
+ iv_value = 'PROXY_PORT' ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_proxy_port
+ exp = '8080' ).
+ ENDMETHOD.
+
+ METHOD read_proxy_settings.
+ zcl_abapgit_persistence_db=>get_instance( )->modify(
+ iv_type = 'SETTINGS'
+ iv_value = 'PROXY_URL'
+ iv_data = 'A_URL' ).
+
+ zcl_abapgit_persistence_db=>get_instance( )->modify(
+ iv_type = 'SETTINGS'
+ iv_value = 'PROXY_PORT'
+ iv_data = '1000' ).
+
+ mo_settings = mo_persistence_settings->read( ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = mo_settings->get_proxy_url( )
+ exp = 'A_URL' ).
+ cl_abap_unit_assert=>assert_equals(
+ act = mo_settings->get_proxy_port( )
+ exp = '1000' ).
+ ENDMETHOD.
+
+ METHOD read_not_found_port.
+ mo_settings = mo_persistence_settings->read( ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = mo_settings->get_proxy_port( )
+ exp = '' ).
+ ENDMETHOD.
+
+ METHOD read_not_found_url.
+
+ mo_settings = mo_persistence_settings->read( ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = mo_settings->get_proxy_url( )
+ exp = '' ).
+ ENDMETHOD.
+
+ METHOD modify_run_critical_tests.
+ DATA lv_run_critical_tests TYPE abap_bool.
+ mo_settings->set_run_critical_tests( abap_true ).
+
+ mo_persistence_settings->modify( mo_settings ).
+
+ lv_run_critical_tests = zcl_abapgit_persistence_db=>get_instance( )->read(
+ iv_type = 'SETTINGS'
+ iv_value = 'CRIT_TESTS' ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_run_critical_tests
+ exp = abap_true ).
+ ENDMETHOD.
+
+ METHOD read_run_critical_tests.
+ zcl_abapgit_persistence_db=>get_instance( )->modify(
+ iv_type = 'SETTINGS'
+ iv_value = 'CRIT_TESTS'
+ iv_data = 'X' ).
+ mo_settings = mo_persistence_settings->read( ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = mo_settings->get_run_critical_tests( )
+ exp = abap_true ).
+ ENDMETHOD.
+ METHOD read_not_found_critical_tests.
+ mo_settings = mo_persistence_settings->read( ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = mo_settings->get_run_critical_tests( )
+ exp = abap_false ).
+ ENDMETHOD.
+
+
+ METHOD clear_settings_database.
+
+ TRY.
+ zcl_abapgit_persistence_db=>get_instance( )->delete(
+ iv_type = 'SETTINGS'
+ iv_value = 'PROXY_URL' ).
+ CATCH cx_static_check ##NO_HANDLER.
+ "If entry didn't exist, that's okay
+ ENDTRY.
+ TRY.
+ zcl_abapgit_persistence_db=>get_instance( )->delete(
+ iv_type = 'SETTINGS'
+ iv_value = 'PROXY_PORT' ).
+ CATCH cx_static_check ##NO_HANDLER.
+ "If entry didn't exist, that's okay
+ ENDTRY.
+ TRY.
+ zcl_abapgit_persistence_db=>get_instance( )->delete(
+ iv_type = 'SETTINGS'
+ iv_value = 'CRIT_TESTS' ).
+ CATCH cx_static_check ##NO_HANDLER.
+ "If entry didn't exist, that's okay
+ ENDTRY.
+
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/persist/zcl_abapgit_persist_settings.clas.xml b/src/persist/zcl_abapgit_persist_settings.clas.xml
index a79e19bc1..42f7fbf57 100644
--- a/src/persist/zcl_abapgit_persist_settings.clas.xml
+++ b/src/persist/zcl_abapgit_persist_settings.clas.xml
@@ -11,6 +11,7 @@
X
X
X
+ X
diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap
index 3933b1742..288adc6e2 100644
--- a/src/zabapgit.prog.abap
+++ b/src/zabapgit.prog.abap
@@ -41,6 +41,7 @@ INCLUDE zabapgit_authorizations_exit IF FOUND.
INCLUDE zabapgit_user_exit IF FOUND.
INCLUDE zabapgit_gui_pages_userexit IF FOUND.
+
INCLUDE zabapgit_unit_test.
INCLUDE zabapgit_forms.
diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap
index c101c4133..fbdca2614 100644
--- a/src/zabapgit_unit_test.prog.abap
+++ b/src/zabapgit_unit_test.prog.abap
@@ -5,371 +5,6 @@
* todo, should the tests be in the same include as the classes
* they are testing?
-CLASS ltcl_critical_tests DEFINITION FINAL FOR TESTING.
- PUBLIC SECTION.
- CLASS-METHODS:
- check_run_permission.
-ENDCLASS.
-
-CLASS ltcl_critical_tests IMPLEMENTATION.
-
- METHOD check_run_permission.
- DATA: lo_settings TYPE REF TO zcl_abapgit_settings.
-
- lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
-
- "Objects will be created and deleted, do not run in customer system!
- "These tests may fail if you are locking the entries (e.g. the ZABAPGIT transaction is open)
-
- IF lo_settings->get_run_critical_tests( ) = abap_false.
- cl_abap_unit_assert=>fail(
- msg = 'Cancelled. You can enable these tests at the Settings page'
- level = if_aunit_constants=>tolerable ).
- ENDIF.
- ENDMETHOD.
-
-ENDCLASS.
-
-*----------------------------------------------------------------------*
-* CLASS ltcl_dangerous DEFINITION
-*----------------------------------------------------------------------*
-*
-*----------------------------------------------------------------------*
-CLASS ltcl_dangerous DEFINITION FOR TESTING RISK LEVEL CRITICAL DURATION LONG FINAL.
-* if this test class does not run, parameters in transaction SAUNIT_CLIENT_SETUP
-* might need to be adjusted
-
- PRIVATE SECTION.
-
- CLASS-METHODS:
- class_setup.
-
- METHODS:
- run FOR TESTING
- RAISING zcx_abapgit_exception.
-
- CONSTANTS: c_package TYPE devclass VALUE '$ABAPGIT_UNIT_TEST'.
-
-ENDCLASS. "ltcl_dangerous DEFINITION
-
-*----------------------------------------------------------------------*
-* CLASS ltcl_dangerous IMPLEMENTATION
-*----------------------------------------------------------------------*
-*
-*----------------------------------------------------------------------*
-CLASS ltcl_dangerous IMPLEMENTATION.
-
- METHOD class_setup.
- ltcl_critical_tests=>check_run_permission( ).
- ENDMETHOD. "class_setup
-
- METHOD run.
-
- DATA: lo_repo TYPE REF TO zcl_abapgit_repo_online,
- lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
- lv_msg TYPE string,
- lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
- lt_types TYPE zcl_abapgit_objects=>ty_types_tt.
-
- FIELD-SYMBOLS: LIKE LINE OF lt_results,
- LIKE LINE OF lt_tadir,
- LIKE LINE OF lt_types.
-
-
- zcl_abapgit_sap_package=>create_local( c_package ).
-
- lt_types = zcl_abapgit_objects=>supported_list( ).
-
- lo_repo = zcl_abapgit_repo_srv=>get_instance( )->new_online(
- iv_url = 'https://github.com/larshp/abapGit-Unit-Test.git'
- iv_branch_name = 'refs/heads/master'
- iv_package = c_package ).
- lo_repo->status( ).
- lo_repo->deserialize( ).
-
- lt_tadir = zcl_abapgit_tadir=>read( c_package ).
- LOOP AT lt_types ASSIGNING .
- READ TABLE lt_tadir WITH KEY object = TRANSPORTING NO FIELDS.
- IF sy-subrc <> 0.
- lv_msg = |Missing object type { }|.
- cl_abap_unit_assert=>fail(
- msg = lv_msg
- level = if_aunit_constants=>tolerable
- quit = if_aunit_constants=>no ).
- ENDIF.
- ENDLOOP.
-
- lt_results = lo_repo->status( ).
- LOOP AT lt_results ASSIGNING WHERE match = abap_false.
- lv_msg = |Does not match { -obj_type } { -obj_name }|.
- cl_abap_unit_assert=>fail(
- msg = lv_msg
- quit = if_aunit_constants=>no ).
- ENDLOOP.
-
- zcl_abapgit_objects=>delete( lt_tadir ).
- lt_tadir = zcl_abapgit_tadir=>read( c_package ).
- LOOP AT lt_tadir ASSIGNING .
- lv_msg = |Not deleted properly { -object } { -obj_name }|.
- cl_abap_unit_assert=>fail(
- msg = lv_msg
- quit = if_aunit_constants=>no ).
- ENDLOOP.
-
- zcl_abapgit_repo_srv=>get_instance( )->delete( lo_repo ).
-
- COMMIT WORK.
-
- ENDMETHOD. "run
-
-ENDCLASS. "ltcl_dangerous IMPLEMENTATION
-
-*----------------------------------------------------------------------*
-* CLASS ltcl_object_types DEFINITION
-*----------------------------------------------------------------------*
-*
-*----------------------------------------------------------------------*
-CLASS ltcl_object_types DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
-
- PRIVATE SECTION.
- METHODS:
- is_supported FOR TESTING,
- not_exist FOR TESTING RAISING zcx_abapgit_exception.
-
-ENDCLASS. "ltcl_object_types DEFINITION
-
-*----------------------------------------------------------------------*
-* CLASS ltcl_object_types IMPLEMENTATION
-*----------------------------------------------------------------------*
-*
-*----------------------------------------------------------------------*
-CLASS ltcl_object_types IMPLEMENTATION.
-
- METHOD is_supported.
-
- DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
- lv_supported TYPE abap_bool,
- lt_types TYPE zcl_abapgit_objects=>ty_types_tt.
-
- FIELD-SYMBOLS: LIKE LINE OF lt_types.
-
-
- lt_types = zcl_abapgit_objects=>supported_list( ).
-
- LOOP AT lt_types ASSIGNING .
-
- CLEAR ls_item.
- ls_item-obj_type = .
- lv_supported = zcl_abapgit_objects=>is_supported( ls_item ).
-
- cl_abap_unit_assert=>assert_equals(
- act = lv_supported
- exp = abap_true
- msg = ls_item-obj_type
- quit = if_aunit_constants=>no ).
- ENDLOOP.
-
- ENDMETHOD. "is_supported
-
- METHOD not_exist.
-
- DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
- lv_exists TYPE abap_bool,
- lt_types TYPE zcl_abapgit_objects=>ty_types_tt.
-
- FIELD-SYMBOLS: LIKE LINE OF lt_types.
-
-
- lt_types = zcl_abapgit_objects=>supported_list( ).
-
- LOOP AT lt_types ASSIGNING .
- CLEAR ls_item.
- ls_item-obj_name = 'ZABAPGIT_FOOBAR'.
- ls_item-obj_type = .
- lv_exists = zcl_abapgit_objects=>exists( ls_item ).
-
- cl_abap_unit_assert=>assert_equals(
- act = lv_exists
- exp = abap_false
- msg = ls_item-obj_type
- quit = if_aunit_constants=>no ).
- ENDLOOP.
-
- ENDMETHOD. "not_exist
-
-ENDCLASS. "ltcl_object_types IMPLEMENTATION
-
-
-CLASS ltcl_persistence_settings DEFINITION FINAL FOR TESTING
- DURATION SHORT
- RISK LEVEL DANGEROUS.
-
- PRIVATE SECTION.
- CLASS-METHODS:
- class_setup.
-
- METHODS:
- setup,
- clear_settings_database,
- "Proxy
- modify_settings_proxy_url FOR TESTING RAISING cx_static_check,
- modify_settings_proxy_port FOR TESTING RAISING cx_static_check,
- read_proxy_settings FOR TESTING RAISING cx_static_check,
- read_not_found_url FOR TESTING RAISING cx_static_check,
- read_not_found_port FOR TESTING RAISING cx_static_check,
- "Run critical tests
- modify_run_critical_tests FOR TESTING RAISING cx_static_check,
- read_run_critical_tests FOR TESTING RAISING cx_static_check,
- read_not_found_critical_tests FOR TESTING RAISING cx_static_check.
- DATA:
- mo_persistence_settings TYPE REF TO zcl_abapgit_persist_settings,
- mo_settings TYPE REF TO zcl_abapgit_settings.
-ENDCLASS.
-
-CLASS ltcl_persistence_settings IMPLEMENTATION.
-
- METHOD class_setup.
- ltcl_critical_tests=>check_run_permission( ).
- ENDMETHOD.
-
- METHOD setup.
- mo_persistence_settings = zcl_abapgit_persist_settings=>get_instance( ).
- CREATE OBJECT mo_settings.
- clear_settings_database( ).
- ENDMETHOD.
-
- METHOD modify_settings_proxy_url.
- DATA lv_proxy_url TYPE string.
-
- mo_settings->set_proxy_url( 'http://proxy' ).
-
- mo_persistence_settings->modify( mo_settings ).
-
- lv_proxy_url = zcl_abapgit_persistence_db=>get_instance( )->read(
- iv_type = 'SETTINGS'
- iv_value = 'PROXY_URL' ).
-
- cl_abap_unit_assert=>assert_equals(
- act = lv_proxy_url
- exp = 'http://proxy' ).
- ENDMETHOD.
-
- METHOD modify_settings_proxy_port.
- DATA lv_proxy_port TYPE string.
- mo_settings->set_proxy_port( '8080' ).
-
- mo_persistence_settings->modify( mo_settings ).
-
- lv_proxy_port = zcl_abapgit_persistence_db=>get_instance( )->read(
- iv_type = 'SETTINGS'
- iv_value = 'PROXY_PORT' ).
-
- cl_abap_unit_assert=>assert_equals(
- act = lv_proxy_port
- exp = '8080' ).
- ENDMETHOD.
-
- METHOD read_proxy_settings.
- zcl_abapgit_persistence_db=>get_instance( )->modify(
- iv_type = 'SETTINGS'
- iv_value = 'PROXY_URL'
- iv_data = 'A_URL' ).
-
- zcl_abapgit_persistence_db=>get_instance( )->modify(
- iv_type = 'SETTINGS'
- iv_value = 'PROXY_PORT'
- iv_data = '1000' ).
-
- mo_settings = mo_persistence_settings->read( ).
-
- cl_abap_unit_assert=>assert_equals(
- act = mo_settings->get_proxy_url( )
- exp = 'A_URL' ).
- cl_abap_unit_assert=>assert_equals(
- act = mo_settings->get_proxy_port( )
- exp = '1000' ).
- ENDMETHOD.
-
- METHOD read_not_found_port.
- mo_settings = mo_persistence_settings->read( ).
-
- cl_abap_unit_assert=>assert_equals(
- act = mo_settings->get_proxy_port( )
- exp = '' ).
- ENDMETHOD.
-
- METHOD read_not_found_url.
-
- mo_settings = mo_persistence_settings->read( ).
-
- cl_abap_unit_assert=>assert_equals(
- act = mo_settings->get_proxy_url( )
- exp = '' ).
- ENDMETHOD.
-
- METHOD modify_run_critical_tests.
- DATA lv_run_critical_tests TYPE abap_bool.
- mo_settings->set_run_critical_tests( abap_true ).
-
- mo_persistence_settings->modify( mo_settings ).
-
- lv_run_critical_tests = zcl_abapgit_persistence_db=>get_instance( )->read(
- iv_type = 'SETTINGS'
- iv_value = 'CRIT_TESTS' ).
-
- cl_abap_unit_assert=>assert_equals(
- act = lv_run_critical_tests
- exp = abap_true ).
- ENDMETHOD.
-
- METHOD read_run_critical_tests.
- zcl_abapgit_persistence_db=>get_instance( )->modify(
- iv_type = 'SETTINGS'
- iv_value = 'CRIT_TESTS'
- iv_data = 'X' ).
- mo_settings = mo_persistence_settings->read( ).
-
- cl_abap_unit_assert=>assert_equals(
- act = mo_settings->get_run_critical_tests( )
- exp = abap_true ).
- ENDMETHOD.
- METHOD read_not_found_critical_tests.
- mo_settings = mo_persistence_settings->read( ).
-
- cl_abap_unit_assert=>assert_equals(
- act = mo_settings->get_run_critical_tests( )
- exp = abap_false ).
- ENDMETHOD.
-
-
- METHOD clear_settings_database.
-
- TRY.
- zcl_abapgit_persistence_db=>get_instance( )->delete(
- iv_type = 'SETTINGS'
- iv_value = 'PROXY_URL' ).
- CATCH cx_static_check ##NO_HANDLER.
- "If entry didn't exist, that's okay
- ENDTRY.
- TRY.
- zcl_abapgit_persistence_db=>get_instance( )->delete(
- iv_type = 'SETTINGS'
- iv_value = 'PROXY_PORT' ).
- CATCH cx_static_check ##NO_HANDLER.
- "If entry didn't exist, that's okay
- ENDTRY.
- TRY.
- zcl_abapgit_persistence_db=>get_instance( )->delete(
- iv_type = 'SETTINGS'
- iv_value = 'CRIT_TESTS' ).
- CATCH cx_static_check ##NO_HANDLER.
- "If entry didn't exist, that's okay
- ENDTRY.
-
- ENDMETHOD.
-
-ENDCLASS.
-
*CLASS ltcl_oo_serialize DEFINITION FINAL FOR TESTING
* DURATION SHORT
* RISK LEVEL HARMLESS.
diff --git a/src/zcl_abapgit_objects.clas.testclasses.abap b/src/zcl_abapgit_objects.clas.testclasses.abap
index a6503eac7..e99995fa3 100644
--- a/src/zcl_abapgit_objects.clas.testclasses.abap
+++ b/src/zcl_abapgit_objects.clas.testclasses.abap
@@ -1,5 +1,182 @@
*"* use this source file for your ABAP unit test classes
+*----------------------------------------------------------------------*
+* CLASS ltcl_dangerous DEFINITION
+*----------------------------------------------------------------------*
+*
+*----------------------------------------------------------------------*
+CLASS ltcl_dangerous DEFINITION FOR TESTING RISK LEVEL CRITICAL DURATION LONG FINAL.
+* if this test class does not run, parameters in transaction SAUNIT_CLIENT_SETUP
+* might need to be adjusted
+
+ PRIVATE SECTION.
+
+ CLASS-METHODS:
+ class_setup.
+
+ METHODS:
+ run FOR TESTING
+ RAISING zcx_abapgit_exception.
+
+ CONSTANTS: c_package TYPE devclass VALUE '$ABAPGIT_UNIT_TEST'.
+
+ENDCLASS. "ltcl_dangerous DEFINITION
+
+*----------------------------------------------------------------------*
+* CLASS ltcl_dangerous IMPLEMENTATION
+*----------------------------------------------------------------------*
+*
+*----------------------------------------------------------------------*
+CLASS ltcl_dangerous IMPLEMENTATION.
+
+ METHOD class_setup.
+ "Objects will be created and deleted, do not run in customer system!
+ "These tests may fail if you are locking the entries (e.g. the ZABAPGIT transaction is open)
+ IF zcl_abapgit_persist_settings=>get_instance( )->read( )->get_run_critical_tests( ) = abap_false.
+ cl_abap_unit_assert=>fail(
+ msg = 'Cancelled. You can enable these tests at the Settings page'
+ level = if_aunit_constants=>tolerable ).
+ ENDIF.
+ ENDMETHOD. "class_setup
+
+ METHOD run.
+
+ DATA: lo_repo TYPE REF TO zcl_abapgit_repo_online,
+ lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
+ lv_msg TYPE string,
+ lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
+ lt_types TYPE zcl_abapgit_objects=>ty_types_tt.
+
+ FIELD-SYMBOLS: LIKE LINE OF lt_results,
+ LIKE LINE OF lt_tadir,
+ LIKE LINE OF lt_types.
+
+
+ zcl_abapgit_sap_package=>create_local( c_package ).
+
+ lt_types = zcl_abapgit_objects=>supported_list( ).
+
+ lo_repo = zcl_abapgit_repo_srv=>get_instance( )->new_online(
+ iv_url = 'https://github.com/larshp/abapGit-Unit-Test.git'
+ iv_branch_name = 'refs/heads/master'
+ iv_package = c_package ).
+ lo_repo->status( ).
+ lo_repo->deserialize( ).
+
+ lt_tadir = zcl_abapgit_tadir=>read( c_package ).
+ LOOP AT lt_types ASSIGNING .
+ READ TABLE lt_tadir WITH KEY object = TRANSPORTING NO FIELDS.
+ IF sy-subrc <> 0.
+ lv_msg = |Missing object type { }|.
+ cl_abap_unit_assert=>fail(
+ msg = lv_msg
+ level = if_aunit_constants=>tolerable
+ quit = if_aunit_constants=>no ).
+ ENDIF.
+ ENDLOOP.
+
+ lt_results = lo_repo->status( ).
+ LOOP AT lt_results ASSIGNING WHERE match = abap_false.
+ lv_msg = |Does not match { -obj_type } { -obj_name }|.
+ cl_abap_unit_assert=>fail(
+ msg = lv_msg
+ quit = if_aunit_constants=>no ).
+ ENDLOOP.
+
+ zcl_abapgit_objects=>delete( lt_tadir ).
+ lt_tadir = zcl_abapgit_tadir=>read( c_package ).
+ LOOP AT lt_tadir ASSIGNING .
+ lv_msg = |Not deleted properly { -object } { -obj_name }|.
+ cl_abap_unit_assert=>fail(
+ msg = lv_msg
+ quit = if_aunit_constants=>no ).
+ ENDLOOP.
+
+ zcl_abapgit_repo_srv=>get_instance( )->delete( lo_repo ).
+
+ COMMIT WORK.
+
+ ENDMETHOD. "run
+
+ENDCLASS. "ltcl_dangerous IMPLEMENTATION
+
+
+*----------------------------------------------------------------------*
+* CLASS ltcl_object_types DEFINITION
+*----------------------------------------------------------------------*
+*
+*----------------------------------------------------------------------*
+CLASS ltcl_object_types DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
+
+ PRIVATE SECTION.
+ METHODS:
+ is_supported FOR TESTING,
+ not_exist FOR TESTING RAISING zcx_abapgit_exception.
+
+ENDCLASS. "ltcl_object_types DEFINITION
+
+*----------------------------------------------------------------------*
+* CLASS ltcl_object_types IMPLEMENTATION
+*----------------------------------------------------------------------*
+*
+*----------------------------------------------------------------------*
+CLASS ltcl_object_types IMPLEMENTATION.
+
+ METHOD is_supported.
+
+ DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
+ lv_supported TYPE abap_bool,
+ lt_types TYPE zcl_abapgit_objects=>ty_types_tt.
+
+ FIELD-SYMBOLS: LIKE LINE OF lt_types.
+
+
+ lt_types = zcl_abapgit_objects=>supported_list( ).
+
+ LOOP AT lt_types ASSIGNING .
+
+ CLEAR ls_item.
+ ls_item-obj_type = .
+ lv_supported = zcl_abapgit_objects=>is_supported( ls_item ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_supported
+ exp = abap_true
+ msg = ls_item-obj_type
+ quit = if_aunit_constants=>no ).
+ ENDLOOP.
+
+ ENDMETHOD. "is_supported
+
+ METHOD not_exist.
+
+ DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
+ lv_exists TYPE abap_bool,
+ lt_types TYPE zcl_abapgit_objects=>ty_types_tt.
+
+ FIELD-SYMBOLS: LIKE LINE OF lt_types.
+
+
+ lt_types = zcl_abapgit_objects=>supported_list( ).
+
+ LOOP AT lt_types ASSIGNING .
+ CLEAR ls_item.
+ ls_item-obj_name = 'ZABAPGIT_FOOBAR'.
+ ls_item-obj_type = .
+ lv_exists = zcl_abapgit_objects=>exists( ls_item ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lv_exists
+ exp = abap_false
+ msg = ls_item-obj_type
+ quit = if_aunit_constants=>no ).
+ ENDLOOP.
+
+ ENDMETHOD. "not_exist
+
+ENDCLASS. "ltcl_object_types IMPLEMENTATION
+
+
*----------------------------------------------------------------------*
* CLASS ltcl_serialize DEFINITION
*----------------------------------------------------------------------*