Merge pull request #463 from EduardoCopat/master

Unit tests rely on confirming a pop-up #433
This commit is contained in:
Lars Hvam 2016-11-25 14:32:20 +01:00 committed by GitHub
commit db476a18b1
3 changed files with 262 additions and 171 deletions

View File

@ -15,6 +15,8 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render_proxy
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render_development_internals
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render_form_begin
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render_form_end
@ -49,6 +51,8 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
ro_html->add( render_form_begin( ) ).
ro_html->add( render_proxy( ) ).
ro_html->add( |<hr>| ).
ro_html->add( render_development_internals( ) ).
ro_html->add( render_form_end( ) ).
ENDMETHOD.
@ -86,7 +90,6 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
lt_post_fields = parse_post( it_postdata ).
build_settings( lt_post_fields ).
validate_settings( ).
IF mv_error = abap_true.
@ -115,6 +118,13 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
mv_error = abap_true.
ENDIF.
mo_settings->set_proxy_port( ls_post_field-value ).
READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'critical_tests'.
IF sy-subrc = 0.
mo_settings->set_run_critical_tests( abap_true ).
ELSE.
mo_settings->set_run_critical_tests( abap_false ).
ENDIF.
ENDMETHOD.
@ -159,11 +169,22 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
METHOD read_settings.
DATA lo_settings_persistence TYPE REF TO lcl_persistence_settings.
lo_settings_persistence = lcl_app=>settings( ).
mo_settings = lo_settings_persistence->read( ).
ENDMETHOD.
METHOD render_development_internals.
DATA lv_checked TYPE string.
IF mo_settings->get_run_critical_tests( ) = abap_true.
lv_checked = 'checked'.
ENDIF.
CREATE OBJECT ro_html.
ro_html->add( |<h2>abapGit Development Internals settings</h2>| ).
ro_html->add( `<input type="checkbox" name="critical_tests" value="X" `
&& lv_checked && ` > Enable critical unit tests (see LTCL_DANGEROUS)` ).
ro_html->add( |<br>| ).
ro_html->add( |<br>| ).
ENDMETHOD.
ENDCLASS.

View File

@ -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,136 +1534,14 @@ CLASS lcl_persistence_settings IMPLEMENTATION.
CATCH lcx_not_found.
ro_settings->set_proxy_port( '' ).
ENDTRY.
ENDMETHOD.
ENDCLASS.
CLASS ltcl_persistence_settings DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
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.
DATA:
mo_persistence_settings TYPE REF TO lcl_persistence_settings,
mo_settings TYPE REF TO lcl_settings.
ENDCLASS.
CLASS ltcl_persistence_settings IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_persistence_settings.
"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 ).
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' ).
CATCH cx_root.
cl_abap_unit_assert=>fail( 'Unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD modify_settings_proxy_port.
DATA lv_proxy_port TYPE string.
TRY.
CREATE OBJECT mo_settings.
mo_settings->set_proxy_port( '8080' ).
mo_persistence_settings->modify( mo_settings ).
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.
ENDMETHOD.
METHOD read_settings.
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 = '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' ).
CATCH cx_root.
cl_abap_unit_assert=>fail( 'Unexpected exception' ).
ENDTRY.
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( ).
cl_abap_unit_assert=>assert_equals(
act = mo_settings->get_proxy_port( )
exp = '' ).
CATCH cx_root.
cl_abap_unit_assert=>fail( 'Unexpected exception' ).
ENDTRY.
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' ).
lv_critical_tests_as_string = lcl_app=>db( )->read(
iv_type = 'SETTINGS'
iv_value = 'CRIT_TESTS' ).
lv_critical_tests_as_boolean = lv_critical_tests_as_string.
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.

View File

@ -81,6 +81,28 @@ CLASS ltcl_convert IMPLEMENTATION.
ENDCLASS. "ltcl_convert IMPLEMENTATION
CLASS lth_critical_tests DEFINITION .
PUBLIC SECTION.
CLASS-METHODS:
check_run_permission.
ENDCLASS.
CLASS lth_critical_tests IMPLEMENTATION.
METHOD check_run_permission.
DATA: lo_settings TYPE REF TO lcl_settings.
lo_settings = lcl_app=>settings( )->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( 'Cancelled. You can enable these tests at the Settings page' ).
ENDIF.
ENDMETHOD.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS ltcl_dangerous DEFINITION
*----------------------------------------------------------------------*
@ -111,28 +133,7 @@ ENDCLASS. "ltcl_dangerous DEFINITION
CLASS ltcl_dangerous IMPLEMENTATION.
METHOD class_setup.
DATA: lv_text TYPE c LENGTH 100,
lv_answer TYPE c LENGTH 1.
lv_text = 'Objects will be created and deleted, do not run in customer system!'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Warning'
text_question = lv_text
text_button_1 = 'Run'
text_button_2 = 'Cancel'
default_button = '2'
display_cancel_button = abap_false
IMPORTING
answer = lv_answer.
IF lv_answer = '2'.
cl_abap_unit_assert=>fail( 'Cancelled' ).
ENDIF.
lth_critical_tests=>check_run_permission( ).
ENDMETHOD. "class_setup
METHOD run.
@ -255,12 +256,12 @@ CLASS ltcl_diff IMPLEMENTATION.
METHOD test.
DATA: lv_new TYPE string,
lv_xnew TYPE xstring,
lv_old TYPE string,
lv_xold TYPE xstring,
lo_diff TYPE REF TO lcl_diff,
lt_diff TYPE lcl_diff=>ty_diffs_tt.
DATA: lv_new TYPE string,
lv_xnew TYPE xstring,
lv_old TYPE string,
lv_xold TYPE xstring,
lo_diff TYPE REF TO lcl_diff,
lt_diff TYPE lcl_diff=>ty_diffs_tt.
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF lt_diff.
@ -685,10 +686,10 @@ CLASS ltcl_url DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
PRIVATE SECTION.
METHODS:
repo_host FOR TESTING RAISING lcx_exception,
repo_name1 FOR TESTING RAISING lcx_exception,
repo_name2 FOR TESTING RAISING lcx_exception,
repo_error FOR TESTING.
repo_host FOR TESTING RAISING lcx_exception,
repo_name1 FOR TESTING RAISING lcx_exception,
repo_name2 FOR TESTING RAISING lcx_exception,
repo_error FOR TESTING.
ENDCLASS. "ltcl_url DEFINITION
@ -1609,7 +1610,7 @@ ENDCLASS.
CLASS ltcl_html_action_utils DEFINITION
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
INHERITING FROM CL_AUNIT_ASSERT.
INHERITING FROM cl_aunit_assert.
PUBLIC SECTION.
@ -1668,7 +1669,7 @@ ENDCLASS. "ltcl_html_action_utils
CLASS ltcl_path DEFINITION
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
INHERITING FROM CL_AUNIT_ASSERT.
INHERITING FROM cl_aunit_assert.
PUBLIC SECTION.
METHODS is_root FOR TESTING.
@ -1797,7 +1798,7 @@ ENDCLASS. "ltcl_path
CLASS ltcl_file_status DEFINITION
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
INHERITING FROM CL_AUNIT_ASSERT.
INHERITING FROM cl_aunit_assert.
PUBLIC SECTION.
METHODS calculate_status FOR TESTING.
@ -1898,7 +1899,7 @@ ENDCLASS. "ltcl_file_status
CLASS ltcl_sap_package DEFINITION
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
INHERITING FROM CL_AUNIT_ASSERT.
INHERITING FROM cl_aunit_assert.
PUBLIC SECTION.
METHODS check FOR TESTING.
@ -1909,8 +1910,8 @@ CLASS ltcl_sap_package IMPLEMENTATION.
METHOD check.
DATA: lt_results TYPE ty_results_tt,
lo_log TYPE REF TO lcl_log.
DATA: lt_results TYPE ty_results_tt,
lo_log TYPE REF TO lcl_log.
FIELD-SYMBOLS: <result> LIKE LINE OF lt_results.
@ -2009,4 +2010,172 @@ CLASS ltcl_sap_package IMPLEMENTATION.
ENDMETHOD. " check.
ENDCLASS. "ltcl_sap_package
ENDCLASS. "ltcl_sap_package
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 lcl_persistence_settings,
mo_settings TYPE REF TO lcl_settings.
ENDCLASS.
CLASS ltcl_persistence_settings IMPLEMENTATION.
METHOD class_setup.
lth_critical_tests=>check_run_permission( ).
ENDMETHOD.
METHOD setup.
CREATE OBJECT mo_persistence_settings.
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 = 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.
mo_settings->set_proxy_port( '8080' ).
mo_persistence_settings->modify( mo_settings ).
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' ).
ENDMETHOD.
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' ).
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 = 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.