abapGit/src/objects/zcl_abapgit_objects_generic.clas.testclasses.abap
Marc Bernard ac8bde9f6c
Fix use of sy-langu in object serializers (#4807)
* Fix use of sy-langu in object serializers

- Replace sy-langu variable with mv_language
- Replace sy-langu type with langu (makes it easier to spot sy-langu)
- Enhance generic serializer to use mv_language
- Add unit tests to generic serializer 
- Adjust and simplify serializers that are based on generic class

Closes #2080

* Update scvi+ueno

* Revert scvi

* Langu

* Langu

* Langu

* Langu

* Langu

Co-authored-by: Lars Hvam <larshp@hotmail.com>
2021-06-01 13:02:42 +02:00

229 lines
6.2 KiB
ABAP

CLASS ltcl_test DEFINITION DEFERRED.
CLASS zcl_abapgit_objects_generic DEFINITION LOCAL FRIENDS ltcl_test.
CLASS ltcl_test DEFINITION FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS FINAL.
PRIVATE SECTION.
METHODS:
serialize FOR TESTING RAISING zcx_abapgit_exception,
get_primary_table FOR TESTING RAISING zcx_abapgit_exception,
get_key_fields FOR TESTING RAISING zcx_abapgit_exception,
get_where_clause FOR TESTING RAISING zcx_abapgit_exception,
distribute_name_to_components FOR TESTING RAISING zcx_abapgit_exception,
split_value_to_keys FOR TESTING RAISING zcx_abapgit_exception.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD serialize.
DATA: lo_cut TYPE REF TO zcl_abapgit_objects_generic,
li_xml TYPE REF TO zif_abapgit_xml_output,
ls_item TYPE zif_abapgit_definitions=>ty_item.
* assumption: this object exists in all SAP systems
ls_item-obj_type = 'ASFC'.
ls_item-obj_name = 'SAP_AS_TEST_001'.
CREATE OBJECT lo_cut
EXPORTING
is_item = ls_item.
CREATE OBJECT li_xml TYPE zcl_abapgit_xml_output.
lo_cut->serialize( li_xml ).
* checks that it does not dump
ENDMETHOD.
METHOD get_primary_table.
DATA: lo_cut TYPE REF TO zcl_abapgit_objects_generic,
ls_item TYPE zif_abapgit_definitions=>ty_item.
* assumption: this object exists in all SAP systems
ls_item-obj_type = 'ACGR'.
ls_item-obj_name = 'SAP_BC_BASIS_ADMIN'.
CREATE OBJECT lo_cut
EXPORTING
is_item = ls_item
iv_language = zif_abapgit_definitions=>c_english.
cl_abap_unit_assert=>assert_equals(
exp = 'AGR_DEFINE'
act = lo_cut->get_primary_table( ) ).
ENDMETHOD.
METHOD get_key_fields.
DATA: lo_cut TYPE REF TO zcl_abapgit_objects_generic,
ls_item TYPE zif_abapgit_definitions=>ty_item,
ls_keys TYPE dfies,
lt_key_fields TYPE ddfields.
* assumption: this object exists in all SAP systems
ls_item-obj_type = 'ACGR'.
ls_item-obj_name = 'SAP_BC_BASIS_ADMIN'.
CREATE OBJECT lo_cut
EXPORTING
is_item = ls_item
iv_language = zif_abapgit_definitions=>c_english.
lt_key_fields = lo_cut->get_key_fields( 'AGR_HIER' ).
cl_abap_unit_assert=>assert_equals(
exp = 3
act = lines( lt_key_fields ) ).
READ TABLE lt_key_fields INTO ls_keys INDEX 3.
cl_abap_unit_assert=>assert_equals(
exp = 'OBJECT_ID'
act = ls_keys-fieldname ).
ENDMETHOD.
METHOD get_where_clause.
DATA: lo_cut TYPE REF TO zcl_abapgit_objects_generic,
ls_item TYPE zif_abapgit_definitions=>ty_item.
* assumption: this object exists in all SAP systems
ls_item-obj_type = 'NSPC'.
ls_item-obj_name = '/BIC/'.
CREATE OBJECT lo_cut
EXPORTING
is_item = ls_item
iv_language = zif_abapgit_definitions=>c_english.
cl_abap_unit_assert=>assert_equals(
exp = `NAMESPACE = '/BIC/'`
act = lo_cut->get_where_clause( 'TRNSPACET' ) ).
cl_abap_unit_assert=>assert_equals(
exp = `NAMESPACE = '/BIC/' AND SPRAS = 'E'`
act = lo_cut->get_where_clause( 'TRNSPACETT' ) ).
ENDMETHOD.
METHOD distribute_name_to_components.
DATA: lo_cut TYPE REF TO zcl_abapgit_objects_generic,
ls_item TYPE zif_abapgit_definitions=>ty_item,
lt_objkey TYPE zcl_abapgit_objects_generic=>ty_t_objkey,
ls_objkey LIKE LINE OF lt_objkey,
lv_non_value_pos TYPE numc3,
lt_key_fields TYPE ddfields.
* assumption: this object exists in all SAP systems
ls_item-obj_type = 'WDCC'.
ls_item-obj_name = 'WDR_CHIP_TEST'.
ls_item-obj_name+32 = '09'.
ls_item-obj_name+34 = 'TEST'.
CREATE OBJECT lo_cut
EXPORTING
is_item = ls_item
iv_language = zif_abapgit_definitions=>c_english.
lt_key_fields = lo_cut->get_key_fields( 'WDY_CONFIG_DATA' ).
lv_non_value_pos = '001'.
ls_objkey-num = '001'.
ls_objkey-value = ls_item-obj_name.
lo_cut->distribute_name_to_components(
EXPORTING
it_key_component = lt_key_fields
CHANGING
ct_objkey = lt_objkey
cs_objkey = ls_objkey
cv_non_value_pos = lv_non_value_pos ).
cl_abap_unit_assert=>assert_equals(
exp = 3
act = lines( lt_objkey ) ).
READ TABLE lt_objkey INTO ls_objkey INDEX 2.
cl_abap_unit_assert=>assert_equals(
exp = '002'
act = ls_objkey-num ).
cl_abap_unit_assert=>assert_equals(
exp = '09'
act = ls_objkey-value ).
READ TABLE lt_objkey INTO ls_objkey INDEX 3.
cl_abap_unit_assert=>assert_equals(
exp = '003'
act = ls_objkey-num ).
cl_abap_unit_assert=>assert_equals(
exp = 'TEST'
act = ls_objkey-value ).
ENDMETHOD.
METHOD split_value_to_keys.
DATA: lo_cut TYPE REF TO zcl_abapgit_objects_generic,
ls_item TYPE zif_abapgit_definitions=>ty_item,
lt_objkey TYPE zcl_abapgit_objects_generic=>ty_t_objkey,
ls_objkey LIKE LINE OF lt_objkey,
lv_non_value_pos TYPE numc3,
lt_key_fields TYPE ddfields.
* assumption: this object exists in all SAP systems
ls_item-obj_type = 'ASFC'.
ls_item-obj_name = 'SAP_AS_TEST_002'.
CREATE OBJECT lo_cut
EXPORTING
is_item = ls_item
iv_language = zif_abapgit_definitions=>c_english.
lt_key_fields = lo_cut->get_key_fields( 'AIND_STR4' ).
ls_objkey-num = '001'.
ls_objkey-value = ls_item-obj_name.
APPEND ls_objkey TO lt_objkey.
lv_non_value_pos = '002'.
ls_objkey-num = '002'.
ls_objkey-value = 'S0099'.
lo_cut->split_value_to_keys(
EXPORTING
it_key_component = lt_key_fields
CHANGING
ct_objkey = lt_objkey
cs_objkey = ls_objkey
cv_non_value_pos = lv_non_value_pos ).
cl_abap_unit_assert=>assert_equals(
exp = 3
act = lines( lt_objkey ) ).
READ TABLE lt_objkey INTO ls_objkey INDEX 3.
cl_abap_unit_assert=>assert_equals(
exp = '003'
act = ls_objkey-num ).
cl_abap_unit_assert=>assert_equals(
exp = '0099'
act = ls_objkey-value ).
ENDMETHOD.
ENDCLASS.