CLASS {{p}}t16_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 grade_and_area FOR TESTING. METHODS natural_fibre FOR TESTING. ENDCLASS. CLASS {{p}}t16_test IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_ROLL_GRADE' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_fabric TYPE STANDARD TABLE OF {{p}}fabric WITH EMPTY KEY. DATA lt_roll TYPE STANDARD TABLE OF {{p}}roll WITH EMPTY KEY. go_env->clear_doubles( ). lt_fabric = VALUE #( ( fabric = 'F1' fabric_name = 'COTTON POPLIN' fibre = 'C' ) ). lt_roll = VALUE #( ( roll_id = 'L01-R-0001' fabric = 'F1' length_cm = 123 width_cm = 45 defects = 0 ) ). go_env->insert_test_data( lt_fabric ). go_env->insert_test_data( lt_roll ). ENDMETHOD. METHOD grade_and_area. SELECT SINGLE grade, area_sqm, loom FROM {{p}}i_roll_grade WHERE roll_id = 'L01-R-0001' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_equals( exp = 'A' act = ls_row-grade ). cl_abap_unit_assert=>assert_equals( exp = 'L01' act = ls_row-loom ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '0.55' ) act = CONV decfloat34( ls_row-area_sqm ) ). ENDMETHOD. METHOD natural_fibre. SELECT SINGLE fibre_class FROM {{p}}i_roll_grade WHERE roll_id = 'L01-R-0001' INTO @DATA(lv_class). cl_abap_unit_assert=>assert_equals( exp = 'N' act = lv_class ). ENDMETHOD. ENDCLASS.