CDS View Unit Test with Association
The below is a CDS view on table SPFLI with association to SCARR table.
Data preview and then association navigation.
Class with local test class.
During creation of environment pass TEST_ASSOCIATION as true.
“ use this source file for your ABAP unit test classes
CLASS lcl_demo_flight_asso_test DEFINITION FINAL FOR TESTING DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
CLASS-DATA: lo_enviro TYPE REF TO if_cds_test_environment.
CLASS-METHODS: class_setup.
CLASS-METHODS: class_teardown.
METHODS: setup.
METHODS: teardown.
* TEST METHODS
METHODS: test_flight FOR TESTING.
METHODS: test_flight_asso FOR TESTING.
ENDCLASS.
CLASS lcl_demo_flight_asso_test IMPLEMENTATION.
METHOD class_setup.
cl_cds_test_environment=>create(
EXPORTING
i_for_entity = ‘ZDEMO_FLIGHT’ ” CDS VIEW NAME
test_associations = abap_true ” want to test the association
RECEIVING
r_result = lo_enviro ).
ENDMETHOD.
METHOD class_teardown.
lo_enviro->destroy( ).
ENDMETHOD.
METHOD setup.
* insert test data into component
DATA: lt_spfli TYPE TABLE OF spfli.
lt_spfli = VALUE #(
( mandt = sy-mandt carrid = ‘A1’ connid = ‘0001’ countryfr = ‘US’ countryto = ‘IN’ )
( mandt = sy-mandt carrid = ‘A1’ connid = ‘0002’ countryfr = ‘UK’ countryto = ‘IN’ )
( mandt = sy-mandt carrid = ‘A2’ connid = ‘0001’ countryfr = ‘US’ countryto = ‘IN’ )
( mandt = sy-mandt carrid = ‘A2’ connid = ‘0002’ countryfr = ‘UK’ countryto = ‘IN’ )
).
* insert the test data
lo_enviro->insert_test_data( EXPORTING i_data = lt_spfli ).
* insert test data into component association
DATA: lt_scarr TYPE TABLE OF scarr.
lt_scarr = VALUE #(
( mandt = sy-mandt carrid = ‘A1’ carrname = ‘Americal Airline1’ currcode = ‘USD’ url = ” )
( mandt = sy-mandt carrid = ‘A2’ carrname = ‘Americal Airline2’ currcode = ‘USD’ url = ” )
).
* insert the test data
lo_enviro->insert_test_data( EXPORTING i_data = lt_scarr ).
ENDMETHOD.
METHOD teardown.
lo_enviro->clear_doubles( ).
ENDMETHOD.
METHOD test_flight.
DATA: lt_exp_res TYPE TABLE OF zdemo_flight.
lt_exp_res = VALUE #(
( carrid = ‘A1’ connid = ‘0001’ countryfr = ‘US’ countryto = ‘IN’ )
( carrid = ‘A1’ connid = ‘0002’ countryfr = ‘UK’ countryto = ‘IN’ )
( carrid = ‘A2’ connid = ‘0001’ countryfr = ‘US’ countryto = ‘IN’ )
( carrid = ‘A2’ connid = ‘0002’ countryfr = ‘UK’ countryto = ‘IN’ )
).
” select on cds view
SELECT * FROM zdemo_flight INTO TABLE @DATA(lt_act_res).
cl_abap_unit_assert=>assert_equals(
EXPORTING
act = lines( lt_act_res )
exp = lines( lt_exp_res )
msg = |No. of lines must be 4| ).
ENDMETHOD.
METHOD test_flight_asso.
DATA: lt_exp_res TYPE TABLE OF scarr.
lt_exp_res = VALUE #(
( carrid = ‘A1’ carrname = ‘Americal Airline1’ currcode = ‘USD’ url = ” )
( carrid = ‘A2’ carrname = ‘Americal Airline2’ currcode = ‘USD’ url = ” )
).
” select on cds view association
SELECT * FROM zdemo_flight_scarr INTO TABLE @DATA(lt_act_res).
cl_abap_unit_assert=>assert_equals(
EXPORTING
act = lines( lt_act_res )
exp = 4
msg = |No. of lines must be 4| ).
ENDMETHOD.
ENDCLASS.