From fbd9e70fa50b7ab654c45f3aaf4b2892f46e5cb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Wed, 20 Dec 2023 20:50:06 +0100 Subject: [PATCH] Add unit tests for `ZCL_ABAPGIT_GUI_PAGE_SETT_REMO->VALIDATE_FORM` (#6712) Co-authored-by: Lars Hvam Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/git/zcl_abapgit_git_factory.clas.abap | 30 +- src/git/zcl_abapgit_git_injector.clas.abap | 22 + src/git/zcl_abapgit_git_injector.clas.xml | 16 + src/git/zcl_abapgit_git_porcelain.clas.abap | 2 +- src/git/zcl_abapgit_git_transport.clas.abap | 16 +- src/git/zif_abapgit_git_transport.intf.abap | 11 + src/git/zif_abapgit_git_transport.intf.xml | 15 + src/repo/stage/zcl_abapgit_merge.clas.abap | 2 +- src/repo/zcl_abapgit_repo_online.clas.abap | 4 +- src/repo/zcl_abapgit_repo_srv.clas.abap | 2 +- .../zcl_abapgit_gui_page_commit.clas.abap | 4 +- .../zcl_abapgit_gui_page_merge_sel.clas.abap | 2 +- .../zcl_abapgit_gui_page_sett_remo.clas.abap | 4 +- ...t_gui_page_sett_remo.clas.testclasses.abap | 470 ++++++++++++++++++ .../zcl_abapgit_gui_page_sett_remo.clas.xml | 1 + .../pages/zcl_abapgit_gui_page_tags.clas.abap | 2 +- .../zcl_abapgit_popup_branch_list.clas.abap | 2 +- .../zcl_abapgit_popup_tag_list.clas.abap | 2 +- src/ui/zcl_abapgit_popups.clas.abap | 4 +- ...pgit_integration_git.clas.testclasses.abap | 2 +- 20 files changed, 591 insertions(+), 22 deletions(-) create mode 100644 src/git/zcl_abapgit_git_injector.clas.abap create mode 100644 src/git/zcl_abapgit_git_injector.clas.xml create mode 100644 src/git/zif_abapgit_git_transport.intf.abap create mode 100644 src/git/zif_abapgit_git_transport.intf.xml create mode 100644 src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.testclasses.abap diff --git a/src/git/zcl_abapgit_git_factory.clas.abap b/src/git/zcl_abapgit_git_factory.clas.abap index 0e5e94f30..c6f558f9e 100644 --- a/src/git/zcl_abapgit_git_factory.clas.abap +++ b/src/git/zcl_abapgit_git_factory.clas.abap @@ -1,22 +1,42 @@ CLASS zcl_abapgit_git_factory DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PRIVATE + GLOBAL FRIENDS zcl_abapgit_git_injector . PUBLIC SECTION. - CLASS-METHODS + CLASS-METHODS: get_v2_porcelain - RETURNING VALUE(ri_v2) TYPE REF TO zif_abapgit_gitv2_porcelain. + RETURNING VALUE(ri_v2) TYPE REF TO zif_abapgit_gitv2_porcelain, + + get_git_transport + RETURNING + VALUE(ri_git_transport) TYPE REF TO zif_abapgit_git_transport. + PROTECTED SECTION. PRIVATE SECTION. + CLASS-DATA: + gi_git_transport TYPE REF TO zif_abapgit_git_transport. + ENDCLASS. -CLASS ZCL_ABAPGIT_GIT_FACTORY IMPLEMENTATION. - +CLASS zcl_abapgit_git_factory IMPLEMENTATION. METHOD get_v2_porcelain. CREATE OBJECT ri_v2 TYPE zcl_abapgit_gitv2_porcelain. ENDMETHOD. + + + METHOD get_git_transport. + + IF gi_git_transport IS INITIAL. + CREATE OBJECT gi_git_transport TYPE zcl_abapgit_git_transport. + ENDIF. + + ri_git_transport = gi_git_transport. + + ENDMETHOD. + ENDCLASS. diff --git a/src/git/zcl_abapgit_git_injector.clas.abap b/src/git/zcl_abapgit_git_injector.clas.abap new file mode 100644 index 000000000..07b1aebba --- /dev/null +++ b/src/git/zcl_abapgit_git_injector.clas.abap @@ -0,0 +1,22 @@ +CLASS zcl_abapgit_git_injector DEFINITION + PUBLIC + FINAL + CREATE PRIVATE . + + PUBLIC SECTION. + CLASS-METHODS: + set_git_transport + IMPORTING + ii_git_transport TYPE REF TO zif_abapgit_git_transport. + +ENDCLASS. + + + +CLASS zcl_abapgit_git_injector IMPLEMENTATION. + + METHOD set_git_transport. + zcl_abapgit_git_factory=>gi_git_transport = ii_git_transport. + ENDMETHOD. + +ENDCLASS. diff --git a/src/git/zcl_abapgit_git_injector.clas.xml b/src/git/zcl_abapgit_git_injector.clas.xml new file mode 100644 index 000000000..b0463f9e3 --- /dev/null +++ b/src/git/zcl_abapgit_git_injector.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_GIT_INJECTOR + E + abapGit - Git Injector + 1 + X + X + X + + + + diff --git a/src/git/zcl_abapgit_git_porcelain.clas.abap b/src/git/zcl_abapgit_git_porcelain.clas.abap index 07a81363a..672de746e 100644 --- a/src/git/zcl_abapgit_git_porcelain.clas.abap +++ b/src/git/zcl_abapgit_git_porcelain.clas.abap @@ -358,7 +358,7 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION. lt_tags TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt. " For annotated tags, find the correct commit - lo_branches = zcl_abapgit_git_transport=>branches( iv_url ). + lo_branches = zcl_abapgit_git_factory=>get_git_transport( )->branches( iv_url ). lt_tags = lo_branches->get_tags_only( ). lv_tag = zcl_abapgit_git_tag=>remove_peel( is_tag-name ). diff --git a/src/git/zcl_abapgit_git_transport.clas.abap b/src/git/zcl_abapgit_git_transport.clas.abap index 8a12e3c25..60512203c 100644 --- a/src/git/zcl_abapgit_git_transport.clas.abap +++ b/src/git/zcl_abapgit_git_transport.clas.abap @@ -4,6 +4,8 @@ CLASS zcl_abapgit_git_transport DEFINITION CREATE PUBLIC . PUBLIC SECTION. + INTERFACES: + zif_abapgit_git_transport. * remote to local CLASS-METHODS upload_pack_by_branch @@ -39,11 +41,12 @@ CLASS zcl_abapgit_git_transport DEFINITION zcx_abapgit_exception . CLASS-METHODS branches IMPORTING - !iv_url TYPE string + iv_url TYPE string RETURNING VALUE(ro_branch_list) TYPE REF TO zcl_abapgit_git_branch_list RAISING zcx_abapgit_exception . + PROTECTED SECTION. PRIVATE SECTION. @@ -102,7 +105,7 @@ ENDCLASS. CLASS zcl_abapgit_git_transport IMPLEMENTATION. - METHOD branches. + METHOD zif_abapgit_git_transport~branches. DATA: lo_client TYPE REF TO zcl_abapgit_http_client. @@ -439,4 +442,13 @@ CLASS zcl_abapgit_git_transport IMPLEMENTATION. it_hashes = lt_hashes ). ENDMETHOD. + + + METHOD branches. + + " This method is kept for compatibility reasons + ro_branch_list = zcl_abapgit_git_factory=>get_git_transport( )->branches( iv_url ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/git/zif_abapgit_git_transport.intf.abap b/src/git/zif_abapgit_git_transport.intf.abap new file mode 100644 index 000000000..308ef3b82 --- /dev/null +++ b/src/git/zif_abapgit_git_transport.intf.abap @@ -0,0 +1,11 @@ +INTERFACE zif_abapgit_git_transport + PUBLIC . + METHODS branches + IMPORTING + iv_url TYPE string + RETURNING + VALUE(ro_branch_list) TYPE REF TO zcl_abapgit_git_branch_list + RAISING + zcx_abapgit_exception . + +ENDINTERFACE. diff --git a/src/git/zif_abapgit_git_transport.intf.xml b/src/git/zif_abapgit_git_transport.intf.xml new file mode 100644 index 000000000..f5f523df2 --- /dev/null +++ b/src/git/zif_abapgit_git_transport.intf.xml @@ -0,0 +1,15 @@ + + + + + + ZIF_ABAPGIT_GIT_TRANSPORT + E + abapGit - Git Transport + 2 + 1 + X + + + + diff --git a/src/repo/stage/zcl_abapgit_merge.clas.abap b/src/repo/stage/zcl_abapgit_merge.clas.abap index ff4b10683..f9b716c60 100644 --- a/src/repo/stage/zcl_abapgit_merge.clas.abap +++ b/src/repo/stage/zcl_abapgit_merge.clas.abap @@ -252,7 +252,7 @@ CLASS zcl_abapgit_merge IMPLEMENTATION. DATA: lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list, lt_upload TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt. - lo_branch_list = zcl_abapgit_git_transport=>branches( ms_merge-repo->get_url( ) ). + lo_branch_list = zcl_abapgit_git_factory=>get_git_transport( )->branches( ms_merge-repo->get_url( ) ). ms_merge-source = lo_branch_list->find_by_name( zcl_abapgit_git_branch_list=>complete_heads_branch_name( mv_source_branch ) ). diff --git a/src/repo/zcl_abapgit_repo_online.clas.abap b/src/repo/zcl_abapgit_repo_online.clas.abap index 865d465e8..ed279c752 100644 --- a/src/repo/zcl_abapgit_repo_online.clas.abap +++ b/src/repo/zcl_abapgit_repo_online.clas.abap @@ -152,7 +152,7 @@ CLASS zcl_abapgit_repo_online IMPLEMENTATION. lt_branches TYPE zif_abapgit_git_definitions=>ty_git_branch_list_tt, lv_display_name TYPE string. - lt_branches = zcl_abapgit_git_transport=>branches( get_url( ) )->get_branches_only( ). + lt_branches = zcl_abapgit_git_factory=>get_git_transport( )->branches( get_url( ) )->get_branches_only( ). READ TABLE lt_branches WITH TABLE KEY name_key COMPONENTS name = iv_name @@ -181,7 +181,7 @@ CLASS zcl_abapgit_repo_online IMPLEMENTATION. lv_branch = get_selected_branch( ). IF lv_branch IS NOT INITIAL. - lo_branch_list = zcl_abapgit_git_transport=>branches( get_url( ) ). + lo_branch_list = zcl_abapgit_git_factory=>get_git_transport( )->branches( get_url( ) ). TRY. lo_branch_list->find_by_name( lv_branch ). diff --git a/src/repo/zcl_abapgit_repo_srv.clas.abap b/src/repo/zcl_abapgit_repo_srv.clas.abap index 7d5e49af3..7d8e3191f 100644 --- a/src/repo/zcl_abapgit_repo_srv.clas.abap +++ b/src/repo/zcl_abapgit_repo_srv.clas.abap @@ -100,7 +100,7 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION. rv_name = iv_name. IF rv_name IS INITIAL. ASSERT NOT iv_url IS INITIAL. - lo_branch_list = zcl_abapgit_git_transport=>branches( iv_url ). + lo_branch_list = zcl_abapgit_git_factory=>get_git_transport( )->branches( iv_url ). rv_name = lo_branch_list->get_head_symref( ). ELSEIF -1 = find( val = rv_name diff --git a/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap index 42e5d4a91..874ace04e 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap @@ -449,7 +449,9 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. lv_new_branch_name = io_form_data->get( c_id-new_branch_name ). IF lv_new_branch_name IS NOT INITIAL. " check if branch already exists - lt_branches = zcl_abapgit_git_transport=>branches( mo_repo->get_url( ) )->get_branches_only( ). + lt_branches = zcl_abapgit_git_factory=>get_git_transport( + )->branches( mo_repo->get_url( ) + )->get_branches_only( ). READ TABLE lt_branches TRANSPORTING NO FIELDS WITH TABLE KEY name_key COMPONENTS name = branch_name_to_internal( lv_new_branch_name ). IF sy-subrc = 0. diff --git a/src/ui/pages/zcl_abapgit_gui_page_merge_sel.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_merge_sel.clas.abap index 0614484ae..57c86f763 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_merge_sel.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_merge_sel.clas.abap @@ -141,7 +141,7 @@ CLASS zcl_abapgit_gui_page_merge_sel IMPLEMENTATION. DATA lo_branches TYPE REF TO zcl_abapgit_git_branch_list. - lo_branches = zcl_abapgit_git_transport=>branches( mo_repo->get_url( ) ). + lo_branches = zcl_abapgit_git_factory=>get_git_transport( )->branches( mo_repo->get_url( ) ). mt_branches = lo_branches->get_branches_only( ). DELETE mt_branches WHERE name = zif_abapgit_git_definitions=>c_head_name. diff --git a/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.abap index aa47b3c6b..eface1e26 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.abap @@ -763,7 +763,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. iv_val = c_head_types-branch ). IF lv_url CP 'http*'. - lv_branch = zcl_abapgit_git_transport=>branches( lv_url )->get_head_symref( ). + lv_branch = zcl_abapgit_git_factory=>get_git_transport( )->branches( lv_url )->get_head_symref( ). mo_form_data->set( iv_key = c_id-branch iv_val = lv_branch ). @@ -903,7 +903,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. TRY. IF lv_branch IS NOT INITIAL. - lo_branch_list = zcl_abapgit_git_transport=>branches( lv_url ). + lo_branch_list = zcl_abapgit_git_factory=>get_git_transport( )->branches( lv_url ). lo_branch_list->find_by_name( lv_branch ). ENDIF. CATCH zcx_abapgit_exception INTO lx_error. diff --git a/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.testclasses.abap b/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.testclasses.abap new file mode 100644 index 000000000..477cdedaf --- /dev/null +++ b/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.testclasses.abap @@ -0,0 +1,470 @@ +*"* use this source file for your ABAP unit test classes + +CLASS ltd_git_transport DEFINITION FINAL FOR TESTING. + + PUBLIC SECTION. + INTERFACES: + zif_abapgit_git_transport. + +ENDCLASS. + + +CLASS ltd_branch_list DEFINITION FINAL FOR TESTING INHERITING FROM zcl_abapgit_git_branch_list. + + PUBLIC SECTION. + METHODS: + constructor + IMPORTING + iv_data TYPE string + RAISING + zcx_abapgit_exception, + + find_by_name REDEFINITION. + +ENDCLASS. + + +CLASS ltd_frontend_services DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PUBLIC SECTION. + + INTERFACES: + zif_abapgit_frontend_services. + +ENDCLASS. + + + +CLASS ltcl_validate_form DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PRIVATE SECTION. + CONSTANTS: + c_git_repo_url TYPE string VALUE 'https://repo.com/demo.git'. + + DATA: + mo_cut TYPE REF TO zcl_abapgit_gui_page_sett_remo, + + mo_repo TYPE REF TO zcl_abapgit_repo_online, + mo_given_form_data TYPE REF TO zcl_abapgit_string_map, + mo_act_validation_log TYPE REF TO zcl_abapgit_string_map, + + mo_git_transport_mock TYPE REF TO zif_abapgit_git_transport, + mo_frontend_services_mock TYPE REF TO zif_abapgit_frontend_services. + + METHODS: + setup RAISING cx_static_check, + teardown RAISING cx_static_check, + + switch_to_offline_no_error FOR TESTING RAISING cx_static_check, + invalid_url FOR TESTING RAISING cx_static_check, + invalid_url2 FOR TESTING RAISING cx_static_check, + valid_url_no_head_type FOR TESTING RAISING cx_static_check, + + invalid_branch FOR TESTING RAISING cx_static_check, + valid_branch FOR TESTING RAISING cx_static_check, + + invalid_tag FOR TESTING RAISING cx_static_check, + valid_tag FOR TESTING RAISING cx_static_check, + + invalid_pull_request FOR TESTING RAISING cx_static_check, + valid_pull_request FOR TESTING RAISING cx_static_check, + + invalid_commit FOR TESTING RAISING cx_static_check, + valid_commit FOR TESTING RAISING cx_static_check, + + when_validate_form + RAISING + zcx_abapgit_exception, + + then_no_error_shd_occur, + then_error_shd_occur + IMPORTING + iv_exp_error_key TYPE string. + +ENDCLASS. + +CLASS zcl_abapgit_gui_page_sett_remo DEFINITION LOCAL FRIENDS ltcl_validate_form. + +CLASS ltd_git_transport IMPLEMENTATION. + + METHOD zif_abapgit_git_transport~branches. + + CONSTANTS: lc_dummy_data TYPE string VALUE '0000'. + + CREATE OBJECT ro_branch_list TYPE ltd_branch_list + EXPORTING + iv_data = lc_dummy_data. + + ENDMETHOD. + +ENDCLASS. + + +CLASS ltd_branch_list IMPLEMENTATION. + + METHOD constructor. + + super->constructor( iv_data ). + + ENDMETHOD. + + + METHOD find_by_name. + + IF iv_branch_name CS 'feature' + OR iv_branch_name CS 'inv_tag' + OR iv_branch_name CS 'inv_pr' + OR iv_branch_name IS INITIAL. + RAISE EXCEPTION TYPE zcx_abapgit_exception. + ENDIF. + + ENDMETHOD. + +ENDCLASS. + + +CLASS ltd_frontend_services IMPLEMENTATION. + + METHOD zif_abapgit_frontend_services~clipboard_export. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~directory_browse. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~directory_create. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~directory_exist. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~execute. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~file_download. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~file_upload. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~get_file_separator. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~get_gui_version. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~get_system_directory. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~gui_is_available. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~is_sapgui_for_java. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~is_sapgui_for_windows. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~is_webgui. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~open_ie_devtools. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~show_file_open_dialog. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~show_file_save_dialog. + ENDMETHOD. + +ENDCLASS. + + +CLASS ltcl_validate_form IMPLEMENTATION. + + METHOD setup. + + DATA: ls_data TYPE zif_abapgit_persistence=>ty_repo. + + CREATE OBJECT mo_git_transport_mock TYPE ltd_git_transport. + zcl_abapgit_git_injector=>set_git_transport( mo_git_transport_mock ). + + CREATE OBJECT mo_frontend_services_mock TYPE ltd_frontend_services. + zcl_abapgit_ui_injector=>set_frontend_services( mo_frontend_services_mock ). + + ls_data-key = 1. + ls_data-branch_name = 'main'. + + CREATE OBJECT mo_repo EXPORTING is_data = ls_data. + + CREATE OBJECT mo_given_form_data. + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-branch + iv_val = 'main' ). + + CREATE OBJECT mo_cut EXPORTING io_repo = mo_repo. + + ENDMETHOD. + + + METHOD teardown. + + CLEAR: + mo_git_transport_mock, + mo_frontend_services_mock. + zcl_abapgit_git_injector=>set_git_transport( mo_git_transport_mock ). + zcl_abapgit_ui_injector=>set_frontend_services( mo_frontend_services_mock ). + + ENDMETHOD. + + + METHOD switch_to_offline_no_error. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_true ). + when_validate_form( ). + then_no_error_shd_occur( ). + + ENDMETHOD. + + + METHOD invalid_url. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = 'http://test' ). + + when_validate_form( ). + then_error_shd_occur( zcl_abapgit_gui_page_sett_remo=>c_id-url ). + + ENDMETHOD. + + + METHOD invalid_url2. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = 'test' ). + + when_validate_form( ). + then_error_shd_occur( zcl_abapgit_gui_page_sett_remo=>c_id-url ). + + ENDMETHOD. + + + METHOD valid_url_no_head_type. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url ). + + when_validate_form( ). + then_error_shd_occur( zcl_abapgit_gui_page_sett_remo=>c_id-head_type ). + + ENDMETHOD. + + + METHOD invalid_branch. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-head_type + iv_val = zcl_abapgit_gui_page_sett_remo=>c_head_types-branch + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-branch + iv_val = 'feature' ). + + when_validate_form( ). + then_error_shd_occur( zcl_abapgit_gui_page_sett_remo=>c_id-branch ). + + ENDMETHOD. + + + METHOD valid_branch. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-head_type + iv_val = zcl_abapgit_gui_page_sett_remo=>c_head_types-branch + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-branch + iv_val = 'main' ). + + when_validate_form( ). + then_no_error_shd_occur( ). + + ENDMETHOD. + + + METHOD invalid_tag. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-head_type + iv_val = zcl_abapgit_gui_page_sett_remo=>c_head_types-tag + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-tag + iv_val = 'inv_tag' ). + + when_validate_form( ). + then_error_shd_occur( zcl_abapgit_gui_page_sett_remo=>c_id-tag ). + + ENDMETHOD. + + + METHOD valid_tag. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-head_type + iv_val = zcl_abapgit_gui_page_sett_remo=>c_head_types-tag + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-tag + iv_val = 'v1.1.3' ). + + when_validate_form( ). + then_no_error_shd_occur( ). + + ENDMETHOD. + + + METHOD invalid_pull_request. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-head_type + iv_val = zcl_abapgit_gui_page_sett_remo=>c_head_types-pull_request + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-pull_request + iv_val = 'x@inv_pr' ). + + when_validate_form( ). + then_error_shd_occur( zcl_abapgit_gui_page_sett_remo=>c_id-pull_request ). + + ENDMETHOD. + + + METHOD valid_pull_request. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-head_type + iv_val = zcl_abapgit_gui_page_sett_remo=>c_head_types-pull_request + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-pull_request + iv_val = 'x@pr' ). + + when_validate_form( ). + then_no_error_shd_occur( ). + + ENDMETHOD. + + + METHOD invalid_commit. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-head_type + iv_val = zcl_abapgit_gui_page_sett_remo=>c_head_types-commit + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-commit + iv_val = 'ABCD1234' ). + + when_validate_form( ). + then_error_shd_occur( zcl_abapgit_gui_page_sett_remo=>c_id-commit ). + + ENDMETHOD. + + + METHOD valid_commit. + + mo_given_form_data->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-offline + iv_val = abap_false + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-url + iv_val = c_git_repo_url + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-head_type + iv_val = zcl_abapgit_gui_page_sett_remo=>c_head_types-commit + )->set( + iv_key = zcl_abapgit_gui_page_sett_remo=>c_id-commit + iv_val = '1d4abf5342a939202ae24ab4a5ad78da3cad24fb' ). + + when_validate_form( ). + then_no_error_shd_occur( ). + + ENDMETHOD. + + + METHOD when_validate_form. + + mo_act_validation_log = mo_cut->validate_form( mo_given_form_data ). + + ENDMETHOD. + + + METHOD then_no_error_shd_occur. + + cl_abap_unit_assert=>assert_equals( + exp = abap_true + act = mo_act_validation_log->is_empty( ) ). + + ENDMETHOD. + + + METHOD then_error_shd_occur. + + cl_abap_unit_assert=>assert_not_initial( mo_act_validation_log->get( iv_exp_error_key ) ). + + ENDMETHOD. + +ENDCLASS. diff --git a/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.xml b/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.xml index 1617b17d7..f6771f669 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.xml +++ b/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.xml @@ -10,6 +10,7 @@ X X X + X diff --git a/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap index a07e4ea39..0270b2c4a 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap @@ -300,7 +300,7 @@ CLASS zcl_abapgit_gui_page_tags IMPLEMENTATION. IF lv_new_tag_name IS NOT INITIAL. " Check if tag already exists - lt_tags = zcl_abapgit_git_transport=>branches( mo_repo->get_url( ) )->get_tags_only( ). + lt_tags = zcl_abapgit_git_factory=>get_git_transport( )->branches( mo_repo->get_url( ) )->get_tags_only( ). READ TABLE lt_tags TRANSPORTING NO FIELDS WITH TABLE KEY name_key COMPONENTS name = zcl_abapgit_git_tag=>add_tag_prefix( lv_new_tag_name ). diff --git a/src/ui/popups/zcl_abapgit_popup_branch_list.clas.abap b/src/ui/popups/zcl_abapgit_popup_branch_list.clas.abap index 4eef26a1a..7e6d5e8c3 100644 --- a/src/ui/popups/zcl_abapgit_popup_branch_list.clas.abap +++ b/src/ui/popups/zcl_abapgit_popup_branch_list.clas.abap @@ -75,7 +75,7 @@ CLASS zcl_abapgit_popup_branch_list IMPLEMENTATION. FIELD-SYMBOLS LIKE LINE OF rt_branches. - lo_branches = zcl_abapgit_git_transport=>branches( mv_repo_url ). + lo_branches = zcl_abapgit_git_factory=>get_git_transport( )->branches( mv_repo_url ). rt_branches = lo_branches->get_branches_only( ). lv_head_symref = lo_branches->get_head_symref( ). diff --git a/src/ui/popups/zcl_abapgit_popup_tag_list.clas.abap b/src/ui/popups/zcl_abapgit_popup_tag_list.clas.abap index 285a8d730..85ecdb296 100644 --- a/src/ui/popups/zcl_abapgit_popup_tag_list.clas.abap +++ b/src/ui/popups/zcl_abapgit_popup_tag_list.clas.abap @@ -61,7 +61,7 @@ CLASS zcl_abapgit_popup_tag_list IMPLEMENTATION. DATA lo_branches TYPE REF TO zcl_abapgit_git_branch_list. - lo_branches = zcl_abapgit_git_transport=>branches( mv_repo_url ). + lo_branches = zcl_abapgit_git_factory=>get_git_transport( )->branches( mv_repo_url ). rt_tags = lo_branches->get_tags_only( ). DELETE rt_tags WHERE name CP '*' && zif_abapgit_git_definitions=>c_git_branch-peel. diff --git a/src/ui/zcl_abapgit_popups.clas.abap b/src/ui/zcl_abapgit_popups.clas.abap index 2753fe512..3d150612f 100644 --- a/src/ui/zcl_abapgit_popups.clas.abap +++ b/src/ui/zcl_abapgit_popups.clas.abap @@ -180,7 +180,7 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. LIKE LINE OF lt_branches. - lo_branches = zcl_abapgit_git_transport=>branches( iv_url ). + lo_branches = zcl_abapgit_git_factory=>get_git_transport( )->branches( iv_url ). lt_branches = lo_branches->get_branches_only( ). lv_head_suffix = | ({ zif_abapgit_git_definitions=>c_head_name })|. lv_head_symref = lo_branches->get_head_symref( ). @@ -847,7 +847,7 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. LIKE LINE OF lt_tags. - lo_branches = zcl_abapgit_git_transport=>branches( iv_url ). + lo_branches = zcl_abapgit_git_factory=>get_git_transport( )->branches( iv_url ). lt_tags = lo_branches->get_tags_only( ). LOOP AT lt_tags ASSIGNING WHERE name NP '*' && zif_abapgit_git_definitions=>c_git_branch-peel. diff --git a/test/src/zcl_abapgit_integration_git.clas.testclasses.abap b/test/src/zcl_abapgit_integration_git.clas.testclasses.abap index bfe77b0e2..5c1bf1361 100644 --- a/test/src/zcl_abapgit_integration_git.clas.testclasses.abap +++ b/test/src/zcl_abapgit_integration_git.clas.testclasses.abap @@ -34,7 +34,7 @@ CLASS ltcl_test IMPLEMENTATION. CREATE OBJECT li_memory. zcl_abapgit_persist_injector=>set_settings( li_memory ). - lv_ref = zcl_abapgit_git_transport=>branches( lc_url )->get_head_symref( ). + lv_ref = zcl_abapgit_git_factory=>get_git_transport( )->branches( lc_url )->get_head_symref( ). cl_abap_unit_assert=>assert_equals( act = lv_ref