-
Notifications
You must be signed in to change notification settings - Fork 102
Description
Dear experts, when I was testing Unit test in the local version of the system, I found that after using the commit entities statement, the data was persistently stored in the DB, and the ROLLBACK ENTITIES statement did not take effect. May I ask if this is a BUG? The following is my test code. The problem occurs in the 'check_input_is_validate' method:
`"!@testing BDEF:ZI_UT_ROOT
CLASS ltc_ZI_UT_ROOT
DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
CLASS-DATA:cds_test_environment TYPE REF TO if_cds_test_environment,
sql_test_environment TYPE REF TO if_osql_test_environment.
CLASS-METHODS:
"! Instantiate class under test and setup test double frameworks
class_setup,
"! Destroy test environments and test doubles
class_teardown.
METHODS:
"! Reset test doubles
setup,
"! Reset transactional buffer
teardown,
"! Check input is validate
check_input_is_validate FOR TESTING,
"! Check input is invalid
check_input_is_invalid FOR TESTING,
"! Check returned features for instance with overall status 'Open'
check_setstatustoopen FOR TESTING,
"! Check returned features for instance with overall status 'Rejected'
get_features_rejected FOR TESTING,
"! Check action result is right
check_action_result FOR TESTING.
ENDCLASS.
CLASS ltc_ZI_UT_ROOT IMPLEMENTATION.
METHOD class_setup.
cds_test_environment = cl_cds_test_environment=>create( i_for_entity = 'ZI_UT_ROOT' ).
sql_test_environment = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( 'I_SUPPLIER_VH' ) ) ).
ENDMETHOD.
METHOD class_teardown.
cds_test_environment->destroy( ).
sql_test_environment->destroy( ).
ENDMETHOD.
METHOD check_setstatustoopen.
MODIFY ENTITIES OF zi_ut_root
ENTITY zi_ut_root
CREATE FIELDS ( Status )
WITH VALUE #( ( %cid = 'Root'
Status = '' ) )
MAPPED DATA(mapped)
FAILED DATA(faild)
REPORTED DATA(reported).
READ ENTITIES OF zi_ut_root
ENTITY zi_ut_root
ALL FIELDS WITH
CORRESPONDING #( mapped-zi_ut_root )
RESULT DATA(root_results).
cl_abap_unit_assert=>assert_equals( msg = 'Status should be O!' exp = 'O' act = root_results[ 1 ]-Status ).
ENDMETHOD.
METHOD get_features_rejected.
MODIFY ENTITIES OF zi_ut_root
ENTITY zi_ut_root
CREATE FIELDS ( Status )
WITH VALUE #( ( %cid = 'Root'
Status = 'R' ) )
MAPPED DATA(mapped)
FAILED DATA(faild)
REPORTED DATA(reported).
MODIFY ENTITIES OF zi_ut_root
ENTITY zi_ut_root
EXECUTE rejectOrder
FROM VALUE #( ( %tky = mapped-zi_ut_root[ 1 ]-%tky ) )
FAILED DATA(failed_action)
REPORTED DATA(reported_action).
cl_abap_unit_assert=>assert_equals( act = lines( failed_action-zi_ut_root ) exp = 1 msg = 'Should has error' ).
cl_abap_unit_assert=>assert_not_initial( act = failed_action-zi_ut_root[ 1 ]-Orderid ).
cl_abap_unit_assert=>assert_equals( exp = if_abap_behv=>mk-on
act = failed_action-zi_ut_root[ 1 ]-%action-rejectOrder
msg = 'rejectOrder action should be disabled').
ENDMETHOD.
METHOD setup.
cds_test_environment->clear_doubles( ).
sql_test_environment->clear_doubles( ).
ENDMETHOD.
METHOD check_action_result.
MODIFY ENTITIES OF zi_ut_root
ENTITY zi_ut_root
CREATE FIELDS ( TotalPrice )
WITH VALUE #( ( %cid = 'Root'
TotalPrice = '100' ) )
ENTITY zi_ut_root
EXECUTE deductDiscount
FROM VALUE #( ( %cid_ref = 'Root'
%param-discount_percent = '10' ) )
ENTITY zi_ut_root
EXECUTE acceptOrder
FROM VALUE #( ( %cid_ref = 'Root' ) )
MAPPED DATA(mapped)
FAILED DATA(faild)
REPORTED DATA(reported).
READ ENTITIES OF zi_ut_root
ENTITY zi_ut_root
ALL FIELDS WITH
CORRESPONDING #( mapped-zi_ut_root )
RESULT DATA(root_results).
cl_abap_unit_assert=>assert_equals( act = lines( root_results ) exp = 1 msg = 'Should has result' ).
cl_abap_unit_assert=>assert_equals( act = root_results[ 1 ]-TotalPrice exp = '90' msg = 'Total price should be 90' ).
cl_abap_unit_assert=>assert_equals( act = root_results[ 1 ]-Status exp = 'A' msg = 'Status should be A' ).
ENDMETHOD.
METHOD teardown.
ROLLBACK ENTITIES.
ENDMETHOD.
METHOD check_input_is_validate.
DATA vendor_mock_data TYPE STANDARD TABLE OF i_supplier_vh.
vendor_mock_data = VALUE #( ( Supplier = 'test' ) ).
sql_test_environment->insert_test_data( vendor_mock_data ).
MODIFY ENTITIES OF zi_ut_root
ENTITY zi_ut_root
CREATE FIELDS ( Status vendor BeginDate EndDate )
WITH VALUE #( ( %cid = 'Root'
Status = ''
vendor = 'test'
BeginDate = cl_abap_context_info=>get_system_date( ) - 10
EndDate = cl_abap_context_info=>get_system_date( ) + 10 ) )
MAPPED DATA(mapped)
FAILED DATA(faild)
REPORTED DATA(reported).
- COMMIT ENTITIES IN SIMULATION MODE RESPONSES
COMMIT ENTITIES RESPONSES
FAILED DATA(commit_failed)
REPORTED DATA(commit_reported).
cl_abap_unit_assert=>assert_initial( act = commit_failed msg = `Should't has error` ).
ENDMETHOD.
METHOD check_input_is_invalid.
DATA vendor_mock_data TYPE STANDARD TABLE OF i_supplier_vh.
vendor_mock_data = VALUE #( ( Supplier = 'test' ) ).
sql_test_environment->insert_test_data( vendor_mock_data ).
MODIFY ENTITIES OF zi_ut_root
ENTITY zi_ut_root
CREATE FIELDS ( Status vendor BeginDate EndDate )
WITH VALUE #( ( %cid = 'Root'
Status = 'X'
vendor = 'test_1'
BeginDate = cl_abap_context_info=>get_system_date( ) + 10
EndDate = cl_abap_context_info=>get_system_date( ) - 10 ) )
MAPPED DATA(mapped)
FAILED DATA(faild)
REPORTED DATA(reported).
COMMIT ENTITIES IN SIMULATION MODE RESPONSE OF zi_ut_root
FAILED DATA(commit_failed)
REPORTED DATA(commit_reported).
cl_abap_unit_assert=>assert_not_initial( act = commit_reported-zi_ut_root[ %element-status = if_abap_behv=>mk-on ]
msg = 'Status should be marked as error' ).
cl_abap_unit_assert=>assert_not_initial( act = commit_reported-zi_ut_root[ %element-vendor = if_abap_behv=>mk-on ]
msg = 'Vendor should be marked as error' ).
cl_abap_unit_assert=>assert_not_initial( act = commit_reported-zi_ut_root[ %element-BeginDate = if_abap_behv=>mk-on ]
msg = 'BeginDate should be marked as error' ).
cl_abap_unit_assert=>assert_not_initial( act = commit_reported-zi_ut_root[ %element-EndDate = if_abap_behv=>mk-on ]
msg = 'EndDate should be marked as error' ).
ENDMETHOD.
ENDCLASS.`