diff --git a/src/persist/zcl_abapgit_persistence_user.clas.abap b/src/persist/zcl_abapgit_persistence_user.clas.abap index 43f793bed..6c037cfeb 100644 --- a/src/persist/zcl_abapgit_persistence_user.clas.abap +++ b/src/persist/zcl_abapgit_persistence_user.clas.abap @@ -4,18 +4,22 @@ CLASS zcl_abapgit_persistence_user DEFINITION PUBLIC SECTION. - INTERFACES zif_abapgit_persist_user. + INTERFACES zif_abapgit_persist_user . TYPES ty_favorites TYPE zif_abapgit_persistence=>ty_repo_keys . CLASS-METHODS get_instance IMPORTING - !iv_user TYPE xubname DEFAULT sy-uname + !iv_user TYPE sy-uname DEFAULT sy-uname RETURNING - VALUE(ri_user) TYPE REF TO zif_abapgit_persist_user . + VALUE(ri_user) TYPE REF TO zif_abapgit_persist_user + RAISING + zcx_abapgit_exception . METHODS constructor IMPORTING - !iv_user TYPE xubname DEFAULT sy-uname . + !iv_user TYPE sy-uname DEFAULT sy-uname + RAISING + zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. @@ -40,7 +44,8 @@ CLASS zcl_abapgit_persistence_user DEFINITION settings TYPE zif_abapgit_definitions=>ty_s_user_settings, END OF ty_user . - DATA mv_user TYPE xubname . + DATA mv_user TYPE sy-uname . + DATA ms_user TYPE ty_user. CLASS-DATA gi_current_user TYPE REF TO zif_abapgit_persist_user . METHODS from_xml @@ -51,8 +56,6 @@ CLASS zcl_abapgit_persistence_user DEFINITION RAISING zcx_abapgit_exception . METHODS read - RETURNING - VALUE(rs_user) TYPE ty_user RAISING zcx_abapgit_exception . METHODS read_repo_config @@ -68,8 +71,6 @@ CLASS zcl_abapgit_persistence_user DEFINITION RETURNING VALUE(rv_xml) TYPE string . METHODS update - IMPORTING - !is_user TYPE ty_user RAISING zcx_abapgit_exception . METHODS update_repo_config @@ -87,6 +88,7 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION. METHOD constructor. mv_user = iv_user. + read( ). ENDMETHOD. @@ -135,19 +137,13 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION. RETURN. ENDTRY. - rs_user = from_xml( lv_xml ). + ms_user = from_xml( lv_xml ). ENDMETHOD. METHOD read_repo_config. - DATA: lt_repo_config TYPE ty_repo_configs, - lv_key TYPE string. - - lv_key = to_lower( iv_url ). - lt_repo_config = read( )-repo_config. - READ TABLE lt_repo_config INTO rs_repo_config WITH KEY url = lv_key. - + READ TABLE ms_user-repo_config INTO rs_repo_config WITH KEY url = to_lower( iv_url ). ENDMETHOD. @@ -162,79 +158,76 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION. DATA: lv_xml TYPE string. - lv_xml = to_xml( is_user ). + lv_xml = to_xml( ms_user ). zcl_abapgit_persistence_db=>get_instance( )->modify( iv_type = zcl_abapgit_persistence_db=>c_type_user iv_value = mv_user iv_data = lv_xml ). + COMMIT WORK AND WAIT. + ENDMETHOD. METHOD update_repo_config. - DATA: ls_user TYPE ty_user, - lv_key TYPE string. + DATA: lv_key TYPE string. FIELD-SYMBOLS TYPE ty_repo_config. - - ls_user = read( ). lv_key = to_lower( iv_url ). - READ TABLE ls_user-repo_config ASSIGNING WITH KEY url = lv_key. + READ TABLE ms_user-repo_config ASSIGNING WITH KEY url = lv_key. IF sy-subrc IS NOT INITIAL. - APPEND INITIAL LINE TO ls_user-repo_config ASSIGNING . + APPEND INITIAL LINE TO ms_user-repo_config ASSIGNING . ENDIF. = is_repo_config. -url = lv_key. - update( ls_user ). - - COMMIT WORK AND WAIT. + update( ). ENDMETHOD. METHOD zif_abapgit_persist_user~get_changes_only. - rv_changes_only = read( )-changes_only. + rv_changes_only = ms_user-changes_only. ENDMETHOD. METHOD zif_abapgit_persist_user~get_default_git_user_email. - rv_email = read( )-default_git_user-email. + rv_email = ms_user-default_git_user-email. ENDMETHOD. METHOD zif_abapgit_persist_user~get_default_git_user_name. - rv_username = read( )-default_git_user-name. + rv_username = ms_user-default_git_user-name. ENDMETHOD. METHOD zif_abapgit_persist_user~get_diff_unified. - rv_diff_unified = read( )-diff_unified. + rv_diff_unified = ms_user-diff_unified. ENDMETHOD. METHOD zif_abapgit_persist_user~get_favorites. - rt_favorites = read( )-favorites. + rt_favorites = ms_user-favorites. ENDMETHOD. METHOD zif_abapgit_persist_user~get_hide_files. - rv_hide = read( )-hide_files. + rv_hide = ms_user-hide_files. ENDMETHOD. @@ -271,7 +264,7 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION. DATA lo_repo TYPE REF TO zcl_abapgit_repo. - rv_key = read( )-repo_show. + rv_key = ms_user-repo_show. " Check if repo exists TRY. @@ -287,22 +280,14 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION. METHOD zif_abapgit_persist_user~get_settings. - DATA: ls_user TYPE ty_user. - - ls_user = read( ). - - rs_user_settings = ls_user-settings. + rs_user_settings = ms_user-settings. ENDMETHOD. METHOD zif_abapgit_persist_user~is_favorite_repo. - DATA: lt_favorites TYPE ty_favorites. - - lt_favorites = zif_abapgit_persist_user~get_favorites( ). - - READ TABLE lt_favorites TRANSPORTING NO FIELDS + READ TABLE ms_user-favorites TRANSPORTING NO FIELDS WITH KEY table_line = iv_repo_key. rv_yes = boolc( sy-subrc = 0 ). @@ -312,26 +297,16 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION. METHOD zif_abapgit_persist_user~set_default_git_user_email. - DATA: ls_user TYPE ty_user. - - - ls_user = read( ). - ls_user-default_git_user-email = iv_email. - update( ls_user ). + ms_user-default_git_user-email = iv_email. + update( ). ENDMETHOD. METHOD zif_abapgit_persist_user~set_default_git_user_name. - DATA: ls_user TYPE ty_user. - - - ls_user = read( ). - - ls_user-default_git_user-name = iv_username. - - update( ls_user ). + ms_user-default_git_user-name = iv_username. + update( ). ENDMETHOD. @@ -386,86 +361,62 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION. METHOD zif_abapgit_persist_user~set_repo_show. - DATA: ls_user TYPE ty_user. - - - ls_user = read( ). - ls_user-repo_show = iv_key. - update( ls_user ). - - COMMIT WORK AND WAIT. + ms_user-repo_show = iv_key. + update( ). ENDMETHOD. METHOD zif_abapgit_persist_user~set_settings. - DATA: ls_user TYPE ty_user. - - ls_user = read( ). - ls_user-settings = is_user_settings. - update( ls_user ). + ms_user-settings = is_user_settings. + update( ). ENDMETHOD. METHOD zif_abapgit_persist_user~toggle_changes_only. - DATA ls_user TYPE ty_user. + ms_user-changes_only = boolc( ms_user-changes_only = abap_false ). + update( ). - ls_user = read( ). - ls_user-changes_only = boolc( ls_user-changes_only = abap_false ). - update( ls_user ). - - rv_changes_only = ls_user-changes_only. + rv_changes_only = ms_user-changes_only. ENDMETHOD. METHOD zif_abapgit_persist_user~toggle_diff_unified. - DATA ls_user TYPE ty_user. + ms_user-diff_unified = boolc( ms_user-diff_unified = abap_false ). + update( ). - ls_user = read( ). - ls_user-diff_unified = boolc( ls_user-diff_unified = abap_false ). - update( ls_user ). - - rv_diff_unified = ls_user-diff_unified. + rv_diff_unified = ms_user-diff_unified. ENDMETHOD. METHOD zif_abapgit_persist_user~toggle_favorite. - DATA: ls_user TYPE ty_user. - - ls_user = read( ). - - READ TABLE ls_user-favorites TRANSPORTING NO FIELDS + READ TABLE ms_user-favorites TRANSPORTING NO FIELDS WITH KEY table_line = iv_repo_key. IF sy-subrc = 0. - DELETE ls_user-favorites INDEX sy-tabix. + DELETE ms_user-favorites INDEX sy-tabix. ELSE. - APPEND iv_repo_key TO ls_user-favorites. + APPEND iv_repo_key TO ms_user-favorites. ENDIF. - update( ls_user ). - - COMMIT WORK AND WAIT. + update( ). ENDMETHOD. METHOD zif_abapgit_persist_user~toggle_hide_files. - DATA ls_user TYPE ty_user. + ms_user-hide_files = boolc( ms_user-hide_files = abap_false ). + update( ). - ls_user = read( ). - ls_user-hide_files = boolc( ls_user-hide_files = abap_false ). - update( ls_user ). - - rv_hide = ls_user-hide_files. + rv_hide = ms_user-hide_files. ENDMETHOD. ENDCLASS. diff --git a/src/persist/zcl_abapgit_persistence_user.clas.testclasses.abap b/src/persist/zcl_abapgit_persistence_user.clas.testclasses.abap new file mode 100644 index 000000000..a83e5198f --- /dev/null +++ b/src/persist/zcl_abapgit_persistence_user.clas.testclasses.abap @@ -0,0 +1,109 @@ +CLASS ltcl_user DEFINITION + FOR TESTING + RISK LEVEL CRITICAL + DURATION SHORT FINAL. + + PRIVATE SECTION. + CONSTANTS: + c_abap_user TYPE sy-uname VALUE 'ABAPGIT_TEST', + c_git_user TYPE string VALUE 'abapgit_tester', + c_repo_key TYPE zif_abapgit_persistence=>ty_repo-key VALUE '000000000001', + c_repo_url TYPE string VALUE 'https://github.com/abapGit/abapGit'. + + DATA: + mi_user TYPE REF TO zif_abapgit_persist_user. + + METHODS: + set_get_git_user FOR TESTING RAISING zcx_abapgit_exception, + set_get_repo_show FOR TESTING RAISING zcx_abapgit_exception, + set_get_settings FOR TESTING RAISING zcx_abapgit_exception, + set_get_repo_login FOR TESTING RAISING zcx_abapgit_exception, + teardown RAISING zcx_abapgit_exception. + +ENDCLASS. + +CLASS ltcl_user IMPLEMENTATION. + + METHOD set_get_git_user. + + DATA: lv_user TYPE string. + + mi_user = zcl_abapgit_persistence_user=>get_instance( c_abap_user ). + mi_user->set_default_git_user_name( c_git_user ). + + FREE mi_user. + + mi_user = zcl_abapgit_persistence_user=>get_instance( c_abap_user ). + lv_user = mi_user->get_default_git_user_name( ). + + cl_abap_unit_assert=>assert_equals( + act = lv_user + exp = c_git_user ). + + ENDMETHOD. + + METHOD set_get_repo_show. + + DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key. + + mi_user = zcl_abapgit_persistence_user=>get_instance( c_abap_user ). + mi_user->set_repo_show( c_repo_key ). + + FREE mi_user. + + mi_user = zcl_abapgit_persistence_user=>get_instance( c_abap_user ). + lv_key = mi_user->get_repo_show( ). + + cl_abap_unit_assert=>assert_equals( + act = lv_key + exp = c_repo_key ). + + ENDMETHOD. + + METHOD set_get_repo_login. + + DATA: lv_login TYPE string. + + mi_user = zcl_abapgit_persistence_user=>get_instance( c_abap_user ). + mi_user->set_repo_login( iv_url = c_repo_url + iv_login = c_git_user ). + + FREE mi_user. + + mi_user = zcl_abapgit_persistence_user=>get_instance( c_abap_user ). + lv_login = mi_user->get_repo_login( c_repo_url ). + + cl_abap_unit_assert=>assert_equals( + act = lv_login + exp = c_git_user ). + + ENDMETHOD. + + METHOD set_get_settings. + + DATA: ls_settings TYPE zif_abapgit_definitions=>ty_s_user_settings. + + ls_settings-show_default_repo = abap_true. + + mi_user = zcl_abapgit_persistence_user=>get_instance( c_abap_user ). + mi_user->set_settings( ls_settings ). + + FREE mi_user. + + mi_user = zcl_abapgit_persistence_user=>get_instance( c_abap_user ). + ls_settings = mi_user->get_settings( ). + + cl_abap_unit_assert=>assert_equals( + act = ls_settings-show_default_repo + exp = abap_true ). + + ENDMETHOD. + + METHOD teardown. + " Delete test user settings + zcl_abapgit_persistence_db=>get_instance( )->delete( + iv_type = zcl_abapgit_persistence_db=>c_type_user + iv_value = c_abap_user ). + CALL FUNCTION 'DB_COMMIT'. + ENDMETHOD. +ENDCLASS. diff --git a/src/persist/zcl_abapgit_persistence_user.clas.xml b/src/persist/zcl_abapgit_persistence_user.clas.xml index f7642f64c..54a52d8ae 100644 --- a/src/persist/zcl_abapgit_persistence_user.clas.xml +++ b/src/persist/zcl_abapgit_persistence_user.clas.xml @@ -10,6 +10,7 @@ X X X + X