From a3fd8d8ece9c2509f2092cd0d6a9fe872aae8f3b Mon Sep 17 00:00:00 2001 From: larshp Date: Tue, 14 Feb 2017 17:38:53 +0000 Subject: [PATCH] unit tests for existing logic --- src/zabapgit_dot_abapgit.prog.abap | 20 +++--- src/zabapgit_folder_logic.prog.abap | 104 ++++++++++++++++++++++++++++ src/zabapgit_sap_package.prog.abap | 11 +-- 3 files changed, 121 insertions(+), 14 deletions(-) diff --git a/src/zabapgit_dot_abapgit.prog.abap b/src/zabapgit_dot_abapgit.prog.abap index 71684faf5..f75b74d37 100644 --- a/src/zabapgit_dot_abapgit.prog.abap +++ b/src/zabapgit_dot_abapgit.prog.abap @@ -4,14 +4,14 @@ CLASS ltcl_dot_abapgit DEFINITION DEFERRED. -CONSTANTS: BEGIN OF c_folder_logic, - prefix TYPE string VALUE 'PREFIX', - full TYPE string VALUE 'FULL', - END OF c_folder_logic. - CLASS lcl_dot_abapgit DEFINITION CREATE PRIVATE FINAL FRIENDS ltcl_dot_abapgit. PUBLIC SECTION. + CONSTANTS: BEGIN OF c_folder_logic, + prefix TYPE string VALUE 'PREFIX', + full TYPE string VALUE 'FULL', + END OF c_folder_logic. + CLASS-METHODS: build_default IMPORTING iv_master_language TYPE spras @@ -39,8 +39,8 @@ CLASS lcl_dot_abapgit DEFINITION CREATE PRIVATE FINAL FRIENDS ltcl_dot_abapgit. RETURNING VALUE(rv_path) TYPE string, get_folder_logic RETURNING VALUE(rv_logic) TYPE string, -* set_starting_folder -* IMPORTING iv_path TYPE string, + set_starting_folder + IMPORTING iv_path TYPE string, get_master_language RETURNING VALUE(rv_language) TYPE spras, * set_master_language @@ -220,9 +220,9 @@ CLASS lcl_dot_abapgit IMPLEMENTATION. rv_logic = ms_data-folder_logic. ENDMETHOD. -* METHOD set_starting_folder. -* ms_data-starting_folder = iv_path. -* ENDMETHOD. + METHOD set_starting_folder. + ms_data-starting_folder = iv_path. + ENDMETHOD. METHOD get_master_language. rv_language = ms_data-master_language. diff --git a/src/zabapgit_folder_logic.prog.abap b/src/zabapgit_folder_logic.prog.abap index 0e7e1dd5f..a1a5557a9 100644 --- a/src/zabapgit_folder_logic.prog.abap +++ b/src/zabapgit_folder_logic.prog.abap @@ -92,3 +92,107 @@ CLASS lcl_folder_logic IMPLEMENTATION. ENDMETHOD. "class_to_path ENDCLASS. + +CLASS ltcl_folder_logic DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. + + PUBLIC SECTION. + INTERFACES: lif_sap_package. + + PRIVATE SECTION. + CONSTANTS: lc_top TYPE devclass VALUE '$TOP', + lc_src TYPE string VALUE '/src/'. + + METHODS: + setup, + teardown, + test_prefix + IMPORTING + iv_logic type string + iv_package TYPE devclass + iv_path TYPE string + RAISING lcx_exception, + prefix1 FOR TESTING RAISING lcx_exception, + prefix2 FOR TESTING RAISING lcx_exception. + +ENDCLASS. "ltcl_convert DEFINITION + +CLASS ltcl_folder_logic IMPLEMENTATION. + + METHOD lif_sap_package~list_subpackages. + ENDMETHOD. + + METHOD lif_sap_package~list_superpackages. + ENDMETHOD. + + METHOD lif_sap_package~read_parent. + rv_parentcl = '$TOP'. + ENDMETHOD. + + METHOD lif_sap_package~create_child. + ENDMETHOD. + + METHOD lif_sap_package~exists. + rv_bool = abap_true. + ENDMETHOD. + + METHOD setup. + FIELD-SYMBOLS: LIKE LINE OF lcl_sap_package=>gt_injected. + + CLEAR lcl_sap_package=>gt_injected. + + APPEND INITIAL LINE TO lcl_sap_package=>gt_injected ASSIGNING . + -package = '$TOP'. + -object = me. + + APPEND INITIAL LINE TO lcl_sap_package=>gt_injected ASSIGNING . + -package = '$TOP_FOO'. + -object = me. + ENDMETHOD. + + METHOD teardown. + CLEAR lcl_sap_package=>gt_injected. + ENDMETHOD. + + METHOD prefix1. + test_prefix( iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_package = lc_top + iv_path = lc_src ). + ENDMETHOD. + + METHOD prefix2. + test_prefix( iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_package = '$TOP_FOO' + iv_path = '/src/foo/' ). + ENDMETHOD. + + METHOD test_prefix. + + DATA: lv_path TYPE string, + lv_package TYPE devclass, + lo_dot TYPE REF TO lcl_dot_abapgit. + + + lo_dot = lcl_dot_abapgit=>build_default( sy-langu ). + lo_dot->set_starting_folder( lc_src ). + + lv_package = lcl_folder_logic=>path_to_package( + iv_top = lc_top + io_dot = lo_dot + iv_path = iv_path ). + + cl_abap_unit_assert=>assert_equals( + act = lv_package + exp = iv_package ). + + lv_path = lcl_folder_logic=>package_to_path( + iv_top = lc_top + io_dot = lo_dot + iv_package = iv_package ). + + cl_abap_unit_assert=>assert_equals( + act = lv_path + exp = iv_path ). + + ENDMETHOD. + +ENDCLASS. diff --git a/src/zabapgit_sap_package.prog.abap b/src/zabapgit_sap_package.prog.abap index 8b138bd0f..78d987071 100644 --- a/src/zabapgit_sap_package.prog.abap +++ b/src/zabapgit_sap_package.prog.abap @@ -21,12 +21,15 @@ INTERFACE lif_sap_package. ENDINTERFACE. +CLASS ltcl_folder_logic DEFINITION DEFERRED. + *----------------------------------------------------------------------* * CLASS lcl_package DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* -CLASS lcl_sap_package DEFINITION FINAL CREATE PRIVATE. +CLASS lcl_sap_package DEFINITION FINAL CREATE PRIVATE + FRIENDS ltcl_folder_logic. PUBLIC SECTION. CLASS-METHODS: @@ -69,9 +72,9 @@ CLASS lcl_sap_package IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF gt_injected. - - READ TABLE gt_injected ASSIGNING WITH KEY package = iv_package. - IF sy-subrc = 0. + IF lines( gt_injected ) > 0. + READ TABLE gt_injected ASSIGNING WITH KEY package = iv_package. + ASSERT sy-subrc = 0. " unit test should be in control ri_package = -object. ELSE. CREATE OBJECT ri_package TYPE lcl_sap_package