CLASS {{p}}t_rental_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. CLASS-DATA go_env TYPE REF TO if_cds_test_environment. CLASS-METHODS class_setup. CLASS-METHODS class_teardown. METHODS setup. METHODS total_of_one_rental FOR TESTING. ENDCLASS. CLASS {{p}}t_rental_test IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_RENTAL_TOTAL' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. go_env->clear_doubles( ). ENDMETHOD. METHOD total_of_one_rental. DATA lt_rental TYPE STANDARD TABLE OF {{p}}rental WITH EMPTY KEY. DATA lt_charge TYPE STANDARD TABLE OF {{p}}charge WITH EMPTY KEY. lt_rental = VALUE #( ( rental_id = 'A1' customer = 'K1' pickup_date = '20240101' ) ). lt_charge = VALUE #( ( rental_id = 'A1' charge_no = 1 customer = 'K1' charge_type = 'FUEL' amount = '12.00' ) ( rental_id = 'A1' charge_no = 2 customer = 'K1' charge_type = 'TOLL' amount = '3.00' ) ). go_env->insert_test_data( lt_rental ). go_env->insert_test_data( lt_charge ). SELECT SINGLE charge_count, total_amount FROM {{p}}i_rental_total WHERE rental_id = 'A1' INTO @DATA(ls_total). cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_total-charge_count ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '15.00' ) act = CONV decfloat34( ls_total-total_amount ) ). ENDMETHOD. ENDCLASS.