Skip to content

unti test can not roll back double test data in On-Premise #28

@MrMengT

Description

@MrMengT

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.`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions