CLASS {{p}}t15_hidden 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 totals FOR TESTING. METHODS item_counts FOR TESTING. METHODS order_without_items FOR TESTING. METHODS customer_shown FOR TESTING. METHODS decimals FOR TESTING. ENDCLASS. CLASS {{p}}t15_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_ORDER_TOTAL' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_ord TYPE STANDARD TABLE OF {{p}}ord WITH EMPTY KEY. DATA lt_itm TYPE STANDARD TABLE OF {{p}}itm WITH EMPTY KEY. go_env->clear_doubles( ). lt_ord = VALUE #( ( order_id = 'O1' customer = 'ALPHA' ) ( order_id = 'O2' customer = 'BETA' ) ( order_id = 'O3' customer = 'GAMMA' ) ). lt_itm = VALUE #( ( order_id = 'O1' item_no = 1 quantity = 3 price = '10.00' ) ( order_id = 'O1' item_no = 2 quantity = 1 price = '2.50' ) ( order_id = 'O1' item_no = 3 quantity = 4 price = '0.25' ) ( order_id = 'O2' item_no = 1 quantity = 10 price = '1.99' ) ). go_env->insert_test_data( lt_ord ). go_env->insert_test_data( lt_itm ). ENDMETHOD. METHOD totals. SELECT SINGLE total_amount FROM {{p}}i_order_total WHERE order_id = 'O1' INTO @DATA(lv_total). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '33.50' ) act = CONV decfloat34( lv_total ) ). ENDMETHOD. METHOD item_counts. SELECT SINGLE item_count FROM {{p}}i_order_total WHERE order_id = 'O1' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_count ). ENDMETHOD. METHOD order_without_items. SELECT COUNT(*) FROM {{p}}i_order_total INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rows ). ENDMETHOD. METHOD customer_shown. SELECT SINGLE customer FROM {{p}}i_order_total WHERE order_id = 'O2' INTO @DATA(lv_customer). cl_abap_unit_assert=>assert_equals( exp = 'BETA' act = lv_customer ). ENDMETHOD. METHOD decimals. SELECT SINGLE total_amount FROM {{p}}i_order_total WHERE order_id = 'O2' INTO @DATA(lv_total). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '19.90' ) act = CONV decfloat34( lv_total ) ). ENDMETHOD. ENDCLASS.