CLASS {{p}}t41_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 order_with_customer FOR TESTING. METHODS order_no_customer FOR TESTING. METHODS all_orders FOR TESTING. METHODS country_shown FOR TESTING. METHODS amount_shown FOR TESTING. METHODS key_stable FOR TESTING. METHODS empty_name_kept FOR TESTING. METHODS empty_country_kept FOR TESTING. METHODS shared_customer FOR TESTING. METHODS class_high FOR TESTING. METHODS class_medium FOR TESTING. METHODS class_low FOR TESTING. ENDCLASS. CLASS {{p}}t41_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_SO_CUST' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_so TYPE STANDARD TABLE OF {{p}}so WITH EMPTY KEY. DATA lt_cust TYPE STANDARD TABLE OF {{p}}cust WITH EMPTY KEY. go_env->clear_doubles( ). lt_cust = VALUE #( ( customer_id = 'C1' name = 'Alpha Corp' country = 'DE' ) ( customer_id = 'C2' name = 'Beta Inc' country = 'US' ) ( customer_id = 'C3' name = '' country = 'FR' ) ( customer_id = 'C4' name = 'Delta Ltd' country = '' ) ). lt_so = VALUE #( ( order_id = 'O1' customer_id = 'C1' order_date = '20240101' net_amount = '1000.00' ) ( order_id = 'O2' customer_id = 'C2' order_date = '20240102' net_amount = '200.00' ) ( order_id = 'O3' customer_id = '' order_date = '20240103' net_amount = '300.00' ) ( order_id = 'O4' customer_id = 'C1' order_date = '20240104' net_amount = '123.45' ) ( order_id = 'O5' customer_id = 'C3' order_date = '20240105' net_amount = '500.00' ) ( order_id = 'O6' customer_id = 'C4' order_date = '20240106' net_amount = '600.00' ) ( order_id = 'O7' customer_id = 'C1' order_date = '20240107' net_amount = '100.00' ) ( order_id = 'O8' customer_id = 'C2' order_date = '20240108' net_amount = '99.99' ) ( order_id = 'O9' customer_id = 'C1' order_date = '20240109' net_amount = '999.99' ) ). go_env->insert_test_data( lt_cust ). go_env->insert_test_data( lt_so ). ENDMETHOD. METHOD order_with_customer. SELECT SINGLE customer_name, country, net_amount, amount_class FROM {{p}}i_so_cust WHERE order_id = 'O1' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_equals( exp = 'Alpha Corp' act = ls_row-customer_name ). cl_abap_unit_assert=>assert_equals( exp = 'DE' act = ls_row-country ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '1000.00' ) act = CONV decfloat34( ls_row-net_amount ) ). cl_abap_unit_assert=>assert_equals( exp = 'H' act = ls_row-amount_class ). ENDMETHOD. METHOD order_no_customer. SELECT COUNT(*) FROM {{p}}i_so_cust WHERE order_id = 'O3' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_count ). SELECT SINGLE customer_name, country FROM {{p}}i_so_cust WHERE order_id = 'O3' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_initial( ls_row-customer_name ). cl_abap_unit_assert=>assert_initial( ls_row-country ). ENDMETHOD. METHOD all_orders. SELECT COUNT(*) FROM {{p}}i_so_cust INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 9 act = lv_count ). ENDMETHOD. METHOD country_shown. SELECT SINGLE country FROM {{p}}i_so_cust WHERE order_id = 'O2' INTO @DATA(lv_country). cl_abap_unit_assert=>assert_equals( exp = 'US' act = lv_country ). ENDMETHOD. METHOD amount_shown. SELECT SINGLE net_amount FROM {{p}}i_so_cust WHERE order_id = 'O2' INTO @DATA(lv_amount). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '200.00' ) act = CONV decfloat34( lv_amount ) ). SELECT SINGLE net_amount FROM {{p}}i_so_cust WHERE order_id = 'O4' INTO @DATA(lv_dec). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '123.45' ) act = CONV decfloat34( lv_dec ) ). ENDMETHOD. METHOD key_stable. SELECT SINGLE order_id FROM {{p}}i_so_cust WHERE order_id = 'O1' INTO @DATA(lv_id). cl_abap_unit_assert=>assert_equals( exp = 'O1' act = lv_id ). ENDMETHOD. METHOD empty_name_kept. SELECT COUNT(*) FROM {{p}}i_so_cust WHERE order_id = 'O5' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_count ). SELECT SINGLE customer_name, country FROM {{p}}i_so_cust WHERE order_id = 'O5' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_initial( ls_row-customer_name ). cl_abap_unit_assert=>assert_equals( exp = 'FR' act = ls_row-country ). ENDMETHOD. METHOD empty_country_kept. SELECT COUNT(*) FROM {{p}}i_so_cust WHERE order_id = 'O6' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_count ). SELECT SINGLE customer_name, country FROM {{p}}i_so_cust WHERE order_id = 'O6' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_equals( exp = 'Delta Ltd' act = ls_row-customer_name ). cl_abap_unit_assert=>assert_initial( ls_row-country ). ENDMETHOD. METHOD shared_customer. SELECT COUNT(*) FROM {{p}}i_so_cust WHERE customer_name = 'Alpha Corp' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_count ). SELECT SINGLE country FROM {{p}}i_so_cust WHERE order_id = 'O4' INTO @DATA(lv_country). cl_abap_unit_assert=>assert_equals( exp = 'DE' act = lv_country ). ENDMETHOD. METHOD class_high. SELECT SINGLE amount_class FROM {{p}}i_so_cust WHERE order_id = 'O1' INTO @DATA(lv_class). cl_abap_unit_assert=>assert_equals( exp = 'H' act = lv_class ). ENDMETHOD. METHOD class_medium. SELECT SINGLE amount_class FROM {{p}}i_so_cust WHERE order_id = 'O7' INTO @DATA(lv_lo). cl_abap_unit_assert=>assert_equals( exp = 'M' act = lv_lo ). SELECT SINGLE amount_class FROM {{p}}i_so_cust WHERE order_id = 'O9' INTO @DATA(lv_hi). cl_abap_unit_assert=>assert_equals( exp = 'M' act = lv_hi ). ENDMETHOD. METHOD class_low. SELECT SINGLE amount_class FROM {{p}}i_so_cust WHERE order_id = 'O8' INTO @DATA(lv_class). cl_abap_unit_assert=>assert_equals( exp = 'L' act = lv_class ). ENDMETHOD. ENDCLASS.