From 3189e5e3b3b13a40552fcf94f79eb59b70f0721b Mon Sep 17 00:00:00 2001 From: oblomov <102328295+oblomov-dev@users.noreply.github.com> Date: Wed, 26 Apr 2023 15:51:57 +0200 Subject: [PATCH] unit tests (#194) --- ...z2ui5_cl_http_handler.clas.locals_imp.abap | 3 +- ...2ui5_cl_http_handler.clas.testclasses.abap | 167 ++++++++++++++++++ 2 files changed, 169 insertions(+), 1 deletion(-) diff --git a/src/z2ui5_cl_http_handler.clas.locals_imp.abap b/src/z2ui5_cl_http_handler.clas.locals_imp.abap index 39f641f1..eb642152 100644 --- a/src/z2ui5_cl_http_handler.clas.locals_imp.abap +++ b/src/z2ui5_cl_http_handler.clas.locals_imp.abap @@ -1408,7 +1408,8 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION. lo_ui5_model->add_attribute_object( `oSystem` )->add_attribute( n = `ID` v = ms_db-id - )->add_attribute( n = `CHECK_DEBUG_ACTIVE` v = z2ui5_lcl_utility=>get_abap_2_json( abap_true ) apos_active = abap_false ). + " )->add_attribute( n = `CHECK_DEBUG_ACTIVE` v = z2ui5_lcl_utility=>get_abap_2_json( abap_true ) apos_active = abap_false + ). IF ms_next-t_after IS NOT INITIAL. DATA(lo_list) = lo_ui5_model->add_attribute_list( `oAfter` ). diff --git a/src/z2ui5_cl_http_handler.clas.testclasses.abap b/src/z2ui5_cl_http_handler.clas.testclasses.abap index 5aefcfbc..193a7876 100644 --- a/src/z2ui5_cl_http_handler.clas.testclasses.abap +++ b/src/z2ui5_cl_http_handler.clas.testclasses.abap @@ -2,10 +2,31 @@ CLASS ltcl_unit_test 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. + + 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. + + DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. + PRIVATE SECTION. METHODS test_json_attri FOR TESTING RAISING cx_static_check. METHODS test_json_object FOR TESTING RAISING cx_static_check. METHODS test_index_html FOR TESTING RAISING cx_static_check. + METHODS test_app FOR TESTING RAISING cx_static_check. ENDCLASS. @@ -52,4 +73,150 @@ CLASS ltcl_unit_test IMPLEMENTATION. ENDMETHOD. + METHOD z2ui5_if_app~main. + + IF check_initialized = abap_false. + check_initialized = abap_true. + product = 'tomato'. + quantity = '500'. + + t_tab = VALUE #( + ( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ) + ( title = 'Peter' info = 'incompleted' descr = 'this is a description' icon = 'sap-icon://account' ) + ). + + 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. + + 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_parent( )->get_parent( + )->list( + 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( ) ) ). + + + ENDMETHOD. + + METHOD test_app. + + z2ui5_cl_http_handler=>client = VALUE #( + t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_TEST' ) ) + ). + + 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 ). + + DATA lv_assign TYPE string. + FIELD-SYMBOLS TYPE any. + + UNASSIGN . + 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. + + UNASSIGN . + lv_assign = `VVIEW->*`. + ASSIGN lo_data->(lv_assign) TO . + = shift_left( ). + IF (9) <> `fail( msg = 'xml view - intital view wrong' quit = 5 ). + ENDIF. + + UNASSIGN . + lv_assign = `OSYSTEM->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( ). + + UNASSIGN . + FIELD-SYMBOLS TYPE STANDARD TABLE. + FIELD-SYMBOLS TYPE any. + lv_assign = `OVIEWMODEL->T_TAB->*`. + ASSIGN lo_data->(lv_assign) TO . + ASSIGN [ 1 ] TO . + + DATA ls_tab_test TYPE ltcl_unit_test=>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. + + DATA(lv_request) = `{"oUpdate":{"QUANTITY":"600"},"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 ). + + 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. + ENDCLASS.