CLASS {{p}}visit_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 fee_of_one_visit FOR TESTING. METHODS fee_for_another_rate FOR TESTING. ENDCLASS. CLASS {{p}}visit_test IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_VISIT_FEE' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_area TYPE STANDARD TABLE OF {{p}}area WITH EMPTY KEY. DATA lt_visit TYPE STANDARD TABLE OF {{p}}visit WITH EMPTY KEY. go_env->clear_doubles( ). lt_area = VALUE #( ( area_id = 'A1' area_name = 'Window' seats = 4 ) ). lt_visit = VALUE #( ( visit_id = 'V1' area_id = 'A1' guest = 'ANNA' num_hours = 3 visit_state = 'O' ) ). go_env->insert_test_data( lt_area ). go_env->insert_test_data( lt_visit ). ENDMETHOD. METHOD fee_of_one_visit. SELECT SINGLE fee FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V1' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '22.50' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD fee_for_another_rate. SELECT SINGLE fee FROM {{p}}i_visit_fee( p_rate = '10.00' ) WHERE visit_id = 'V1' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '30.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. ENDCLASS.