refactoring (#866)

* refactoring

* update

* refactoring

* update

* update

* update

* update

* refactoring

* update
This commit is contained in:
oblomov 2024-02-04 23:01:02 +01:00 committed by GitHub
parent 6a49cbc0da
commit 6d5ef37197
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 183 additions and 48 deletions

View File

@ -444,7 +444,6 @@ CLASS Z2UI5_CL_FW_HTTP_GET IMPLEMENTATION.
` sap.z2ui5.oBody.OLOCATION.SEARCH = sap.z2ui5.search;` && |\n| &&
` }` && |\n| &&
` let event = (args) => { if ( args != undefined ) { return args[ 0 ].EVENT; } };` && |\n| &&
* ` let args = (args) => { if ( args != undefined ) { if ( args.length > 1 ) { return args.shift(); } } };` && |\n| &&
` sap.z2ui5.oBody.S_FRONTEND = {` && |\n| &&
` ID: sap.z2ui5?.oBody?.ID,` && |\n| &&
` APP_START: sap.z2ui5?.oBody?.APP_START,` && |\n| &&
@ -458,7 +457,10 @@ CLASS Z2UI5_CL_FW_HTTP_GET IMPLEMENTATION.
` };` && |\n| &&
` if ( sap.z2ui5.oBody?.ARGUMENTS != undefined ) { if ( sap.z2ui5.oBody?.ARGUMENTS.length > 0 ) { sap.z2ui5.oBody?.ARGUMENTS.shift(); } }` && |\n| &&
` sap.z2ui5.oBody.S_FRONTEND.T_EVENT_ARG = sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
* ` debugger;` && |\n| &&
` delete sap.z2ui5.oBody.ID;` && |\n| &&
` delete sap.z2ui5.oBody?.OLOCATION;` && |\n| &&
` delete sap.z2ui5.oBody?.VIEWNAME;` && |\n| &&
` delete sap.z2ui5.oBody?.APP_START;` && |\n| &&
` sap.z2ui5.oController.readHttp();` && |\n| &&
` },` && |\n| &&
` })` && |\n| &&

View File

@ -1,4 +1,4 @@
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
CLASS ltcl_index_html_test DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
@ -6,20 +6,20 @@ CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
PROTECTED SECTION.
PRIVATE SECTION.
METHODS test_index_html FOR TESTING RAISING cx_static_check.
METHODS test_launchpad_compatibility FOR TESTING RAISING cx_static_check.
METHODS test_path FOR TESTING RAISING cx_static_check.
METHODS test_avoid_debugger FOR TESTING RAISING cx_static_check.
METHODS test_avoid_sap_ui_get_core FOR TESTING RAISING cx_static_check.
METHODS test_avoid_window FOR TESTING RAISING cx_static_check.
METHODS test_avoid_document FOR TESTING RAISING cx_static_check.
METHODS test_avoid_jquery FOR TESTING RAISING cx_static_check.
METHODS file_not_initial FOR TESTING RAISING cx_static_check.
METHODS launchpad_compatibility FOR TESTING RAISING cx_static_check.
METHODS path_setup FOR TESTING RAISING cx_static_check.
METHODS js_no_debugger FOR TESTING RAISING cx_static_check.
METHODS js_no_sap_ui_get_core FOR TESTING RAISING cx_static_check.
METHODS js_no_window FOR TESTING RAISING cx_static_check.
METHODS js_no_document FOR TESTING RAISING cx_static_check.
METHODS js_no_jquery FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_unit_test IMPLEMENTATION.
CLASS ltcl_index_html_test IMPLEMENTATION.
METHOD test_index_html.
METHOD file_not_initial.
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
DATA(lv_index_html) = lo_get->main( ).
@ -30,7 +30,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_launchpad_compatibility.
METHOD launchpad_compatibility.
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
DATA(lv_index_html) = lo_get->main( ).
@ -41,7 +41,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_path.
METHOD path_setup.
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
DATA(lv_index_html) = to_upper( lo_get->main( ) ).
@ -55,7 +55,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_avoid_debugger.
METHOD js_no_debugger.
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
DATA(lv_index_html) = to_upper( lo_get->main( ) ).
@ -65,7 +65,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_avoid_sap_ui_get_core.
METHOD js_no_sap_ui_get_core.
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
DATA(lv_index_html) = to_upper( lo_get->main( ) ) ##NEEDED.
@ -75,7 +75,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_avoid_jquery.
METHOD js_no_jquery.
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
DATA(lv_index_html) = to_upper( lo_get->main( ) ).
@ -85,7 +85,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_avoid_window.
METHOD js_no_window.
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
DATA(lv_index_html) = to_upper( lo_get->main( ) ) ##NEEDED.
@ -95,7 +95,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_avoid_document.
METHOD js_no_document.
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
DATA(lv_index_html) = to_upper( lo_get->main( ) ) ##NEEDED.

View File

@ -165,7 +165,9 @@ CLASS z2ui5_cl_fw_http_mapper IMPLEMENTATION.
z2ui5_cl_util_func=>url_param_get( val = `app_start` url = result-s_frontend-search ) ).
CATCH cx_root INTO DATA(x).
ASSERT x IS NOT BOUND.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = x.
ENDTRY.
ENDMETHOD.

View File

@ -0,0 +1,60 @@
CLASS ltcl_http_json_mapper_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS request_json_to_abap FOR TESTING RAISING cx_static_check.
METHODS model_front_to_back FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_http_json_mapper_test IMPLEMENTATION.
METHOD request_json_to_abap.
DATA(lv_payload) = `{"EDIT":{"NAME":"test"},"ARGUMENTS":[],"S_FRONTEND":{"ID":"ID_NR","EDIT":{"NAME":"test"},"ORIGIN":"ORIGIN","PATHNAME":"PATHNAME","SEARCH":"SEARCH"` &&
`,"VIEWNAME":"MAIN","EVENT":"BUTTON_POST","T_EVENT_ARG":[]}}`.
DATA(lo_mapper) = NEW z2ui5_cl_fw_http_mapper( ).
DATA(ls_result) = lo_mapper->request_json_to_abap( lv_payload ).
DATA(ls_exp) = VALUE z2ui5_if_client=>ty_s_http_request_post(
s_frontend = VALUE #(
id = `ID_NR`
viewname = `MAIN`
origin = `ORIGIN`
pathname = `PATHNAME`
search = `SEARCH`
event = `BUTTON_POST`
) ).
cl_abap_unit_assert=>assert_equals(
act = ls_result-s_frontend
exp = ls_exp-s_frontend ).
DATA lt_tree TYPE z2ui5_if_ajson_types=>ty_nodes_ts.
lt_tree = ls_result-o_model->mt_json_tree.
cl_abap_unit_assert=>assert_equals(
act = lt_tree[ name = `NAME` ]-value
exp = `test` ).
cl_abap_unit_assert=>assert_equals(
act = lines( lt_tree )
exp = 2 ).
ENDMETHOD.
METHOD model_front_to_back.
* NEW z2ui5_cl_fw_http_mapper( )->model_front_to_back(
* viewname = `MAIN`
* app = lo_ap
* t_attri = lt_attri
* model = lo_ajson ).
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,7 @@
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>

View File

@ -37,7 +37,7 @@ ENDCLASS.
CLASS Z2UI5_CL_FW_HTTP_POST IMPLEMENTATION.
CLASS z2ui5_cl_fw_http_post IMPLEMENTATION.
METHOD constructor.
@ -63,17 +63,21 @@ CLASS Z2UI5_CL_FW_HTTP_POST IMPLEMENTATION.
METHOD main_begin.
ms_request = mo_http_mapper->request_json_to_abap( mv_request_json ).
TRY.
ms_request = mo_http_mapper->request_json_to_abap( mv_request_json ).
IF ms_request-s_frontend-id IS NOT INITIAL.
mo_app = mo_app->factory_by_frontend( ).
ELSEIF ms_request-s_control-app_start IS NOT INITIAL.
mo_app = mo_app->factory_first_start( ).
ELSE.
mo_app = mo_app->factory_system_startup( ).
ENDIF.
CATCH cx_root INTO DATA(x).
mo_app = mo_app->factory_system_error( x ).
ENDTRY.
@ -91,12 +95,11 @@ CLASS Z2UI5_CL_FW_HTTP_POST IMPLEMENTATION.
ms_response-s_frontend-params = mo_app->ms_next-s_set.
ms_response-s_frontend-id = mo_app->ms_db-id.
result = mo_http_mapper->response_abap_to_json( ms_response ).
CATCH cx_root INTO DATA(x).
ASSERT x IS NOT BOUND.
ENDTRY.
result = mo_http_mapper->response_abap_to_json( ms_response ).
ENDMETHOD.

View File

@ -0,0 +1,35 @@
CLASS ltcl_post_handler_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS:
load_startup_app FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS z2ui5_cl_fw_http_post DEFINITION LOCAL FRIENDS ltcl_post_handler_test.
CLASS ltcl_post_handler_test IMPLEMENTATION.
METHOD load_startup_app.
DATA(lv_payload) = `{"S_FRONTEND":{"ORIGIN":"ORIGIN","PATHNAME":"PATHNAME","SEARCH":""}}`.
DATA(lo_post) = NEW z2ui5_cl_fw_http_post( lv_payload ).
lo_post->main_begin( ).
cl_abap_unit_assert=>assert_bound( lo_post->mo_app ).
cl_abap_unit_assert=>assert_equals(
act = lo_post->ms_request-s_frontend-origin
exp = `ORIGIN` ).
cl_abap_unit_assert=>assert_equals(
act = lo_post->ms_request-s_frontend-pathname
exp = `PATHNAME` ).
DATA(lo_startup) = CAST z2ui5_cl_fw_app_startup( lo_post->mo_app->ms_db-app ) ##NEEDED.
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,7 @@
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>

View File

@ -1,26 +1,27 @@
CLASS z2ui5_cl_fw_app_error DEFINITION
PUBLIC
FINAL
CREATE PROTECTED.
class Z2UI5_CL_FW_APP_ERROR definition
public
final
create protected .
PUBLIC SECTION.
public section.
INTERFACES z2ui5_if_app.
DATA mx_error TYPE REF TO cx_root .
interfaces Z2UI5_IF_APP .
interfaces IF_SERIALIZABLE_OBJECT .
CLASS-METHODS factory
IMPORTING
!error TYPE REF TO cx_root
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_app_error.
data MX_ERROR type ref to CX_ROOT .
class-methods FACTORY
importing
!ERROR type ref to CX_ROOT
returning
value(RESULT) type ref to Z2UI5_CL_FW_APP_ERROR .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_fw_app_error IMPLEMENTATION.
CLASS Z2UI5_CL_FW_APP_ERROR IMPLEMENTATION.
METHOD factory.
@ -30,6 +31,7 @@ CLASS z2ui5_cl_fw_app_error IMPLEMENTATION.
ENDMETHOD.
METHOD z2ui5_if_app~main.
DATA(lv_url) = shift_left( val = client->get( )-s_config-origin && client->get( )-s_config-pathname
@ -60,5 +62,4 @@ CLASS z2ui5_cl_fw_app_error IMPLEMENTATION.
client->view_display( view->_stringify( ) ).
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,20 @@
CLASS ltcl_app_error_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL DANGEROUS.
PRIVATE SECTION.
METHODS first_test FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_app_error_test IMPLEMENTATION.
METHOD first_test.
DATA(lx) = NEW z2ui5_cx_util_error( ).
DATA(lo_app) = z2ui5_cl_fw_app_error=>factory( lx ) ##NEEDED.
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,7 @@
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>

View File

@ -1,4 +1,4 @@
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
CLASS ltcl_app_startup_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL DANGEROUS.
@ -8,7 +8,7 @@ CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
ENDCLASS.
CLASS ltcl_unit_test IMPLEMENTATION.
CLASS ltcl_app_startup_test IMPLEMENTATION.
METHOD first_test.

View File

@ -6,19 +6,28 @@ CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
PROTECTED SECTION.
PRIVATE SECTION.
METHODS test_first_start FOR TESTING RAISING cx_static_check.
METHODS test_get FOR TESTING RAISING cx_static_check.
METHODS test_post FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_unit_test IMPLEMENTATION.
METHOD test_first_start.
METHOD test_get.
DATA(lv_index_html) = z2ui5_cl_http_handler=>http_get( ).
IF lv_index_html IS INITIAL.
DATA(lv_resp) = z2ui5_cl_http_handler=>http_get( ).
IF lv_resp IS INITIAL.
cl_abap_unit_assert=>fail( 'HTTP GET' ).
ENDIF.
ENDMETHOD.
METHOD test_post.
* DATA(lv_resp) = z2ui5_cl_http_handler=>http_post( value #( ) ).
* IF lv_resp IS INITIAL.
* cl_abap_unit_assert=>fail( 'HTTP POST' ).
* ENDIF.
ENDMETHOD.
ENDCLASS.