diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index e8c026571..e5e0dbdbf 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -427,7 +427,7 @@ CLASS lcl_persistence_user DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. RAISING lcx_exception. METHODS toggle_favorite - IMPORTING iv_repo_key TYPE lcl_persistence_repo=>ty_repo-key + IMPORTING iv_repo_key TYPE lcl_persistence_repo=>ty_repo-key RAISING lcx_exception. METHODS is_favorite_repo @@ -1426,11 +1426,18 @@ CLASS lcl_settings DEFINITION FINAL. METHODS get_proxy_port RETURNING VALUE(rv_port) TYPE string. + METHODS set_run_critical_tests + IMPORTING + iv_run TYPE abap_bool. + METHODS + get_run_critical_tests + RETURNING VALUE(rv_run) TYPE abap_bool. PROTECTED SECTION. PRIVATE SECTION. DATA mv_proxy_url TYPE string. DATA mv_proxy_port TYPE string. + DATA mv_run_critical_tests TYPE abap_bool. ENDCLASS. @@ -1454,6 +1461,14 @@ CLASS lcl_settings IMPLEMENTATION. rv_port = mv_proxy_port. ENDMETHOD. + METHOD set_run_critical_tests. + mv_run_critical_tests = iv_run. + ENDMETHOD. + + METHOD get_run_critical_tests. + rv_run = mv_run_critical_tests. + ENDMETHOD. + ENDCLASS. @@ -1488,10 +1503,18 @@ CLASS lcl_persistence_settings IMPLEMENTATION. iv_type = 'SETTINGS' iv_value = 'PROXY_PORT' iv_data = io_settings->get_proxy_port( ) ). + + lcl_app=>db( )->modify( + iv_type = 'SETTINGS' + iv_value = 'CRIT_TESTS' + iv_data = io_settings->get_run_critical_tests( ) ). ENDMETHOD. METHOD read. + DATA: lv_critical_tests_as_string TYPE string, + lv_critical_tests_as_boolean TYPE abap_bool. + CREATE OBJECT ro_settings. TRY. ro_settings->set_proxy_url( @@ -1511,22 +1534,37 @@ CLASS lcl_persistence_settings IMPLEMENTATION. CATCH lcx_not_found. ro_settings->set_proxy_port( '' ). ENDTRY. + TRY. + lv_critical_tests_as_boolean = lv_critical_tests_as_string = lcl_app=>db( )->read( + iv_type = 'SETTINGS' + iv_value = 'CRIT_TESTS' + ). + ro_settings->set_run_critical_tests( lv_critical_tests_as_boolean ). + CATCH lcx_not_found. + ro_settings->set_run_critical_tests( abap_false ). + ENDTRY. ENDMETHOD. ENDCLASS. CLASS ltcl_persistence_settings DEFINITION FINAL FOR TESTING DURATION SHORT - RISK LEVEL HARMLESS. + RISK LEVEL DANGEROUS. PRIVATE SECTION. METHODS: setup, - modify_settings_proxy_url FOR TESTING, - modify_settings_proxy_port FOR TESTING, - read_settings FOR TESTING, - read_not_found_url FOR TESTING, - read_not_found_port FOR TESTING. + 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 lcl_persistence_settings, mo_settings TYPE REF TO lcl_settings. @@ -1535,113 +1573,140 @@ ENDCLASS. CLASS ltcl_persistence_settings IMPLEMENTATION. METHOD setup. CREATE OBJECT mo_persistence_settings. + CREATE OBJECT mo_settings. + clear_settings_database( ). + "These tests may fail if you are locking the entries (e.g. the ZABAPGIT transaction is open) ENDMETHOD. METHOD modify_settings_proxy_url. DATA lv_proxy_url TYPE string. - TRY. - CREATE OBJECT mo_settings. - mo_settings->set_proxy_url( 'http://proxy' ). - mo_persistence_settings->modify( mo_settings ). + mo_settings->set_proxy_url( 'http://proxy' ). - lv_proxy_url = lcl_app=>db( )->read( - iv_type = 'SETTINGS' - iv_value = 'PROXY_URL' ). + mo_persistence_settings->modify( mo_settings ). - cl_abap_unit_assert=>assert_equals( - act = lv_proxy_url - exp = 'http://proxy' ). - CATCH cx_root. - cl_abap_unit_assert=>fail( 'Unexpected exception' ). - ENDTRY. + lv_proxy_url = lcl_app=>db( )->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. - TRY. - CREATE OBJECT mo_settings. - mo_settings->set_proxy_port( '8080' ). + mo_settings->set_proxy_port( '8080' ). - mo_persistence_settings->modify( mo_settings ). + mo_persistence_settings->modify( mo_settings ). - lv_proxy_port = lcl_app=>db( )->read( - iv_type = 'SETTINGS' - iv_value = 'PROXY_PORT' ). + lv_proxy_port = lcl_app=>db( )->read( + iv_type = 'SETTINGS' + iv_value = 'PROXY_PORT' ). - cl_abap_unit_assert=>assert_equals( - act = lv_proxy_port - exp = '8080' ). - CATCH cx_root. - cl_abap_unit_assert=>fail( 'Unexpected exception' ). - ENDTRY. + cl_abap_unit_assert=>assert_equals( + act = lv_proxy_port + exp = '8080' ). ENDMETHOD. - METHOD read_settings. - TRY. - lcl_app=>db( )->modify( - iv_type = 'SETTINGS' - iv_value = 'PROXY_URL' - iv_data = 'A_URL' ). + METHOD read_proxy_settings. + lcl_app=>db( )->modify( + iv_type = 'SETTINGS' + iv_value = 'PROXY_URL' + iv_data = 'A_URL' ). - lcl_app=>db( )->modify( - iv_type = 'SETTINGS' - iv_value = 'PROXY_PORT' - iv_data = '1000' ). + lcl_app=>db( )->modify( + iv_type = 'SETTINGS' + iv_value = 'PROXY_PORT' + iv_data = '1000' ). - mo_settings = mo_persistence_settings->read( ). + 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' ). - CATCH cx_root. - cl_abap_unit_assert=>fail( 'Unexpected exception' ). - ENDTRY. + 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. - TRY. - lcl_app=>db( )->modify( - iv_type = 'SETTINGS' - iv_value = 'PROXY_URL' - iv_data = 'A_URL' ). - lcl_app=>db( )->modify( - iv_type = 'SETTINGS' - iv_value = 'PROXY_PORT' - iv_data = '' ). + mo_settings = mo_persistence_settings->read( ). - mo_settings = mo_persistence_settings->read( ). - - cl_abap_unit_assert=>assert_equals( - act = mo_settings->get_proxy_port( ) - exp = '' ). - CATCH cx_root. - cl_abap_unit_assert=>fail( 'Unexpected exception' ). - ENDTRY. + cl_abap_unit_assert=>assert_equals( + act = mo_settings->get_proxy_port( ) + exp = '' ). ENDMETHOD. METHOD read_not_found_url. - TRY. - lcl_app=>db( )->modify( - iv_type = 'SETTINGS' - iv_value = 'PROXY_PORT' - iv_data = '1000' ). - lcl_app=>db( )->modify( - iv_type = 'SETTINGS' - iv_value = 'PROXY_URL' - iv_data = '' ). - mo_settings = mo_persistence_settings->read( ). - cl_abap_unit_assert=>assert_equals( - act = mo_settings->get_proxy_url( ) - exp = '' ). - CATCH cx_root. - cl_abap_unit_assert=>fail( 'Unexpected exception' ). + 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 = lcl_app=>db( )->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. + lcl_app=>db( )->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. + lcl_app=>db( )->delete( + iv_type = 'SETTINGS' + iv_value = 'PROXY_URL' ). + CATCH cx_static_check. + "If entry didn't exist, that's okay ENDTRY. + TRY. + lcl_app=>db( )->delete( + iv_type = 'SETTINGS' + iv_value = 'PROXY_PORT' ). + CATCH cx_static_check. + "If entry didn't exist, that's okay + ENDTRY. + TRY. + lcl_app=>db( )->delete( + iv_type = 'SETTINGS' + iv_value = 'CRIT_TESTS' ). + CATCH cx_static_check. + "If entry didn't exist, that's okay + ENDTRY. + ENDMETHOD. ENDCLASS. \ No newline at end of file