abapGit/src/json/zcl_abapgit_ajson_mapping.clas.testclasses.abap
2021-01-18 09:37:18 +01:00

270 lines
6.4 KiB
ABAP

CLASS ltcl_camel_case DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS:
to_abap FOR TESTING RAISING zcx_abapgit_ajson_error,
to_json FOR TESTING RAISING zcx_abapgit_ajson_error,
to_json_first_lower FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS.
CLASS ltcl_camel_case IMPLEMENTATION.
METHOD to_abap.
DATA:
lo_ajson TYPE REF TO zcl_abapgit_ajson,
li_mapping TYPE REF TO zif_abapgit_ajson_mapping.
DATA:
BEGIN OF ls_result,
field_data TYPE string,
END OF ls_result.
li_mapping = zcl_abapgit_ajson_mapping=>create_camel_case( ).
lo_ajson = zcl_abapgit_ajson=>parse( iv_json = '{"FieldData":"field_value"}'
ii_custom_mapping = li_mapping ).
lo_ajson->to_abap( IMPORTING ev_container = ls_result ).
cl_abap_unit_assert=>assert_equals(
act = ls_result-field_data
exp = 'field_value' ).
ENDMETHOD.
METHOD to_json.
DATA:
lo_ajson TYPE REF TO zcl_abapgit_ajson,
li_mapping TYPE REF TO zif_abapgit_ajson_mapping.
DATA:
BEGIN OF ls_result,
field_data TYPE string,
END OF ls_result.
li_mapping = zcl_abapgit_ajson_mapping=>create_camel_case( iv_first_json_upper = abap_false ).
ls_result-field_data = 'field_value'.
lo_ajson = zcl_abapgit_ajson=>create_empty( ii_custom_mapping = li_mapping ).
lo_ajson->set( iv_path = '/'
iv_val = ls_result ).
cl_abap_unit_assert=>assert_equals(
act = lo_ajson->stringify( )
exp = '{"fieldData":"field_value"}' ).
ENDMETHOD.
METHOD to_json_first_lower.
DATA:
lo_ajson TYPE REF TO zcl_abapgit_ajson,
li_mapping TYPE REF TO zif_abapgit_ajson_mapping.
DATA:
BEGIN OF ls_result,
field_data TYPE string,
END OF ls_result.
li_mapping = zcl_abapgit_ajson_mapping=>create_camel_case( ).
ls_result-field_data = 'field_value'.
lo_ajson = zcl_abapgit_ajson=>create_empty( ii_custom_mapping = li_mapping ).
lo_ajson->set( iv_path = '/'
iv_val = ls_result ).
cl_abap_unit_assert=>assert_equals(
act = lo_ajson->stringify( )
exp = '{"FieldData":"field_value"}' ).
ENDMETHOD.
ENDCLASS.
CLASS ltcl_fields DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS:
to_abap FOR TESTING RAISING zcx_abapgit_ajson_error,
to_json FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS.
CLASS ltcl_fields IMPLEMENTATION.
METHOD to_abap.
DATA:
lo_ajson TYPE REF TO zcl_abapgit_ajson,
li_mapping TYPE REF TO zif_abapgit_ajson_mapping,
lt_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields,
ls_mapping_field LIKE LINE OF lt_mapping_fields.
DATA:
BEGIN OF ls_result,
abap_field TYPE string,
field TYPE string,
END OF ls_result.
CLEAR ls_mapping_field.
ls_mapping_field-abap = 'ABAP_FIELD'.
ls_mapping_field-json = 'json.field'.
INSERT ls_mapping_field INTO TABLE lt_mapping_fields.
li_mapping = zcl_abapgit_ajson_mapping=>create_field_mapping( lt_mapping_fields ).
lo_ajson =
zcl_abapgit_ajson=>parse( iv_json = '{"field":"value","json.field":"field_value"}'
ii_custom_mapping = li_mapping ).
lo_ajson->to_abap( IMPORTING ev_container = ls_result ).
cl_abap_unit_assert=>assert_equals(
act = ls_result-abap_field
exp = 'field_value' ).
cl_abap_unit_assert=>assert_equals(
act = ls_result-field
exp = 'value' ).
ENDMETHOD.
METHOD to_json.
DATA:
lo_ajson TYPE REF TO zcl_abapgit_ajson,
li_mapping TYPE REF TO zif_abapgit_ajson_mapping,
lt_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields,
ls_mapping_field LIKE LINE OF lt_mapping_fields.
DATA:
BEGIN OF ls_result,
abap_field TYPE string,
field TYPE string,
END OF ls_result.
CLEAR ls_mapping_field.
ls_mapping_field-abap = 'ABAP_FIELD'.
ls_mapping_field-json = 'json.field'.
INSERT ls_mapping_field INTO TABLE lt_mapping_fields.
li_mapping = zcl_abapgit_ajson_mapping=>create_field_mapping( lt_mapping_fields ).
ls_result-abap_field = 'field_value'.
ls_result-field = 'value'.
lo_ajson = zcl_abapgit_ajson=>create_empty( ii_custom_mapping = li_mapping ).
lo_ajson->set( iv_path = '/'
iv_val = ls_result ).
cl_abap_unit_assert=>assert_equals(
act = lo_ajson->stringify( )
exp = '{"field":"value","json.field":"field_value"}' ).
ENDMETHOD.
ENDCLASS.
CLASS ltcl_to_lower DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS:
to_json FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS.
CLASS ltcl_to_lower IMPLEMENTATION.
METHOD to_json.
DATA:
lo_ajson TYPE REF TO zcl_abapgit_ajson,
li_mapping TYPE REF TO zif_abapgit_ajson_mapping.
DATA:
BEGIN OF ls_result,
field_data TYPE string,
END OF ls_result.
li_mapping = zcl_abapgit_ajson_mapping=>create_lower_case( ).
ls_result-field_data = 'field_value'.
lo_ajson = zcl_abapgit_ajson=>create_empty( ii_custom_mapping = li_mapping ).
lo_ajson->set( iv_path = '/'
iv_val = ls_result ).
cl_abap_unit_assert=>assert_equals(
act = lo_ajson->stringify( )
exp = '{"field_data":"field_value"}' ).
ENDMETHOD.
ENDCLASS.
CLASS ltcl_to_upper DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS:
to_json FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS.
CLASS ltcl_to_upper IMPLEMENTATION.
METHOD to_json.
DATA:
lo_ajson TYPE REF TO zcl_abapgit_ajson,
li_mapping TYPE REF TO zif_abapgit_ajson_mapping.
DATA:
BEGIN OF ls_result,
field_data TYPE string,
END OF ls_result.
li_mapping = zcl_abapgit_ajson_mapping=>create_upper_case( ).
ls_result-field_data = 'field_value'.
lo_ajson = zcl_abapgit_ajson=>create_empty( ii_custom_mapping = li_mapping ).
lo_ajson->set( iv_path = '/'
iv_val = ls_result ).
cl_abap_unit_assert=>assert_equals(
act = lo_ajson->stringify( )
exp = '{"FIELD_DATA":"field_value"}' ).
ENDMETHOD.
ENDCLASS.