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 one_row_per_product FOR TESTING. METHODS batch_count_choc FOR TESTING. METHODS batch_count_dark FOR TESTING. METHODS total_bars_choc FOR TESTING. METHODS good_bars_choc FOR TESTING. METHODS scrap_bars_choc FOR TESTING. METHODS yield_choc FOR TESTING. METHODS yield_dark FOR TESTING. METHODS yield_milk FOR TESTING. ENDCLASS. CLASS {{p}}t41_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_PRODUCT_QUALITY' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_quality TYPE STANDARD TABLE OF {{p}}i_batch_quality WITH EMPTY KEY. go_env->clear_doubles( ). lt_quality = VALUE #( ( batch_id = 'B1' product = 'CHOC' site = '1000' prod_date = '20250101' bars_total = 1000 bars_good = 900 bars_scrap = 100 ) ( batch_id = 'B2' product = 'CHOC' site = '1000' prod_date = '20250102' bars_total = 1000 bars_good = 750 bars_scrap = 250 ) ( batch_id = 'B3' product = 'DARK' site = '2000' prod_date = '20250103' bars_total = 2000 bars_good = 1234 bars_scrap = 766 ) ( batch_id = 'B4' product = 'MILK' site = '1000' prod_date = '20250105' bars_total = 4 bars_good = 3 bars_scrap = 1 ) ). go_env->insert_test_data( lt_quality ). ENDMETHOD. METHOD one_row_per_product. DATA lv_rows TYPE i. SELECT COUNT(*) FROM {{p}}i_product_quality INTO @lv_rows. cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rows ). ENDMETHOD. METHOD batch_count_choc. DATA ls_row TYPE {{p}}i_product_quality. SELECT SINGLE * FROM {{p}}i_product_quality WHERE product = 'CHOC' INTO @ls_row. cl_abap_unit_assert=>assert_equals( exp = CONV i( 2 ) act = CONV i( ls_row-batch_count ) ). ENDMETHOD. METHOD batch_count_dark. DATA ls_row TYPE {{p}}i_product_quality. SELECT SINGLE * FROM {{p}}i_product_quality WHERE product = 'DARK' INTO @ls_row. cl_abap_unit_assert=>assert_equals( exp = CONV i( 1 ) act = CONV i( ls_row-batch_count ) ). ENDMETHOD. METHOD total_bars_choc. DATA ls_row TYPE {{p}}i_product_quality. SELECT SINGLE * FROM {{p}}i_product_quality WHERE product = 'CHOC' INTO @ls_row. cl_abap_unit_assert=>assert_equals( exp = CONV i( 2000 ) act = CONV i( ls_row-bars_total ) ). ENDMETHOD. METHOD good_bars_choc. DATA ls_row TYPE {{p}}i_product_quality. SELECT SINGLE * FROM {{p}}i_product_quality WHERE product = 'CHOC' INTO @ls_row. cl_abap_unit_assert=>assert_equals( exp = CONV i( 1650 ) act = CONV i( ls_row-bars_good ) ). ENDMETHOD. METHOD scrap_bars_choc. DATA ls_row TYPE {{p}}i_product_quality. SELECT SINGLE * FROM {{p}}i_product_quality WHERE product = 'CHOC' INTO @ls_row. cl_abap_unit_assert=>assert_equals( exp = CONV i( 350 ) act = CONV i( ls_row-bars_scrap ) ). ENDMETHOD. METHOD yield_choc. DATA ls_row TYPE {{p}}i_product_quality. SELECT SINGLE * FROM {{p}}i_product_quality WHERE product = 'CHOC' INTO @ls_row. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '82.50' ) act = CONV decfloat34( ls_row-yield_pct ) ). ENDMETHOD. METHOD yield_dark. DATA ls_row TYPE {{p}}i_product_quality. SELECT SINGLE * FROM {{p}}i_product_quality WHERE product = 'DARK' INTO @ls_row. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '61.70' ) act = CONV decfloat34( ls_row-yield_pct ) ). ENDMETHOD. METHOD yield_milk. DATA ls_row TYPE {{p}}i_product_quality. SELECT SINGLE * FROM {{p}}i_product_quality WHERE product = 'MILK' INTO @ls_row. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '75.00' ) act = CONV decfloat34( ls_row-yield_pct ) ). ENDMETHOD. ENDCLASS.