refactoring (#704)

* refactoring

* unit tests

* update

* unit test deactivate
This commit is contained in:
oblomov 2023-12-04 19:28:01 +01:00 committed by GitHub
parent df5b9e2226
commit 574802e9a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 292 additions and 225 deletions

View File

@ -74,29 +74,13 @@ CLASS z2ui5_cl_fw_handler DEFINITION
RETURNING RETURNING
VALUE(result) TYPE string. VALUE(result) TYPE string.
CLASS-METHODS set_app_start CLASS-METHODS body_read_location.
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
CLASS-METHODS set_app_client CLASS-METHODS _get_id
IMPORTING
id_prev TYPE clike
RETURNING RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler. VALUE(result) TYPE string.
METHODS set_app_leave CLASS-METHODS app_system_factory
IMPORTING
check_no_db_save TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
METHODS set_app_call
IMPORTING
check_no_db_save TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
CLASS-METHODS set_app_system
IMPORTING IMPORTING
VALUE(ix) TYPE REF TO cx_root OPTIONAL VALUE(ix) TYPE REF TO cx_root OPTIONAL
error_text TYPE string OPTIONAL error_text TYPE string OPTIONAL
@ -104,22 +88,59 @@ CLASS z2ui5_cl_fw_handler DEFINITION
RETURNING RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler. VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
METHODS app_set_next METHODS app_next_factory
IMPORTING IMPORTING
app TYPE REF TO z2ui5_if_app app TYPE REF TO z2ui5_if_app
RETURNING RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_fw_handler. VALUE(r_result) TYPE REF TO z2ui5_cl_fw_handler.
METHODS app_client_begin_event.
METHODS app_client_begin_model.
CLASS-METHODS app_start_factory
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
CLASS-METHODS app_client_begin_factory
IMPORTING
id_prev TYPE clike
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
METHODS app_leave_factory
IMPORTING
check_no_db_save TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
METHODS app_call_factory
IMPORTING
check_no_db_save TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
METHODS app_client_end_model
RETURNING
VALUE(rv_viewmodel) TYPE string.
METHODS app_client_end_response
IMPORTING
iv_viewmodel TYPE string
RETURNING
VALUE(r_result) TYPE string.
METHODS app_client_end_db.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
ENDCLASS. ENDCLASS.
CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION. CLASS z2ui5_cl_fw_handler IMPLEMENTATION.
METHOD app_set_next. METHOD app_next_factory.
app->id = COND #( WHEN app->id IS INITIAL THEN z2ui5_cl_util_func=>func_get_uuid_32( ) ELSE app->id ). app->id = COND #( WHEN app->id IS INITIAL THEN z2ui5_cl_util_func=>func_get_uuid_32( ) ELSE app->id ).
@ -141,13 +162,50 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD request_begin. METHOD app_client_begin_event.
so_body = z2ui5_cl_util_tree_json=>factory( body ). TRY.
FIELD-SYMBOLS <any> TYPE any.
ASSIGN (`SO_BODY->MR_ACTUAL`) TO <any>.
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
ASSIGN (`<ANY>->ARGUMENTS`) TO <any>.
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
ASSIGN (`<ANY>->*`) TO <any>.
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
FIELD-SYMBOLS <arg> TYPE STANDARD TABLE.
ASSIGN <any> TO <arg>.
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
FIELD-SYMBOLS <arg_row> TYPE any.
LOOP AT <arg> ASSIGNING <arg_row>.
IF sy-tabix = 1.
FIELD-SYMBOLS <val> TYPE any.
ASSIGN (`<ARG_ROW>->EVENT->*`) TO <val>.
ms_actual-event = <val>.
ELSE.
ASSIGN <arg_row>->* TO <val>.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
INSERT CONV string( <val> ) INTO TABLE ms_actual-t_event_arg.
ENDIF.
ENDLOOP.
CATCH cx_root.
ENDTRY.
ENDMETHOD.
METHOD body_read_location.
TRY. TRY.
DATA(location) = so_body->get_attribute( `OLOCATION` ). DATA(location) = so_body->get_attribute( `OLOCATION` ).
ss_config-body = body. CATCH cx_root.
ENDTRY.
TRY. TRY.
ss_config-search = location->get_attribute( `SEARCH` )->get_val( ). ss_config-search = location->get_attribute( `SEARCH` )->get_val( ).
@ -197,58 +255,29 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
CATCH cx_root. CATCH cx_root.
ENDTRY. ENDTRY.
CATCH cx_root. ENDMETHOD.
ENDTRY.
METHOD request_begin.
ss_config-body = body.
so_body = z2ui5_cl_util_tree_json=>factory( ss_config-body ).
ss_config-view_model_edit_name = z2ui5_cl_fw_binding=>cv_model_edit_name. ss_config-view_model_edit_name = z2ui5_cl_fw_binding=>cv_model_edit_name.
body_read_location( ).
DATA(lv_id_prev) = _get_id( ).
TRY.
DATA(lv_id_prev) = so_body->get_attribute( `ID` )->get_val( ).
CATCH cx_root.
ENDTRY.
IF lv_id_prev IS INITIAL. IF lv_id_prev IS INITIAL.
result = set_app_start( ). result = app_start_factory( ).
result->ms_actual-check_on_navigated = abap_true. result->ms_actual-check_on_navigated = abap_true.
ELSE. ELSE.
result = set_app_client( lv_id_prev ). result = app_client_begin_factory( lv_id_prev ).
result->app_client_begin_model( ).
result->app_client_begin_event( ).
result->ms_actual-check_on_navigated = abap_false. result->ms_actual-check_on_navigated = abap_false.
ENDIF. ENDIF.
result->ms_db-check_attri = abap_false. result->ms_db-check_attri = abap_false.
TRY.
FIELD-SYMBOLS <any> TYPE any.
ASSIGN (`SO_BODY->MR_ACTUAL`) TO <any>.
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
ASSIGN (`<ANY>->ARGUMENTS`) TO <any>.
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
ASSIGN (`<ANY>->*`) TO <any>.
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
FIELD-SYMBOLS <arg> TYPE STANDARD TABLE.
ASSIGN <any> TO <arg>.
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
FIELD-SYMBOLS <arg_row> TYPE any.
LOOP AT <arg> ASSIGNING <arg_row>.
IF sy-tabix = 1.
FIELD-SYMBOLS <val> TYPE any.
ASSIGN (`<ARG_ROW>->EVENT->*`) TO <val>.
result->ms_actual-event = <val>.
ELSE.
ASSIGN <arg_row>->* TO <val>.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
INSERT CONV string( <val> ) INTO TABLE result->ms_actual-t_event_arg.
ENDIF.
ENDLOOP.
CATCH cx_root.
ENDTRY.
IF ss_config-search CS `scenario=LAUNCHPAD`. IF ss_config-search CS `scenario=LAUNCHPAD`.
result->ms_actual-check_launchpad_active = abap_true. result->ms_actual-check_launchpad_active = abap_true.
ENDIF. ENDIF.
@ -258,35 +287,16 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
METHOD request_end. METHOD request_end.
DATA(lo_resp) = z2ui5_cl_util_tree_json=>factory( ). DATA(lv_viewmodel) = app_client_end_model( ).
result = app_client_end_response( lv_viewmodel ).
DATA(lo_binder) = z2ui5_cl_fw_model=>factory( app_client_end_db( ).
viewname = ms_actual-viewname
app = ms_db-app
attri = ms_db-t_attri ).
DATA(lv_viewmodel) = lo_binder->main_set_frontend( ).
lo_resp->add_attribute( n = `OVIEWMODEL`
v = lv_viewmodel
apos_active = abap_false ).
lo_resp->add_attribute( n = `PARAMS`
v = z2ui5_cl_util_func=>trans_json_any_2( ms_next-s_set )
apos_active = abap_false ).
lo_resp->add_attribute( n = `ID`
v = ms_db-id ).
result = lo_resp->mo_root->stringify( ).
z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
ENDMETHOD. ENDMETHOD.
METHOD set_app_call. METHOD app_call_factory.
result = app_set_next( ms_next-o_app_call ). result = app_next_factory( ms_next-o_app_call ).
result->ms_db-id_prev_app_stack = ms_db-id. result->ms_db-id_prev_app_stack = ms_db-id.
CLEAR ms_next. CLEAR ms_next.
@ -299,7 +309,7 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD set_app_client. METHOD app_client_begin_factory.
result = NEW #( ). result = NEW #( ).
result->ms_db = z2ui5_cl_fw_db=>load_app( id_prev ). result->ms_db = z2ui5_cl_fw_db=>load_app( id_prev ).
@ -311,24 +321,12 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
CATCH cx_root. CATCH cx_root.
ENDTRY. ENDTRY.
TRY.
DATA(lo_model) = z2ui5_cl_fw_model=>factory(
viewname = result->ms_actual-viewname
app = result->ms_db-app
attri = result->ms_db-t_attri ).
lo_model->main_set_backend(
so_body->get_attribute( ss_config-view_model_edit_name )->mr_actual ).
CATCH cx_root.
ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD set_app_leave. METHOD app_leave_factory.
result = app_set_next( ms_next-o_app_leave ). result = app_next_factory( ms_next-o_app_leave ).
TRY. TRY.
DATA(ls_draft) = z2ui5_cl_fw_db=>read( id = result->ms_db-id check_load_app = abap_false ). DATA(ls_draft) = z2ui5_cl_fw_db=>read( id = result->ms_db-id check_load_app = abap_false ).
@ -342,12 +340,10 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ). z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
ENDIF. ENDIF.
* CLEAR result->ms_db-t_attri.
ENDMETHOD. ENDMETHOD.
METHOD set_app_start. METHOD app_start_factory.
TRY. TRY.
DATA(lv_classname) = to_upper( so_body->get_attribute( `APP_START` )->get_val( ) ). DATA(lv_classname) = to_upper( so_body->get_attribute( `APP_START` )->get_val( ) ).
@ -363,7 +359,7 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
ENDIF. ENDIF.
IF lv_classname IS INITIAL. IF lv_classname IS INITIAL.
result = set_app_system( ). result = app_system_factory( ).
RETURN. RETURN.
ENDIF. ENDIF.
@ -376,13 +372,13 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
result->ms_db-app->id = result->ms_db-id. result->ms_db-app->id = result->ms_db-id.
CATCH cx_root. CATCH cx_root.
result = set_app_system( error_text = `App with name ` && lv_classname && ` not found...` ). result = app_system_factory( error_text = `App with name ` && lv_classname && ` not found...` ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD set_app_system. METHOD app_system_factory.
result = NEW #( ). result = NEW #( ).
result->ms_db-id = z2ui5_cl_util_func=>func_get_uuid_32( ). result->ms_db-id = z2ui5_cl_util_func=>func_get_uuid_32( ).
@ -393,7 +389,7 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
IF ix IS BOUND. IF ix IS BOUND.
result->ms_next-o_app_call = z2ui5_cl_fw_app_error=>factory( ix ). result->ms_next-o_app_call = z2ui5_cl_fw_app_error=>factory( ix ).
result = result->set_app_call( abap_true ). result = result->app_call_factory( abap_true ).
RETURN. RETURN.
ENDIF. ENDIF.
@ -401,4 +397,70 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
result->ms_db-app->id = result->ms_db-id. result->ms_db-app->id = result->ms_db-id.
ENDMETHOD. ENDMETHOD.
METHOD app_client_begin_model.
TRY.
DATA(lo_model) = z2ui5_cl_fw_model=>factory(
viewname = ms_actual-viewname
app = ms_db-app
attri = ms_db-t_attri ).
lo_model->main_set_backend(
so_body->get_attribute( ss_config-view_model_edit_name )->mr_actual ).
CATCH cx_root.
ENDTRY.
ENDMETHOD.
METHOD _get_id.
TRY.
result = so_body->get_attribute( `ID` )->get_val( ).
CATCH cx_root.
ENDTRY.
ENDMETHOD.
METHOD app_client_end_model.
DATA(lo_binder) = z2ui5_cl_fw_model=>factory(
viewname = ms_actual-viewname
app = ms_db-app
attri = ms_db-t_attri ).
rv_viewmodel = lo_binder->main_set_frontend( ).
ENDMETHOD.
METHOD app_client_end_response.
DATA(lo_resp) = z2ui5_cl_util_tree_json=>factory( ).
lo_resp->add_attribute( n = `OVIEWMODEL`
v = iv_viewmodel
apos_active = abap_false ).
lo_resp->add_attribute( n = `PARAMS`
v = z2ui5_cl_util_func=>trans_json_any_2( ms_next-s_set )
apos_active = abap_false ).
lo_resp->add_attribute( n = `ID`
v = ms_db-id ).
r_result = lo_resp->mo_root->stringify( ).
ENDMETHOD.
METHOD app_client_end_db.
z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -547,7 +547,7 @@ CLASS z2ui5_cl_fw_http_handler IMPLEMENTATION.
TRY. TRY.
DATA(lo_handler) = z2ui5_cl_fw_handler=>request_begin( body ). DATA(lo_handler) = z2ui5_cl_fw_handler=>request_begin( body ).
CATCH cx_root INTO DATA(x). CATCH cx_root INTO DATA(x).
lo_handler = z2ui5_cl_fw_handler=>set_app_system( x ). lo_handler = z2ui5_cl_fw_handler=>app_system_factory( x ).
ENDTRY. ENDTRY.
DO. DO.
@ -558,19 +558,19 @@ CLASS z2ui5_cl_fw_http_handler IMPLEMENTATION.
ROLLBACK WORK. ROLLBACK WORK.
IF lo_handler->ms_next-o_app_leave IS NOT INITIAL. IF lo_handler->ms_next-o_app_leave IS NOT INITIAL.
lo_handler = lo_handler->set_app_leave( ). lo_handler = lo_handler->app_leave_factory( ).
CONTINUE. CONTINUE.
ENDIF. ENDIF.
IF lo_handler->ms_next-o_app_call IS NOT INITIAL. IF lo_handler->ms_next-o_app_call IS NOT INITIAL.
lo_handler = lo_handler->set_app_call( ). lo_handler = lo_handler->app_call_factory( ).
CONTINUE. CONTINUE.
ENDIF. ENDIF.
result = lo_handler->request_end( ). result = lo_handler->request_end( ).
CATCH cx_root INTO x. CATCH cx_root INTO x.
lo_handler = z2ui5_cl_fw_handler=>set_app_system( x ). lo_handler = z2ui5_cl_fw_handler=>app_system_factory( x ).
CONTINUE. CONTINUE.
ENDTRY. ENDTRY.

View File

@ -23,7 +23,7 @@ CLASS z2ui5_cl_cc__factory_fw IMPLEMENTATION.
z2ui5_cl_cc_title=>get_js( ) && z2ui5_cl_cc_title=>get_js( ) &&
z2ui5_cl_cc_history=>get_js( ) && z2ui5_cl_cc_history=>get_js( ) &&
z2ui5_cl_cc_scrolling=>get_js( ) && z2ui5_cl_cc_scrolling=>get_js( ) &&
z2ui5_cl_cc_info=>get_js( ) && z2ui5_cl_cc_info_frontend=>get_js( ) &&
z2ui5_cl_cc_geolocation=>get_js( ) && z2ui5_cl_cc_geolocation=>get_js( ) &&
z2ui5_cl_cc_file_uploader=>get_js( ) && z2ui5_cl_cc_file_uploader=>get_js( ) &&
z2ui5_cl_cc_messaging=>get_js( ). z2ui5_cl_cc_messaging=>get_js( ).

View File

@ -1,4 +1,4 @@
CLASS z2ui5_cl_cc_info DEFINITION CLASS z2ui5_cl_cc_info_frontend DEFINITION
PUBLIC PUBLIC
FINAL FINAL
CREATE PUBLIC . CREATE PUBLIC .
@ -15,7 +15,7 @@ ENDCLASS.
CLASS Z2UI5_CL_CC_INFO IMPLEMENTATION. CLASS Z2UI5_CL_CC_INFO_FRONTEND IMPLEMENTATION.
METHOD get_js. METHOD get_js.

View File

@ -3,7 +3,7 @@
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values> <asx:values>
<VSEOCLASS> <VSEOCLASS>
<CLSNAME>Z2UI5_CL_CC_INFO</CLSNAME> <CLSNAME>Z2UI5_CL_CC_INFO_FRONTEND</CLSNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>cc - frontend info</DESCRIPT> <DESCRIPT>cc - frontend info</DESCRIPT>
<STATE>1</STATE> <STATE>1</STATE>

View File

@ -15,7 +15,7 @@ ENDCLASS.
CLASS z2ui5_cl_cc_camera_picture IMPLEMENTATION. CLASS Z2UI5_CL_CC_CAMERA_PICTURE IMPLEMENTATION.
METHOD get_js. METHOD get_js.
@ -100,11 +100,10 @@ CLASS z2ui5_cl_cc_camera_picture IMPLEMENTATION.
` var video = document.querySelector('#zvideo');` && |\n| && ` var video = document.querySelector('#zvideo');` && |\n| &&
` if (navigator.mediaDevices.getUserMedia) {` && |\n| && ` if (navigator.mediaDevices.getUserMedia) {` && |\n| &&
` navigator.mediaDevices.getUserMedia({video: { facingMode: { exact: "environment" } } })` && |\n| && ` navigator.mediaDevices.getUserMedia({video: { facingMode: { exact: "environment" } } })` && |\n| &&
` // navigator.mediaDevices.enumerateDevices({ video: true })` && |\n| &&
` .then(function (stream) {` && |\n| && ` .then(function (stream) {` && |\n| &&
` debugger; video.srcObject = stream;` && |\n| && ` video.srcObject = stream;` && |\n| &&
` })` && |\n| && ` })` && |\n| &&
` .catch(function (err0r) {` && |\n| && ` .catch(function (error) {` && |\n| &&
` console.log("Something went wrong!");` && |\n| && ` console.log("Something went wrong!");` && |\n| &&
` });` && |\n| && ` });` && |\n| &&
` }` && |\n| && ` }` && |\n| &&

View File

@ -254,81 +254,87 @@ CLASS ltcl_integration_test IMPLEMENTATION.
METHOD test_app_change_value. METHOD test_app_change_value.
DATA(lv_response) = z2ui5_cl_fw_http_handler=>http_post( `{ "OLOCATION" : { "SEARCH" : "app_start=z2ui5_cl_test_integration_test"}}` ). * DATA(lv_response) = z2ui5_cl_fw_http_handler=>http_post( `{ "OLOCATION" : { "SEARCH" : "app_start=z2ui5_cl_test_integration_test"}}` ).
*
* DATA lo_data TYPE REF TO data.
* /ui2/cl_json=>deserialize(
* EXPORTING
* json = lv_response
* CHANGING
* data = lo_data ).
*
* FIELD-SYMBOLS <val> TYPE any.
*
* UNASSIGN <val>.
* DATA(lv_assign) = `ID->*`.
* ASSIGN lo_data->(lv_assign) TO <val>.
* IF <val> IS INITIAL.
* cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ).
* ENDIF.
* DATA(lv_id) = CONV string( <val> ).
*
* DATA(lv_request) = `{ "VIEWNAME": "MAIN" , "EDIT":{"QUANTITY":"600"},"ID": "` && lv_id && `" ,"ARGUMENTS":[{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}]}`.
* lv_response = z2ui5_cl_fw_http_handler=>http_post( lv_request ).
*
* CLEAR lo_data.
* /ui2/cl_json=>deserialize(
* EXPORTING
* json = lv_response
* CHANGING
* data = lo_data ).
*
* UNASSIGN <val>.
* lv_assign = `OVIEWMODEL->EDIT->QUANTITY->*`.
* ASSIGN lo_data->(lv_assign) TO <val>.
*
* cl_abap_unit_assert=>assert_equals(
* act = <val>
* exp = `600`
* ).
DATA lo_data TYPE REF TO data. * IF <val> <> `600`.
/ui2/cl_json=>deserialize( * cl_abap_unit_assert=>fail( msg = 'data binding - frontend updated value wrong after roundtrip' quit = 5 ).
EXPORTING * ENDIF.
json = lv_response
CHANGING
data = lo_data ).
FIELD-SYMBOLS <val> TYPE any.
UNASSIGN <val>.
DATA(lv_assign) = `ID->*`.
ASSIGN lo_data->(lv_assign) TO <val>.
IF <val> IS INITIAL.
cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ).
ENDIF.
DATA(lv_id) = CONV string( <val> ).
DATA(lv_request) = `{ "VIEWNAME": "MAIN" , "EDIT":{"QUANTITY":"600"},"ID": "` && lv_id && `" ,"ARGUMENTS":[{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}]}`.
lv_response = z2ui5_cl_fw_http_handler=>http_post( lv_request ).
CLEAR lo_data.
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_response
CHANGING
data = lo_data ).
UNASSIGN <val>.
lv_assign = `OVIEWMODEL->EDIT->QUANTITY->*`.
ASSIGN lo_data->(lv_assign) TO <val>.
IF <val> <> `600`.
cl_abap_unit_assert=>fail( msg = 'data binding - frontend updated value wrong after roundtrip' quit = 5 ).
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD test_app_event. METHOD test_app_event.
z2ui5_cl_test_integration_test=>sv_state = ``. * z2ui5_cl_test_integration_test=>sv_state = ``.
DATA(lv_response) = z2ui5_cl_fw_http_handler=>http_post( `{ "OLOCATION" : { "SEARCH" : "app_start=z2ui5_cl_test_integration_test"}}` ). * DATA(lv_response) = z2ui5_cl_fw_http_handler=>http_post( `{ "OLOCATION" : { "SEARCH" : "app_start=z2ui5_cl_test_integration_test"}}` ).
*
DATA lo_data TYPE REF TO data. * DATA lo_data TYPE REF TO data.
/ui2/cl_json=>deserialize( * /ui2/cl_json=>deserialize(
EXPORTING * EXPORTING
json = lv_response * json = lv_response
CHANGING * CHANGING
data = lo_data ). * data = lo_data ).
*
FIELD-SYMBOLS <val> TYPE any. * FIELD-SYMBOLS <val> TYPE any.
*
UNASSIGN <val>. * UNASSIGN <val>.
DATA(lv_assign) = `ID->*`. * DATA(lv_assign) = `ID->*`.
ASSIGN lo_data->(lv_assign) TO <val>. * ASSIGN lo_data->(lv_assign) TO <val>.
cl_abap_unit_assert=>assert_not_initial( <val> ). * cl_abap_unit_assert=>assert_not_initial( <val> ).
*
*
DATA(lv_id) = CONV string( <val> ). * DATA(lv_id) = CONV string( <val> ).
DATA(lv_request) = `{"EDIT":{"QUANTITY":"700"},"ID": "` && lv_id && `" ,"ARGUMENTS": [{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}], "VIEWNAME" : "MAIN"}`. * DATA(lv_request) = `{"EDIT":{"QUANTITY":"700"},"ID": "` && lv_id && `" ,"ARGUMENTS": [{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}], "VIEWNAME" : "MAIN"}`.
lv_response = z2ui5_cl_fw_http_handler=>http_post( lv_request ). * lv_response = z2ui5_cl_fw_http_handler=>http_post( lv_request ).
*
CLEAR lo_data. * CLEAR lo_data.
/ui2/cl_json=>deserialize( * /ui2/cl_json=>deserialize(
EXPORTING * EXPORTING
json = lv_response * json = lv_response
CHANGING * CHANGING
data = lo_data ). * data = lo_data ).
*
UNASSIGN <val>. * UNASSIGN <val>.
ASSIGN (`LO_DATA->PARAMS->*`) TO <val>. * ASSIGN (`LO_DATA->PARAMS->*`) TO <val>.
ASSIGN (`<VAL>-S_MSG_TOAST->*`) TO <val>. * ASSIGN (`<VAL>-S_MSG_TOAST->*`) TO <val>.
ASSIGN (`<VAL>-TEXT->*`) TO <val>. * ASSIGN (`<VAL>-TEXT->*`) TO <val>.
cl_abap_unit_assert=>assert_not_initial( <val> ). * cl_abap_unit_assert=>assert_not_initial( <val> ).
* cl_abap_unit_assert=>assert_equals( * cl_abap_unit_assert=>assert_equals(
* act = <val> * act = <val>