diff --git a/src/z2ui5_cl_http_handler.clas.abap b/src/z2ui5_cl_http_handler.clas.abap index 3868c107..6b0d6aad 100644 --- a/src/z2ui5_cl_http_handler.clas.abap +++ b/src/z2ui5_cl_http_handler.clas.abap @@ -177,9 +177,6 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. ` console.log(sap.z2ui5.oResponse.PARAMS.S_POPUP.XML);` && |\n| && ` }` && |\n| && ` }` && |\n| && - ` if (sap.z2ui5.oResponse.PARAMS.S_MSG.CONTROL !== '') {` && |\n| && - ` sap.m[sap.z2ui5.oResponse.PARAMS.S_MSG.CONTROL][sap.z2ui5.oResponse.PARAMS.S_MSG.TYPE](sap.z2ui5.oResponse.PARAMS.S_MSG.TEXT);` && |\n| && - ` }` && |\n| && |\n| && ` var oModel = new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| && ` if (sap.z2ui5.oResponse.PARAMS.S_VIEW.CHECK_DESTROY == true) { if (sap.z2ui5.oView) { sap.z2ui5.oView.destroy( ); } }` && |\n| && @@ -252,6 +249,12 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. ` if (sap.z2ui5.oResponse.PARAMS.TITLE != "") {` && |\n| && ` document.title = sap.z2ui5.oResponse.PARAMS.TITLE;` && |\n| && ` }` && |\n| && + ` if (sap.z2ui5.oResponse.PARAMS.S_MSG_TOAST.TEXT !== '') {` && |\n| && + ` sap.m.MessageToast.show( sap.z2ui5.oResponse.PARAMS.S_MSG_TOAST.TEXT ); ` && + ` }` && |\n| && + ` if (sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TEXT !== '') {` && |\n| && + ` sap.m.MessageBox[ sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TYPE ]( sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TEXT ); ` && + ` }` && |\n| && ` if (sap.z2ui5.oResponse.PARAMS.PATH != "") {` && |\n| && ` // window.history.replaceState("", "", window.location.origin + sap.z2ui5.oResponse.PARAMS.PATH + window.location.search);` && |\n| && ` }` && |\n| && diff --git a/src/z2ui5_cl_http_handler.clas.locals_imp.abap b/src/z2ui5_cl_http_handler.clas.locals_imp.abap index a0ce36fc..f4038c40 100644 --- a/src/z2ui5_cl_http_handler.clas.locals_imp.abap +++ b/src/z2ui5_cl_http_handler.clas.locals_imp.abap @@ -644,11 +644,13 @@ CLASS z2ui5_lcl_fw_handler DEFINITION. interval_ms TYPE string, event_finished TYPE string, END OF s_timer, - BEGIN OF s_msg, - control TYPE string, - type TYPE string, - text TYPE string, - END OF s_msg, + BEGIN OF s_msg_box, + type TYPE string, + text TYPE string, + END OF s_msg_box, + BEGIN OF s_msg_toast, + text TYPE string, + END OF s_msg_toast, _viewmodel TYPE string, END OF ty_s_next2. @@ -1571,20 +1573,24 @@ ENDCLASS. CLASS z2ui5_lcl_fw_client IMPLEMENTATION. + METHOD constructor. mo_handler = handler. ENDMETHOD. METHOD z2ui5_if_client~message_toast_display. - mo_handler->ms_next-s_set-s_msg = VALUE #( control = `MessageToast` - type = `show` - text = text ). + + mo_handler->ms_next-s_set-s_msg_toast = VALUE #( + text = text ). + ENDMETHOD. METHOD z2ui5_if_client~message_box_display. - mo_handler->ms_next-s_set-s_msg = VALUE #( control = `MessageBox` - type = type - text = text ). + + mo_handler->ms_next-s_set-s_msg_box = VALUE #( + text = text + type = type ). + ENDMETHOD. METHOD z2ui5_if_client~get. diff --git a/src/z2ui5_cl_http_handler.clas.testclasses.abap b/src/z2ui5_cl_http_handler.clas.testclasses.abap index 4a9ceec8..22f58652 100644 --- a/src/z2ui5_cl_http_handler.clas.testclasses.abap +++ b/src/z2ui5_cl_http_handler.clas.testclasses.abap @@ -1,772 +1,754 @@ -*CLASS ltcl_unit_01_json DEFINITION FINAL FOR TESTING -* DURATION SHORT -* RISK LEVEL HARMLESS. -* -* PRIVATE SECTION. -* METHODS test_json_attri FOR TESTING RAISING cx_static_check. -* METHODS test_json_object FOR TESTING RAISING cx_static_check. -* METHODS test_json_struc FOR TESTING RAISING cx_static_check. -* METHODS test_json_trans FOR TESTING RAISING cx_static_check. -* METHODS test_json_trans_gen FOR TESTING RAISING cx_static_check. -*ENDCLASS. -* -* -*CLASS ltcl_unit_01_utility DEFINITION FINAL FOR TESTING -* DURATION SHORT -* RISK LEVEL HARMLESS. -* -* PRIVATE SECTION. -* METHODS test_util_uuid_session FOR TESTING RAISING cx_static_check. -* METHODS test_util_04_attri_by_ref FOR TESTING RAISING cx_static_check. -* METHODS test_util_01_get_t_attri FOR TESTING RAISING cx_static_check. -* METHODS test_util_02_get_attri FOR TESTING RAISING cx_static_check. -*ENDCLASS. -* -* -*CLASS ltcl_unit_04_deep_data DEFINITION FINAL FOR TESTING -* DURATION SHORT -* RISK LEVEL HARMLESS. -* -* PUBLIC SECTION. -* INTERFACES z2ui5_if_app. -* -* DATA check_initialized TYPE abap_bool. -* -* TYPES: -* BEGIN OF ty_row, -* title TYPE string, -* value TYPE string, -* descr TYPE string, -* icon TYPE string, -* info TYPE string, -* selected TYPE abap_bool, -* checkbox TYPE abap_bool, -* END OF ty_row. -* -* CLASS-DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. -* -* CLASS-DATA sv_status TYPE string. -* -* PRIVATE SECTION. -* METHODS test_app_deep_data FOR TESTING RAISING cx_static_check. -* METHODS test_app_deep_data_change FOR TESTING RAISING cx_static_check. -*ENDCLASS. -* -* -*CLASS ltcl_unit_01_json IMPLEMENTATION. -* METHOD test_json_attri. -* DATA(lo_tree) = NEW z2ui5_lcl_utility_tree_json( ). -* -* lo_tree->add_attribute( n = `AAA` v = `BBB` ). -* -* DATA(lv_result) = lo_tree->stringify( ). -* IF `{"AAA":"BBB"}` <> lv_result. -* cl_abap_unit_assert=>fail( 'json tree - wrong stringify attributes' ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_json_object. -* DATA(lo_tree) = NEW z2ui5_lcl_utility_tree_json( ). -* -* lo_tree->add_attribute_object( `CCC` )->add_attribute( n = `AAA` v = `BBB` ). -* -* DATA(lv_result) = lo_tree->stringify( ). -* IF `{"CCC":{"AAA":"BBB"}}` <> lv_result. -* cl_abap_unit_assert=>fail( 'json tree - wrong stringify object attributes' ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_json_struc. -* DATA(lo_tree) = NEW z2ui5_lcl_utility_tree_json( ). -* -* TYPES: -* BEGIN OF ty_s_test, -* comp1 TYPE string, -* comp2 TYPE string, -* END OF ty_s_test. -* -* DATA(ls_test) = VALUE ty_S_test( comp1 = `AAA` comp2 = `BBB` ). -* -* lo_tree->add_attribute_object( `CCC` )->add_attribute_struc( ls_test ). -* -* DATA(lv_result) = lo_tree->stringify( ). -* IF `{"CCC":{"COMP1":"AAA","COMP2":"BBB"}}` <> lv_result. -* cl_abap_unit_assert=>fail( 'json tree - wrong stringify structure' ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_json_trans. -* TYPES: -* BEGIN OF ty_row, -* title TYPE string, -* value TYPE string, -* selected TYPE abap_bool, -* END OF ty_row. -* TYPES ty_t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. -* -* DATA(lt_tab) = VALUE ty_t_tab( ( title = 'Test' value = 'this is a description' selected = abap_true ) -* ( title = 'Test2' value = 'this is a new descr' selected = abap_false ) ). -* -* DATA(lt_tab2) = VALUE ty_t_tab( ). -* -* DATA(lv_tab) = z2ui5_lcl_utility=>trans_any_2_json( lt_tab ). -* -* /ui2/cl_json=>deserialize( EXPORTING json = lv_tab -* CHANGING data = lt_tab2 ). -* -* IF lt_tab <> lt_tab2. -* cl_abap_unit_assert=>fail( msg = 'json serial - /ui2/cl_json wrong simple table' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_json_trans_gen. -* TYPES: -* BEGIN OF ty_row, -* title TYPE string, -* value TYPE string, -* selected TYPE abap_bool, -* END OF ty_row. -* TYPES ty_t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. -* -* DATA(lt_tab) = VALUE ty_t_tab( ( title = 'Test' value = 'this is a description' selected = abap_true ) -* ( title = 'Test2' value = 'this is a new descr' selected = abap_false ) ). -* -* DATA(lt_tab2) = VALUE ty_t_tab( ). -* -* DATA(lv_tab) = z2ui5_lcl_utility=>trans_any_2_json( lt_tab ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_tab -* CHANGING data = lo_data ). -* -* z2ui5_lcl_utility=>trans_ref_tab_2_tab( EXPORTING ir_tab_from = lo_data -* IMPORTING t_result = lt_tab2 ). -* -* IF lt_tab <> lt_tab2. -* cl_abap_unit_assert=>fail( msg = 'json serial - /ui2/cl_json wrong generic table' quit = 5 ). -* ENDIF. -* ENDMETHOD. -*ENDCLASS. -* -* -*CLASS ltcl_unit_01_utility IMPLEMENTATION. -* METHOD test_util_04_attri_by_ref. -* -* ENDMETHOD. -* -* METHOD test_util_uuid_session. -* DATA(lv_one) = z2ui5_lcl_utility=>get_uuid_session( ). -* DATA(lv_two) = z2ui5_lcl_utility=>get_uuid_session( ). -* -* IF lv_one <> `1`. -* cl_abap_unit_assert=>fail( msg = 'utility - create session id' quit = 5 ). -* ENDIF. -* -* IF lv_two <> `2`. -* cl_abap_unit_assert=>fail( msg = 'utility - create session id' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_util_02_get_attri. -* DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). -* -* lo_app->sv_status = `ABC`. -* FIELD-SYMBOLS TYPE any. -* DATA(lv_assign) = `LO_APP->` && 'SV_STATUS'. -* ASSIGN (lv_assign) TO . -* -* IF <> `ABC`. -* cl_abap_unit_assert=>fail( msg = 'utility - assign of attribute from outside not working' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_util_01_get_t_attri. -* DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). -* -* DATA(lt_attri) = CAST cl_abap_classdescr( cl_abap_objectdescr=>describe_by_object_ref( lo_app ) )->attributes. -* -* DATA(lt_test) = VALUE abap_attrdescr_tab( -* decimals = '0' -* visibility = 'U' -* is_inherited = '' -* is_constant = '' -* is_virtual = '' -* is_read_only = '' -* alias_for = '' -* ( length = '8' name = 'Z2UI5_IF_APP~ID' type_kind = 'g' is_interface = 'X' is_class = '' ) -* ( length = '2' name = 'CHECK_INITIALIZED' type_kind = 'C' is_interface = '' is_class = '' ) -* ( length = '8' name = 'SV_STATUS' type_kind = 'g' is_interface = '' is_class = 'X' ) -* ( length = '8' name = 'T_TAB' type_kind = 'h' is_interface = '' is_class = 'X' ) ). -* -* IF lt_test <> lt_attri. -* cl_abap_unit_assert=>fail( msg = 'utility - get abap_attrdescr_tab table wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -*ENDCLASS. -* -* -*CLASS ltcl_unit_02_app_start DEFINITION FINAL FOR TESTING -* DURATION SHORT -* RISK LEVEL HARMLESS. -* -* PUBLIC SECTION. -* INTERFACES z2ui5_if_app. -* -* DATA product TYPE string. -* DATA quantity TYPE string. -* DATA check_initialized TYPE abap_bool. -* -* CLASS-DATA sv_state TYPE string. -* -* PRIVATE SECTION. -* METHODS test_index_html FOR TESTING RAISING cx_static_check. -* METHODS test_xml_view FOR TESTING RAISING cx_static_check. -* METHODS test_id FOR TESTING RAISING cx_static_check. -* METHODS test_xml_popup FOR TESTING RAISING cx_static_check. -* METHODS test_bind_one_way FOR TESTING RAISING cx_static_check. -* METHODS test_bind_two_way FOR TESTING RAISING cx_static_check. -* METHODS test_message_toast FOR TESTING RAISING cx_static_check. -* METHODS test_message_box FOR TESTING RAISING cx_static_check. -* METHODS test_timer FOR TESTING RAISING cx_static_check. -* METHODS test_landing_page FOR TESTING RAISING cx_static_check. -* METHODS test_scroll_cursor FOR TESTING RAISING cx_static_check. -* METHODS test_navigate FOR TESTING RAISING cx_static_check. -* METHODS test_startup_path FOR TESTING RAISING cx_static_check. -*ENDCLASS. -* -* -*CLASS ltcl_unit_02_app_start IMPLEMENTATION. -* METHOD test_index_html. +CLASS ltcl_unit_01_json DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PRIVATE SECTION. + METHODS test_json_attri FOR TESTING RAISING cx_static_check. + METHODS test_json_object FOR TESTING RAISING cx_static_check. + METHODS test_json_struc FOR TESTING RAISING cx_static_check. + METHODS test_json_trans FOR TESTING RAISING cx_static_check. + METHODS test_json_trans_gen FOR TESTING RAISING cx_static_check. +ENDCLASS. + + +CLASS ltcl_unit_01_utility DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PRIVATE SECTION. + METHODS test_util_uuid_session FOR TESTING RAISING cx_static_check. + METHODS test_util_04_attri_by_ref FOR TESTING RAISING cx_static_check. + METHODS test_util_01_get_t_attri FOR TESTING RAISING cx_static_check. + METHODS test_util_02_get_attri FOR TESTING RAISING cx_static_check. +ENDCLASS. + + +CLASS ltcl_unit_04_deep_data DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PUBLIC SECTION. + INTERFACES z2ui5_if_app. + + DATA check_initialized TYPE abap_bool. + + TYPES: + BEGIN OF ty_row, + title TYPE string, + value TYPE string, + descr TYPE string, + icon TYPE string, + info TYPE string, + selected TYPE abap_bool, + checkbox TYPE abap_bool, + END OF ty_row. + + CLASS-DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. + + CLASS-DATA sv_status TYPE string. + + PRIVATE SECTION. + METHODS test_app_deep_data FOR TESTING RAISING cx_static_check. + METHODS test_app_deep_data_change FOR TESTING RAISING cx_static_check. +ENDCLASS. + + +CLASS ltcl_unit_01_json IMPLEMENTATION. + METHOD test_json_attri. + DATA(lo_tree) = NEW z2ui5_lcl_utility_tree_json( ). + + lo_tree->add_attribute( n = `AAA` v = `BBB` ). + + DATA(lv_result) = lo_tree->stringify( ). + IF `{"AAA":"BBB"}` <> lv_result. + cl_abap_unit_assert=>fail( 'json tree - wrong stringify attributes' ). + ENDIF. + ENDMETHOD. + + METHOD test_json_object. + DATA(lo_tree) = NEW z2ui5_lcl_utility_tree_json( ). + + lo_tree->add_attribute_object( `CCC` )->add_attribute( n = `AAA` v = `BBB` ). + + DATA(lv_result) = lo_tree->stringify( ). + IF `{"CCC":{"AAA":"BBB"}}` <> lv_result. + cl_abap_unit_assert=>fail( 'json tree - wrong stringify object attributes' ). + ENDIF. + ENDMETHOD. + + METHOD test_json_struc. + DATA(lo_tree) = NEW z2ui5_lcl_utility_tree_json( ). + + TYPES: + BEGIN OF ty_s_test, + comp1 TYPE string, + comp2 TYPE string, + END OF ty_s_test. + + DATA(ls_test) = VALUE ty_S_test( comp1 = `AAA` comp2 = `BBB` ). + + lo_tree->add_attribute_object( `CCC` )->add_attribute_struc( ls_test ). + + DATA(lv_result) = lo_tree->stringify( ). + IF `{"CCC":{"COMP1":"AAA","COMP2":"BBB"}}` <> lv_result. + cl_abap_unit_assert=>fail( 'json tree - wrong stringify structure' ). + ENDIF. + ENDMETHOD. + + METHOD test_json_trans. + TYPES: + BEGIN OF ty_row, + title TYPE string, + value TYPE string, + selected TYPE abap_bool, + END OF ty_row. + TYPES ty_t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. + + DATA(lt_tab) = VALUE ty_t_tab( ( title = 'Test' value = 'this is a description' selected = abap_true ) + ( title = 'Test2' value = 'this is a new descr' selected = abap_false ) ). + + DATA(lt_tab2) = VALUE ty_t_tab( ). + + DATA(lv_tab) = z2ui5_lcl_utility=>trans_any_2_json( lt_tab ). + + /ui2/cl_json=>deserialize( EXPORTING json = lv_tab + CHANGING data = lt_tab2 ). + + IF lt_tab <> lt_tab2. + cl_abap_unit_assert=>fail( msg = 'json serial - /ui2/cl_json wrong simple table' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_json_trans_gen. + TYPES: + BEGIN OF ty_row, + title TYPE string, + value TYPE string, + selected TYPE abap_bool, + END OF ty_row. + TYPES ty_t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. + + DATA(lt_tab) = VALUE ty_t_tab( ( title = 'Test' value = 'this is a description' selected = abap_true ) + ( title = 'Test2' value = 'this is a new descr' selected = abap_false ) ). + + DATA(lt_tab2) = VALUE ty_t_tab( ). + + DATA(lv_tab) = z2ui5_lcl_utility=>trans_any_2_json( lt_tab ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_tab + CHANGING data = lo_data ). + + z2ui5_lcl_utility=>trans_ref_tab_2_tab( EXPORTING ir_tab_from = lo_data + IMPORTING t_result = lt_tab2 ). + + IF lt_tab <> lt_tab2. + cl_abap_unit_assert=>fail( msg = 'json serial - /ui2/cl_json wrong generic table' quit = 5 ). + ENDIF. + ENDMETHOD. +ENDCLASS. + + +CLASS ltcl_unit_01_utility IMPLEMENTATION. + METHOD test_util_04_attri_by_ref. + + ENDMETHOD. + + METHOD test_util_uuid_session. + DATA(lv_one) = z2ui5_lcl_utility=>get_uuid_session( ). + DATA(lv_two) = z2ui5_lcl_utility=>get_uuid_session( ). + + IF lv_one <> `1`. + cl_abap_unit_assert=>fail( msg = 'utility - create session id' quit = 5 ). + ENDIF. + + IF lv_two <> `2`. + cl_abap_unit_assert=>fail( msg = 'utility - create session id' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_util_02_get_attri. + DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). + + lo_app->sv_status = `ABC`. + FIELD-SYMBOLS TYPE any. + DATA(lv_assign) = `LO_APP->` && 'SV_STATUS'. + ASSIGN (lv_assign) TO . + + IF <> `ABC`. + cl_abap_unit_assert=>fail( msg = 'utility - assign of attribute from outside not working' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_util_01_get_t_attri. + DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). + + DATA(lt_attri) = CAST cl_abap_classdescr( cl_abap_objectdescr=>describe_by_object_ref( lo_app ) )->attributes. + + DATA(lt_test) = VALUE abap_attrdescr_tab( + decimals = '0' + visibility = 'U' + is_inherited = '' + is_constant = '' + is_virtual = '' + is_read_only = '' + alias_for = '' + ( length = '8' name = 'Z2UI5_IF_APP~ID' type_kind = 'g' is_interface = 'X' is_class = '' ) + ( length = '2' name = 'CHECK_INITIALIZED' type_kind = 'C' is_interface = '' is_class = '' ) + ( length = '8' name = 'SV_STATUS' type_kind = 'g' is_interface = '' is_class = 'X' ) + ( length = '8' name = 'T_TAB' type_kind = 'h' is_interface = '' is_class = 'X' ) ). + + IF lt_test <> lt_attri. + cl_abap_unit_assert=>fail( msg = 'utility - get abap_attrdescr_tab table wrong' quit = 5 ). + ENDIF. + ENDMETHOD. +ENDCLASS. + + +CLASS ltcl_unit_02_app_start DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PUBLIC SECTION. + INTERFACES z2ui5_if_app. + + DATA product TYPE string. + DATA quantity TYPE string. + DATA check_initialized TYPE abap_bool. + + CLASS-DATA sv_state TYPE string. + + PRIVATE SECTION. + METHODS test_index_html FOR TESTING RAISING cx_static_check. + METHODS test_xml_view FOR TESTING RAISING cx_static_check. + METHODS test_id FOR TESTING RAISING cx_static_check. + METHODS test_xml_popup FOR TESTING RAISING cx_static_check. + METHODS test_bind_one_way FOR TESTING RAISING cx_static_check. + METHODS test_bind_two_way FOR TESTING RAISING cx_static_check. + METHODS test_message_toast FOR TESTING RAISING cx_static_check. + METHODS test_message_box FOR TESTING RAISING cx_static_check. + METHODS test_timer FOR TESTING RAISING cx_static_check. + METHODS test_landing_page FOR TESTING RAISING cx_static_check. + METHODS test_scroll_cursor FOR TESTING RAISING cx_static_check. + METHODS test_navigate FOR TESTING RAISING cx_static_check. + METHODS test_startup_path FOR TESTING RAISING cx_static_check. +ENDCLASS. + + +CLASS ltcl_unit_02_app_start IMPLEMENTATION. + METHOD test_index_html. + * z2ui5_cl_http_handler=>client = VALUE #( t_header = VALUE #( ( name = '~path' value = 'dummy' ) ) ). -* -* DATA(lv_index_html) = z2ui5_cl_http_handler=>http_get( ). -* -* IF lv_index_html IS INITIAL. -* cl_abap_unit_assert=>fail( 'HTTP GET - index html initial' ). -* ENDIF. -* ENDMETHOD. -* -* METHOD z2ui5_if_app~main. -* IF check_initialized = abap_false. -* check_initialized = abap_true. -* product = 'tomato'. -* quantity = '500'. -* -* ENDIF. -* -* CASE client->get( )-event. -* WHEN 'BUTTON_POST'. -* client->popup_message_toast( |{ product } { quantity } - send to the server| ). -* WHEN 'BACK'. -* client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). -* ENDCASE. -* -* IF sv_state = 'TEST_MESSAGE_BOX'. -* client->popup_message_box( text = 'test message box' ). -* ENDIF. -* -* IF sv_state = 'TEST_MESSAGE_TOAST'. -* client->popup_message_toast( text = 'test message toast' ). -* ENDIF. -* -* CASE sv_state. -* -* WHEN 'TEST_ONE_WAY'. -* client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->shell( -* )->page( title = 'abap2UI5 - First Example' -* navbuttonpress = client->_event( 'BACK' ) -* shownavbutton = abap_true -* )->simple_form( title = 'Form Title' editable = abap_true -* )->content( 'form' -* )->title( 'Input' -* )->label( 'quantity' -* )->input( client->_bind_one( quantity ) -* )->label( 'product' -* )->input( value = product -* enabled = abap_false -* )->button( text = 'post' -* press = client->_event( 'BUTTON_POST' ) -* )->get_root( )->xml_get( ) ) ). -* -* WHEN 'TEST_POPUP'. -* client->set_next( VALUE #( xml_popup = z2ui5_cl_xml_view=>factory( -* )->dialog( title = 'abap2UI5 - First Example' -* )->simple_form( title = 'Form Title' editable = abap_true -* )->content( 'form' -* )->title( 'Input' -* )->label( 'quantity' -* )->input( client->_bind_one( quantity ) -* )->label( 'product' -* )->input( value = product -* enabled = abap_false -* )->button( text = 'post' -* press = client->_event( 'BUTTON_POST' ) -* )->get_root( )->xml_get( ) ) ). -* -* WHEN 'TEST_TIMER'. -* client->set_next( VALUE #( s_timer = VALUE #( event_finished = 'TIMER_FINISHED' -* interval_ms = `500` ) -* xml_main = z2ui5_cl_xml_view=>factory( )->shell( -* )->page( title = 'abap2UI5 - First Example' -* navbuttonpress = client->_event( 'BACK' ) -* shownavbutton = abap_true -* )->simple_form( title = 'Form Title' editable = abap_true -* )->content( 'form' -* )->title( 'Input' -* )->label( 'quantity' -* )->input( client->_bind( quantity ) -* )->label( 'product' -* )->input( value = product -* enabled = abap_false -* )->button( text = 'post' -* press = client->_event( 'BUTTON_POST' ) -* )->get_root( )->xml_get( ) ) ). -* -* WHEN OTHERS. -* client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->shell( -* )->page( title = 'abap2UI5 - First Example' -* navbuttonpress = client->_event( 'BACK' ) -* shownavbutton = abap_true -* )->simple_form( title = 'Form Title' editable = abap_true -* )->content( 'form' -* )->title( 'Input' -* )->label( 'quantity' -* )->input( client->_bind( quantity ) -* )->label( 'product' -* )->input( value = product -* enabled = abap_false -* )->button( text = 'post' -* press = client->_event( 'BUTTON_POST' ) -* )->get_root( )->xml_get( ) ) ). -* -* ENDCASE. -* -* IF sv_state = 'TEST_SCROLL_CURSOR'. -* -* client->set_next( -* VALUE #( xml_main = `test` -* s_cursor = VALUE #( id = 'id_text2' cursorpos = '5' selectionstart = '5' selectionend = '10' ) -* t_scroll = VALUE #( value = '99999' -* ( name = 'id_page' ) -* ( name = 'id_text3' ) ) ) ). -* -* ENDIF. -* -* IF sv_state = 'TEST_NAVIGATE'. -* DATA(lo_app) = NEW ltcl_unit_02_app_start( ). -* sv_state = 'LEAVE_APP'. -* client->nav_app_call( lo_app ). -* RETURN. -* ENDIF. -* -* IF sv_state = 'LEAVE_APP'. -* CLEAR sv_state. -* client->nav_app_leave( client->get_app( client->get( )-id_prev_app ) ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_xml_view. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = ``. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* UNASSIGN . -* DATA(lv_assign) = `PARAMS->XML_MAIN->*`. -* ASSIGN lo_data->(lv_assign) TO . -* = shift_left( ). -* IF (9) <> `fail( msg = 'xml view - intital view wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_id. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = ``. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* UNASSIGN . -* DATA(lv_assign) = `ID->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF IS INITIAL. -* cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_bind_one_way. -* -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = `TEST_ONE_WAY`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* UNASSIGN . -* DATA(lv_assign) = `OVIEWMODEL->QUANTITY->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `500`. -* cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_bind_two_way. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = ``. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* UNASSIGN . -* DATA(lv_assign) = `OVIEWMODEL->OUPDATE->QUANTITY->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `500`. -* cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_message_box. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = `TEST_MESSAGE_BOX`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* -* UNASSIGN . -* DATA(lv_assign) = `S_MSG->CONTROL->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `MessageBox`. -* cl_abap_unit_assert=>fail( msg = 'message box - control wrong' quit = 5 ). -* ENDIF. -* -* UNASSIGN . -* lv_assign = `S_MSG->TEXT->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `test message box`. -* cl_abap_unit_assert=>fail( msg = 'message box - text wrong' quit = 5 ). -* ENDIF. -* -* UNASSIGN . -* lv_assign = `S_MSG->TYPE->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `information`. -* cl_abap_unit_assert=>fail( msg = 'message box - type wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_message_toast. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = `TEST_MESSAGE_TOAST`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* -* UNASSIGN . -* DATA(lv_assign) = `S_MSG->CONTROL->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `MessageToast`. -* cl_abap_unit_assert=>fail( msg = 'message toast - control wrong' quit = 5 ). -* ENDIF. -* -* UNASSIGN . -* lv_assign = `S_MSG->TEXT->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `test message toast`. -* cl_abap_unit_assert=>fail( msg = 'message toast - text wrong' quit = 5 ). -* ENDIF. -* -* UNASSIGN . -* lv_assign = `S_MSG->TYPE->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `show`. -* cl_abap_unit_assert=>fail( msg = 'message toast - type wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_timer. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = `TEST_TIMER`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* -* UNASSIGN . -* DATA(lv_assign) = `PARAMS->S_TIMER->EVENT_FINISHED->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `TIMER_FINISHED`. -* cl_abap_unit_assert=>fail( msg = 'timer - event wrong' quit = 5 ). -* ENDIF. -* -* UNASSIGN . -* lv_assign = `PARAMS->S_TIMER->INTERVAL_MS->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `500`. -* cl_abap_unit_assert=>fail( msg = 'timer - ms wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_xml_popup. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = `TEST_POPUP`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* UNASSIGN . -* DATA(lv_assign) = `PARAMS->XML_POPUP->*`. -* ASSIGN lo_data->(lv_assign) TO . -* = shift_left( ). -* IF (9) <> `fail( msg = 'xml popup - intital popup wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_landing_page. -* z2ui5_cl_http_handler=>client = VALUE #( t_header = VALUE #( ( name = 'referer' value = 'dummy' ) ) ). -* -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* UNASSIGN . -* DATA(lv_assign) = `PARAMS->XML_MAIN->*`. -* ASSIGN lo_data->(lv_assign) TO . -* = shift_left( ). -* IF NS `Step 4`. -* cl_abap_unit_assert=>fail( msg = 'landing page - not started when no app' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_scroll_cursor. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = `TEST_SCROLL_CURSOR`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* -* -* -* ENDMETHOD. -* -* METHOD test_startup_path. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = `TEST_NAVIGATE`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* -* ENDMETHOD. -* -* METHOD test_navigate. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* sv_state = `TEST_NAVIGATE`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* -* ENDMETHOD. -*ENDCLASS. -* -* -*CLASS ltcl_unit_03_app_ajax DEFINITION FINAL FOR TESTING -* DURATION SHORT -* RISK LEVEL HARMLESS. -* -* PUBLIC SECTION. -* INTERFACES z2ui5_if_app. -* -* DATA product TYPE string. -* DATA quantity TYPE string. -* DATA check_initialized TYPE abap_bool. -* -* CLASS-DATA sv_state TYPE string. -* -* PRIVATE SECTION. -* METHODS test_app_change_value FOR TESTING RAISING cx_static_check. -* METHODS test_app_event FOR TESTING RAISING cx_static_check. -* METHODS test_app_dump FOR TESTING RAISING cx_static_check. -* -*ENDCLASS. -* -* -*CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. -* METHOD z2ui5_if_app~main. -* IF check_initialized = abap_false. -* check_initialized = abap_true. -* product = 'tomato'. -* quantity = '500'. -* -* ENDIF. -* -* CASE client->get( )-event. -* WHEN 'BUTTON_POST'. -* client->popup_message_toast( |{ product } { quantity } - send to the server| ). -* WHEN 'BACK'. -* client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). -* ENDCASE. -* -* IF sv_state = 'ERROR'. -* z2ui5_lcl_utility=>raise( `exception test` ). -* ENDIF. -* -* client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->shell( -* )->page( title = 'abap2UI5 - First Example' -* navbuttonpress = client->_event( 'BACK' ) -* shownavbutton = abap_true -* )->simple_form( title = 'Form Title' editable = abap_true -* )->content( 'form' -* )->title( 'Input' -* )->label( 'quantity' -* )->input( client->_bind( quantity ) -* )->label( 'product' -* )->input( value = product -* enabled = abap_false -* )->button( text = 'post' -* press = client->_event( 'BUTTON_POST' ) -* )->get_root( )->xml_get( ) ) ). -* ENDMETHOD. -* -* METHOD test_app_change_value. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* -* UNASSIGN . -* DATA(lv_assign) = `ID->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF IS INITIAL. -* cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). -* ENDIF. -* DATA(lv_id) = CONV string( ). -* -* DATA(lv_request) = `{"oUpdate":{"QUANTITY":"600"},"ID": "` && lv_id && `" ,"ARGUMENTS":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`. + + DATA(lv_index_html) = z2ui5_cl_http_handler=>http_get( ). + + IF lv_index_html IS INITIAL. + cl_abap_unit_assert=>fail( 'HTTP GET - index html initial' ). + ENDIF. + ENDMETHOD. + + METHOD z2ui5_if_app~main. + IF check_initialized = abap_false. + check_initialized = abap_true. + product = 'tomato'. + quantity = '500'. + + ENDIF. + + CASE client->get( )-event. + WHEN 'BUTTON_POST'. + client->message_toast_display( |{ product } { quantity } - send to the server| ). + WHEN 'BACK'. + client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). + ENDCASE. + + IF sv_state = 'TEST_MESSAGE_BOX'. + client->message_box_display( text = 'test message box' ). + ENDIF. + + IF sv_state = 'TEST_MESSAGE_TOAST'. + client->message_toast_display( text = 'test message toast' ). + ENDIF. + + CASE sv_state. + + WHEN 'TEST_ONE_WAY'. + client->view_display( z2ui5_cl_xml_view=>factory( client )->shell( + )->page( title = 'abap2UI5 - First Example' + navbuttonpress = client->_event( 'BACK' ) + shownavbutton = abap_true + )->simple_form( title = 'Form Title' editable = abap_true + )->content( 'form' + )->title( 'Input' + )->label( 'quantity' + )->input( client->_bind( quantity ) + )->label( 'product' + )->input( value = product + enabled = abap_false + )->button( text = 'post' + press = client->_event( 'BUTTON_POST' ) + )->get_root( )->xml_get( ) ). + + WHEN 'TEST_POPUP'. + + client->popup_display( z2ui5_cl_xml_view=>factory( client + )->dialog( title = 'abap2UI5 - First Example' + )->simple_form( title = 'Form Title' editable = abap_true + )->content( 'form' + )->title( 'Input' + )->label( 'quantity' + )->input( client->_bind_edit( quantity ) + )->label( 'product' + )->input( value = product + enabled = abap_false + )->button( text = 'post' + press = client->_event( 'BUTTON_POST' ) + )->get_root( )->xml_get( ) ). + + WHEN 'TEST_TIMER'. + client->timer_set( event_finished = 'TIMER_FINISHED' + interval_ms = `500` ). + + client->view_display( z2ui5_cl_xml_view=>factory( client )->shell( + )->page( title = 'abap2UI5 - First Example' + navbuttonpress = client->_event( 'BACK' ) + shownavbutton = abap_true + )->simple_form( title = 'Form Title' editable = abap_true + )->content( 'form' + )->title( 'Input' + )->label( 'quantity' + )->input( client->_bind( quantity ) + )->label( 'product' + )->input( value = product + enabled = abap_false + )->button( text = 'post' + press = client->_event( 'BUTTON_POST' ) + )->get_root( )->xml_get( ) ). + + WHEN OTHERS. + client->view_display( z2ui5_cl_xml_view=>factory( client )->shell( + )->page( title = 'abap2UI5 - First Example' + navbuttonpress = client->_event( 'BACK' ) + shownavbutton = abap_true + )->simple_form( title = 'Form Title' editable = abap_true + )->content( 'form' + )->title( 'Input' + )->label( 'quantity' + )->input( client->_bind_edit( quantity ) + )->label( 'product' + )->input( value = product + enabled = abap_false + )->button( text = 'post' + press = client->_event( 'BUTTON_POST' ) + )->get_root( )->xml_get( ) ). + + ENDCASE. + + IF sv_state = 'TEST_SCROLL_CURSOR'. + + client->view_display( `test` ). + client->cursor_set( value #( id = 'id_text2' cursorpos = '5' selectionstart = '5' selectionend = '10' ) ). + + client->scroll_position_set( VALUE #( value = '99999' + ( name = 'id_page' ) + ( name = 'id_text3' ) ) ). + + ENDIF. + + IF sv_state = 'TEST_NAVIGATE'. + DATA(lo_app) = NEW ltcl_unit_02_app_start( ). + sv_state = 'LEAVE_APP'. + client->nav_app_call( lo_app ). + RETURN. + ENDIF. + + IF sv_state = 'LEAVE_APP'. + CLEAR sv_state. + client->nav_app_leave( client->get_app( client->get( )-id_prev_app ) ). + ENDIF. + ENDMETHOD. + + METHOD test_xml_view. + + sv_state = ``. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + UNASSIGN . + DATA(lv_assign) = `PARAMS->S_VIEW->XML->*`. + ASSIGN lo_data->(lv_assign) TO . + = shift_left( ). + IF (9) <> `fail( msg = 'xml view - intital view wrong' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_id. + + sv_state = ``. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + UNASSIGN . + DATA(lv_assign) = `ID->*`. + ASSIGN lo_data->(lv_assign) TO . + IF IS INITIAL. + cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_bind_one_way. + + sv_state = `TEST_ONE_WAY`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + UNASSIGN . + DATA(lv_assign) = `OVIEWMODEL->QUANTITY->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `500`. + cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_bind_two_way. + + sv_state = ``. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + UNASSIGN . + DATA(lv_assign) = `OVIEWMODEL->OUPDATE->QUANTITY->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `500`. + cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_message_box. + + sv_state = `TEST_MESSAGE_BOX`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + + UNASSIGN . + data(lv_assign) = `PARAMS->S_MSG_BOX->TEXT->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `test message box`. + cl_abap_unit_assert=>fail( msg = 'message box - text wrong' quit = 5 ). + ENDIF. + + UNASSIGN . + lv_assign = `PARAMS->S_MSG_BOX->TYPE->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `information`. + cl_abap_unit_assert=>fail( msg = 'message box - type wrong' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_message_toast. + + sv_state = `TEST_MESSAGE_TOAST`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + + UNASSIGN . + data(lv_assign) = `PARAMS->S_MSG_TOAST->TEXT->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `test message toast`. + cl_abap_unit_assert=>fail( msg = 'message toast - text wrong' quit = 5 ). + ENDIF. + + ENDMETHOD. + + METHOD test_timer. + + sv_state = `TEST_TIMER`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + + UNASSIGN . + DATA(lv_assign) = `PARAMS->S_TIMER->EVENT_FINISHED->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `TIMER_FINISHED`. + cl_abap_unit_assert=>fail( msg = 'timer - event wrong' quit = 5 ). + ENDIF. + + UNASSIGN . + lv_assign = `PARAMS->S_TIMER->INTERVAL_MS->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `500`. + cl_abap_unit_assert=>fail( msg = 'timer - ms wrong' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_xml_popup. + + sv_state = `TEST_POPUP`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + UNASSIGN . + DATA(lv_assign) = `PARAMS->S_POPUP->XML->*`. + ASSIGN lo_data->(lv_assign) TO . + = shift_left( ). + IF (9) <> `fail( msg = 'xml popup - intital popup wrong' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_landing_page. + + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = '' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + UNASSIGN . + DATA(lv_assign) = `PARAMS->S_VIEW->XML->*`. + ASSIGN lo_data->(lv_assign) TO . + = shift_left( ). + IF NS `Step 4`. + cl_abap_unit_assert=>fail( msg = 'landing page - not started when no app' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_scroll_cursor. + + sv_state = `TEST_SCROLL_CURSOR`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + + + + ENDMETHOD. + + METHOD test_startup_path. + + sv_state = `TEST_NAVIGATE`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + + ENDMETHOD. + + METHOD test_navigate. + + sv_state = `TEST_NAVIGATE`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + ENDMETHOD. +ENDCLASS. + + +CLASS ltcl_unit_03_app_ajax DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PUBLIC SECTION. + INTERFACES z2ui5_if_app. + + DATA product TYPE string. + DATA quantity TYPE string. + DATA check_initialized TYPE abap_bool. + + CLASS-DATA sv_state TYPE string. + + PRIVATE SECTION. + METHODS test_app_change_value FOR TESTING RAISING cx_static_check. + METHODS test_app_event FOR TESTING RAISING cx_static_check. + METHODS test_app_dump FOR TESTING RAISING cx_static_check. + +ENDCLASS. + + +CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. + METHOD z2ui5_if_app~main. + IF check_initialized = abap_false. + check_initialized = abap_true. + product = 'tomato'. + quantity = '500'. + + ENDIF. + + CASE client->get( )-event. + WHEN 'BUTTON_POST'. + client->message_toast_display( |{ product } { quantity } - send to the server| ). + WHEN 'BACK'. + client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). + ENDCASE. + + IF sv_state = 'ERROR'. + z2ui5_lcl_utility=>raise( `exception test` ). + ENDIF. + + client->view_display( z2ui5_cl_xml_view=>factory( client )->shell( + )->page( title = 'abap2UI5 - First Example' + navbuttonpress = client->_event( 'BACK' ) + shownavbutton = abap_true + )->simple_form( title = 'Form Title' editable = abap_true + )->content( 'form' + )->title( 'Input' + )->label( 'quantity' + )->input( client->_bind( quantity ) + )->label( 'product' + )->input( value = product + enabled = abap_false + )->button( text = 'post' + press = client->_event( 'BUTTON_POST' ) + )->get_root( )->xml_get( ) ). + ENDMETHOD. + + METHOD test_app_change_value. + + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + + UNASSIGN . + DATA(lv_assign) = `ID->*`. + ASSIGN lo_data->(lv_assign) TO . + IF IS INITIAL. + cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). + ENDIF. + DATA(lv_id) = CONV string( ). + + DATA(lv_request) = `{"oUpdate":{"QUANTITY":"600"},"ID": "` && lv_id && `" ,"ARGUMENTS":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`. * z2ui5_cl_http_handler=>client = VALUE #( body = lv_request ). -* lv_response = z2ui5_cl_http_handler=>http_post( ). -* -* CLEAR lo_data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* UNASSIGN . -* lv_assign = `OVIEWMODEL->OUPDATE->QUANTITY->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `600`. -* cl_abap_unit_assert=>fail( msg = 'data binding - frontend updated value wrong after roundtrip' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_app_event. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). -* -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* -* UNASSIGN . -* DATA(lv_assign) = `ID->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF IS INITIAL. -* cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). -* ENDIF. -* DATA(lv_id) = CONV string( ). -* -* DATA(lv_request) = `{"oUpdate":{"QUANTITY":"700"},"ID": "` && lv_id && `" ,"ARGUMENTS": { "0" : {"EVENT":"BUTTON_POST","METHOD":"UPDATE"} } }`. + lv_response = z2ui5_cl_http_handler=>http_post( body = lv_request ). + + CLEAR lo_data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + UNASSIGN . + lv_assign = `OVIEWMODEL->OUPDATE->QUANTITY->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `600`. + cl_abap_unit_assert=>fail( msg = 'data binding - frontend updated value wrong after roundtrip' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_app_event. + + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_02_APP_START' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + + UNASSIGN . + DATA(lv_assign) = `ID->*`. + ASSIGN lo_data->(lv_assign) TO . + IF IS INITIAL. + cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). + ENDIF. + DATA(lv_id) = CONV string( ). + + DATA(lv_request) = `{"oUpdate":{"QUANTITY":"700"},"ID": "` && lv_id && `" ,"ARGUMENTS": { "0" : {"EVENT":"BUTTON_POST","METHOD":"UPDATE"} } }`. * z2ui5_cl_http_handler=>client = VALUE #( body = lv_request ). -* lv_response = z2ui5_cl_http_handler=>http_post( ). -* -* CLEAR lo_data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* UNASSIGN . -* lv_assign = `S_MSG->TEXT->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF <> `tomato 700 - send to the server`. -* cl_abap_unit_assert=>fail( msg = 'message toast - text wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_app_dump. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_03_APP_AJAX' ) ) ). -* + lv_response = z2ui5_cl_http_handler=>http_post( body = lv_request ). + + CLEAR lo_data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + UNASSIGN . + lv_assign = `PARAMS->S_MSG_TOAST->TEXT->*`. + ASSIGN lo_data->(lv_assign) TO . + IF <> `tomato 700 - send to the server`. + cl_abap_unit_assert=>fail( msg = 'message toast - text wrong' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_app_dump. + * sv_state = `ERROR`. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). +* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( +* body = `` +* path_info = 'LTCL_UNIT_03_APP_AJAX' ). * * DATA lo_data TYPE REF TO data. * /ui2/cl_json=>deserialize( EXPORTING json = lv_response @@ -774,172 +756,172 @@ * * FIELD-SYMBOLS TYPE any. * UNASSIGN . -* DATA(lv_assign) = `PARAMS->XML_MAIN->*`. +* DATA(lv_assign) = `PARAMS->S_VIEW->XML->*`. * ASSIGN lo_data->(lv_assign) TO . * = shift_left( ). * IF NS `MessagePage`. * cl_abap_unit_assert=>fail( msg = 'system app error - not shown by exception' quit = 5 ). * ENDIF. -* ENDMETHOD. -*ENDCLASS. -* -* -*CLASS ltcl_unit_04_deep_data IMPLEMENTATION. -* METHOD z2ui5_if_app~main. -* IF check_initialized = abap_false. -* check_initialized = abap_true. -* -* t_tab = VALUE #( title = 'Peter' -* descr = 'this is a description' -* icon = 'sap-icon://account' -* ( info = 'completed' ) -* ( info = 'incompleted' ) ). -* -* ENDIF. -* -* CASE sv_status. -* -* WHEN `CHANGE`. -* client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->shell( -* )->page( title = 'abap2UI5 - First Example' -* navbuttonpress = client->_event( 'BACK' ) -* shownavbutton = abap_true -* )->list( -* " TODO: check spelling: Ouput (typo) -> Output (ABAP cleaner) -* headertext = 'List Ouput' -* items = client->_bind( t_tab ) -* mode = `SingleSelectMaster` -* selectionchange = client->_event( 'SELCHANGE' ) -* )->standard_list_item( title = '{TITLE}' -* description = '{DESCR}' -* icon = '{ICON}' -* info = '{INFO}' -* press = client->_event( 'TEST' ) -* type = `Navigation` -* selected = `{SELECTED}` -* )->get_root( )->xml_get( ) ) ). -* -* WHEN OTHERS. -* client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->shell( -* )->page( title = 'abap2UI5 - First Example' -* navbuttonpress = client->_event( 'BACK' ) -* shownavbutton = abap_true -* )->list( -* " TODO: check spelling: Ouput (typo) -> Output (ABAP cleaner) -* headertext = 'List Ouput' -* items = client->_bind_one( t_tab ) -* mode = `SingleSelectMaster` -* selectionchange = client->_event( 'SELCHANGE' ) -* )->standard_list_item( title = '{TITLE}' -* description = '{DESCR}' -* icon = '{ICON}' -* info = '{INFO}' -* press = client->_event( 'TEST' ) -* type = `Navigation` -* selected = `{SELECTED}` -* )->get_root( )->xml_get( ) ) ). -* -* ENDCASE. -* ENDMETHOD. -* -* METHOD test_app_deep_data. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_04_DEEP_DATA' ) ) ). -* -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* -* UNASSIGN . -* FIELD-SYMBOLS TYPE STANDARD TABLE. -* FIELD-SYMBOLS TYPE REF TO data. -* DATA(lv_assign) = `OVIEWMODEL->T_TAB->*`. -* ASSIGN lo_data->(lv_assign) TO . -* ASSIGN [ 1 ] TO . -* -* DATA ls_tab_test TYPE ty_row. -* ls_tab_test = VALUE #( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ). -* -* lv_assign = `TITLE->*`. -* ASSIGN ->(lv_assign) TO . -* IF <> ls_tab_test-title. -* cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). -* ENDIF. -* -* lv_assign = `INFO->*`. -* ASSIGN ->(lv_assign) TO . -* IF <> ls_tab_test-info. -* cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). -* ENDIF. -* -* lv_assign = `DESCR->*`. -* ASSIGN ->(lv_assign) TO . -* IF <> ls_tab_test-descr. -* cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). -* ENDIF. -* ENDMETHOD. -* -* METHOD test_app_deep_data_change. -* z2ui5_cl_http_handler=>client = VALUE #( -* t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_04_DEEP_DATA' ) ) ). -* -* sv_status = 'CHANGE'. -* DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). -* -* DATA lo_data TYPE REF TO data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* -* FIELD-SYMBOLS TYPE any. -* -* UNASSIGN . -* FIELD-SYMBOLS TYPE STANDARD TABLE. -* FIELD-SYMBOLS TYPE REF TO data. -* DATA(lv_assign) = `OVIEWMODEL->OUPDATE->T_TAB->*`. -* ASSIGN lo_data->(lv_assign) TO . -* ASSIGN [ 1 ] TO . -* -* DATA ls_tab_test TYPE ty_row. -* ls_tab_test = VALUE #( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ). -* -* lv_assign = `TITLE->*`. -* ASSIGN ->(lv_assign) TO . -* IF <> ls_tab_test-title. -* cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). -* ENDIF. -* -* lv_assign = `INFO->*`. -* ASSIGN ->(lv_assign) TO . -* IF <> ls_tab_test-info. -* cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). -* ENDIF. -* -* lv_assign = `DESCR->*`. -* ASSIGN ->(lv_assign) TO . -* IF <> ls_tab_test-descr. -* cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). -* ENDIF. -* -* UNASSIGN . -* lv_assign = `ID->*`. -* ASSIGN lo_data->(lv_assign) TO . -* IF IS INITIAL. -* cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). -* ENDIF. -* DATA(lv_id) = CONV string( ). -* -* DATA(lv_tab) = z2ui5_lcl_utility=>trans_any_2_json( t_tab ). -* -* DATA(lv_request) = `{"oUpdate":{"QUANTITY":"600", "T_TAB":` && lv_tab && `},"oSystem":{"ID": "` && lv_id && `"` && `,"CHECK_DEBUG_ACTIVE":true},"oEvent":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`. -* z2ui5_cl_http_handler=>client = VALUE #( body = lv_request ). -* lv_response = z2ui5_cl_http_handler=>http_post( ). -* -* CLEAR lo_data. -* /ui2/cl_json=>deserialize( EXPORTING json = lv_response -* CHANGING data = lo_data ). -* ENDMETHOD. -*ENDCLASS. + ENDMETHOD. +ENDCLASS. + + +CLASS ltcl_unit_04_deep_data IMPLEMENTATION. + METHOD z2ui5_if_app~main. + IF check_initialized = abap_false. + check_initialized = abap_true. + + t_tab = VALUE #( title = 'Peter' + descr = 'this is a description' + icon = 'sap-icon://account' + ( info = 'completed' ) + ( info = 'incompleted' ) ). + + ENDIF. + + CASE sv_status. + + WHEN `CHANGE`. + client->view_display( z2ui5_cl_xml_view=>factory( client )->shell( + )->page( title = 'abap2UI5 - First Example' + navbuttonpress = client->_event( 'BACK' ) + shownavbutton = abap_true + )->list( + " TODO: check spelling: Ouput (typo) -> Output (ABAP cleaner) + headertext = 'List Ouput' + items = client->_bind_edit( t_tab ) + mode = `SingleSelectMaster` + selectionchange = client->_event( 'SELCHANGE' ) + )->standard_list_item( title = '{TITLE}' + description = '{DESCR}' + icon = '{ICON}' + info = '{INFO}' + press = client->_event( 'TEST' ) + type = `Navigation` + selected = `{SELECTED}` + )->get_root( )->xml_get( ) ). + + WHEN OTHERS. + client->view_display( z2ui5_cl_xml_view=>factory( client )->shell( + )->page( title = 'abap2UI5 - First Example' + navbuttonpress = client->_event( 'BACK' ) + shownavbutton = abap_true + )->list( + " TODO: check spelling: Ouput (typo) -> Output (ABAP cleaner) + headertext = 'List Ouput' + items = client->_bind( t_tab ) + mode = `SingleSelectMaster` + selectionchange = client->_event( 'SELCHANGE' ) + )->standard_list_item( title = '{TITLE}' + description = '{DESCR}' + icon = '{ICON}' + info = '{INFO}' + press = client->_event( 'TEST' ) + type = `Navigation` + selected = `{SELECTED}` + )->get_root( )->xml_get( ) ). + + ENDCASE. + ENDMETHOD. + + METHOD test_app_deep_data. + + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_04_DEEP_DATA' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + + UNASSIGN . + FIELD-SYMBOLS TYPE STANDARD TABLE. + FIELD-SYMBOLS TYPE REF TO data. + DATA(lv_assign) = `OVIEWMODEL->T_TAB->*`. + ASSIGN lo_data->(lv_assign) TO . + ASSIGN [ 1 ] TO . + + DATA ls_tab_test TYPE ty_row. + ls_tab_test = VALUE #( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ). + + lv_assign = `TITLE->*`. + ASSIGN ->(lv_assign) TO . + IF <> ls_tab_test-title. + cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). + ENDIF. + + lv_assign = `INFO->*`. + ASSIGN ->(lv_assign) TO . + IF <> ls_tab_test-info. + cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). + ENDIF. + + lv_assign = `DESCR->*`. + ASSIGN ->(lv_assign) TO . + IF <> ls_tab_test-descr. + cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). + ENDIF. + ENDMETHOD. + + METHOD test_app_deep_data_change. + + sv_status = 'CHANGE'. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( + body = `` + path_info = 'LTCL_UNIT_04_DEEP_DATA' ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + + FIELD-SYMBOLS TYPE any. + + UNASSIGN . + FIELD-SYMBOLS TYPE STANDARD TABLE. + FIELD-SYMBOLS TYPE REF TO data. + DATA(lv_assign) = `OVIEWMODEL->OUPDATE->T_TAB->*`. + ASSIGN lo_data->(lv_assign) TO . + ASSIGN [ 1 ] TO . + + DATA ls_tab_test TYPE ty_row. + ls_tab_test = VALUE #( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ). + + lv_assign = `TITLE->*`. + ASSIGN ->(lv_assign) TO . + IF <> ls_tab_test-title. + cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). + ENDIF. + + lv_assign = `INFO->*`. + ASSIGN ->(lv_assign) TO . + IF <> ls_tab_test-info. + cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). + ENDIF. + + lv_assign = `DESCR->*`. + ASSIGN ->(lv_assign) TO . + IF <> ls_tab_test-descr. + cl_abap_unit_assert=>fail( msg = 'data binding - initial tab data wrong' quit = 5 ). + ENDIF. + + UNASSIGN . + lv_assign = `ID->*`. + ASSIGN lo_data->(lv_assign) TO . + IF IS INITIAL. + cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). + ENDIF. + DATA(lv_id) = CONV string( ). + + DATA(lv_tab) = z2ui5_lcl_utility=>trans_any_2_json( t_tab ). + + DATA(lv_request) = `{"oUpdate":{"QUANTITY":"600", "T_TAB":` && lv_tab && `},"oSystem":{"ID": "` && lv_id && `"` && `,"CHECK_DEBUG_ACTIVE":true},"oEvent":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`. + + lv_response = z2ui5_cl_http_handler=>http_post( body = lv_request ). + + CLEAR lo_data. + /ui2/cl_json=>deserialize( EXPORTING json = lv_response + CHANGING data = lo_data ). + ENDMETHOD. +ENDCLASS. diff --git a/src/z2ui5_cl_xml_view.clas.abap b/src/z2ui5_cl_xml_view.clas.abap index b00281be..e1fd6ef4 100644 --- a/src/z2ui5_cl_xml_view.clas.abap +++ b/src/z2ui5_cl_xml_view.clas.abap @@ -881,99 +881,7 @@ ENDCLASS. -CLASS z2ui5_cl_xml_view IMPLEMENTATION. - - - METHOD end_column_pages. - " todo, implement method - result = me. - ENDMETHOD. - - - METHOD mid_column_pages. - " todo, implement method - result = me. - ENDMETHOD. - - - METHOD begin_column_pages. - " todo, implement method - result = me. - ENDMETHOD. - - - METHOD tree_column. - result = _generic( name = `Column` - ns = `table` - t_prop = VALUE #( - ( n = `label` v = label ) - ( n = `hAlign` v = halign ) ) ). - ENDMETHOD. - - - METHOD tree_columns. - result = _generic( name = `columns` - ns = `table` ). - ENDMETHOD. - - - METHOD tree_table. - result = _generic( name = `TreeTable` - ns = `table` - t_prop = VALUE #( - ( n = `rows` v = rows ) - ( n = `selectionMode` v = selectionmode ) - ( n = `enableColumnReordering` v = enablecolumnreordering ) - ( n = `expandFirstLevel` v = expandfirstlevel ) - ( n = `columnSelect` v = columnselect ) - ( n = `rowSelectionChange` v = rowselectionchange ) - ( n = `selectionBehavior` v = selectionBehavior ) - ( n = `selectedIndex` v = selectedIndex ) ) ). - ENDMETHOD. - - - METHOD tree_template. - result = _generic( name = `template` - ns = `table` ). - ENDMETHOD. - - - METHOD filter_bar. - result = _generic( name = `FilterBar` - ns = 'fb' - t_prop = VALUE #( ( n = 'useToolbar' v = usetoolbar ) - ( n = 'search' v = search ) - ( n = 'filterChange' v = filterchange ) ) ). - ENDMETHOD. - - - METHOD filter_control. - result = _generic( name = `control` - ns = 'fb' ). - ENDMETHOD. - - - METHOD filter_group_item. - result = _generic( name = `FilterGroupItem` - ns = 'fb' - t_prop = VALUE #( ( n = 'name' v = name ) - ( n = 'label' v = label ) - ( n = 'groupName' v = groupname ) - ( n = 'visibleInFilterBar' v = visibleinfilterbar ) ) ). - ENDMETHOD. - - - METHOD filter_group_items. - result = _generic( name = `filterGroupItems` - ns = 'fb' ). - ENDMETHOD. - - - METHOD flexible_column_layout. - result = _generic( name = `FlexibleColumnLayout` - ns = `f` - t_prop = VALUE #( ( n = `layout` v = layout ) ) ). - ENDMETHOD. +CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION. METHOD actions. @@ -1016,6 +924,12 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. ENDMETHOD. + METHOD begin_column_pages. + " todo, implement method + result = me. + ENDMETHOD. + + METHOD blocks. result = _generic( name = `blocks` ns = `uxap` ). @@ -1339,6 +1253,12 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. ENDMETHOD. + METHOD end_column_pages. + " todo, implement method + result = me. + ENDMETHOD. + + METHOD expanded_content. result = _generic( name = `expandedContent` ns = ns ). @@ -1390,6 +1310,44 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. ENDMETHOD. + METHOD filter_bar. + result = _generic( name = `FilterBar` + ns = 'fb' + t_prop = VALUE #( ( n = 'useToolbar' v = usetoolbar ) + ( n = 'search' v = search ) + ( n = 'filterChange' v = filterchange ) ) ). + ENDMETHOD. + + + METHOD filter_control. + result = _generic( name = `control` + ns = 'fb' ). + ENDMETHOD. + + + METHOD filter_group_item. + result = _generic( name = `FilterGroupItem` + ns = 'fb' + t_prop = VALUE #( ( n = 'name' v = name ) + ( n = 'label' v = label ) + ( n = 'groupName' v = groupname ) + ( n = 'visibleInFilterBar' v = visibleinfilterbar ) ) ). + ENDMETHOD. + + + METHOD filter_group_items. + result = _generic( name = `filterGroupItems` + ns = 'fb' ). + ENDMETHOD. + + + METHOD flexible_column_layout. + result = _generic( name = `FlexibleColumnLayout` + ns = `f` + t_prop = VALUE #( ( n = `layout` v = layout ) ) ). + ENDMETHOD. + + METHOD flex_box. result = _generic( name = `FlexBox` t_prop = VALUE #( ( n = `class` v = class ) @@ -1769,6 +1727,12 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. ENDMETHOD. + METHOD mid_column_pages. + " todo, implement method + result = me. + ENDMETHOD. + + METHOD multi_input. result = _generic( name = `MultiInput` t_prop = VALUE #( ( n = `tokens` v = tokens ) @@ -2072,6 +2036,13 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. ENDMETHOD. + METHOD stringify. + + result = get_root( )->xml_get( ). + + ENDMETHOD. + + METHOD sub_header. result = _generic( `subHeader` ). ENDMETHOD. @@ -2215,6 +2186,42 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. ENDMETHOD. + METHOD tree_column. + result = _generic( name = `Column` + ns = `table` + t_prop = VALUE #( + ( n = `label` v = label ) + ( n = `hAlign` v = halign ) ) ). + ENDMETHOD. + + + METHOD tree_columns. + result = _generic( name = `columns` + ns = `table` ). + ENDMETHOD. + + + METHOD tree_table. + result = _generic( name = `TreeTable` + ns = `table` + t_prop = VALUE #( + ( n = `rows` v = rows ) + ( n = `selectionMode` v = selectionmode ) + ( n = `enableColumnReordering` v = enablecolumnreordering ) + ( n = `expandFirstLevel` v = expandfirstlevel ) + ( n = `columnSelect` v = columnselect ) + ( n = `rowSelectionChange` v = rowselectionchange ) + ( n = `selectionBehavior` v = selectionBehavior ) + ( n = `selectedIndex` v = selectedIndex ) ) ). + ENDMETHOD. + + + METHOD tree_template. + result = _generic( name = `template` + ns = `table` ). + ENDMETHOD. + + METHOD vbox. result = _generic( name = `VBox` t_prop = VALUE #( ( n = `height` v = height ) @@ -2283,11 +2290,4 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. m_root->m_last = result2. result = result2. ENDMETHOD. - - - METHOD stringify. - - result = get_root( )->xml_get( ). - - ENDMETHOD. ENDCLASS.