CLASS {{p}}t31_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 job_counts FOR TESTING. METHODS total_hours FOR TESTING. METHODS totals FOR TESTING. METHODS cancelled_excluded FOR TESTING. METHODS only_cancelled_site FOR TESTING. METHODS decimals FOR TESTING. ENDCLASS. CLASS {{p}}t31_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_SITE_COST' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_job TYPE STANDARD TABLE OF {{p}}cln_job WITH EMPTY KEY. go_env->clear_doubles( ). lt_job = VALUE #( ( job_id = 'J1' site_id = 'S1' duration = '10.00' hour_rate = '5.00' job_status = 'D' ) ( job_id = 'J2' site_id = 'S1' duration = '4.00' hour_rate = '5.00' job_status = 'D' ) ( job_id = 'J3' site_id = 'S2' duration = '2.00' hour_rate = '10.00' job_status = 'C' ) ( job_id = 'J4' site_id = 'S3' duration = '1.00' hour_rate = '100.00' job_status = 'D' ) ( job_id = 'J5' site_id = 'S3' duration = '3.00' hour_rate = '100.00' job_status = 'C' ) ( job_id = 'J6' site_id = 'S4' duration = '2.50' hour_rate = '1.50' job_status = 'O' ) ). go_env->insert_test_data( lt_job ). ENDMETHOD. METHOD job_counts. SELECT SINGLE job_count FROM {{p}}i_site_cost WHERE site_id = 'S1' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_count ). ENDMETHOD. METHOD total_hours. SELECT SINGLE total_hours FROM {{p}}i_site_cost WHERE site_id = 'S1' INTO @DATA(lv_hours). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '14.00' ) act = CONV decfloat34( lv_hours ) ). ENDMETHOD. METHOD totals. SELECT SINGLE total_cost FROM {{p}}i_site_cost WHERE site_id = 'S1' INTO @DATA(lv_cost). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '70.00' ) act = CONV decfloat34( lv_cost ) ). ENDMETHOD. METHOD cancelled_excluded. SELECT SINGLE total_cost FROM {{p}}i_site_cost WHERE site_id = 'S3' INTO @DATA(lv_cost). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '100.00' ) act = CONV decfloat34( lv_cost ) ). ENDMETHOD. METHOD only_cancelled_site. SELECT COUNT(*) FROM {{p}}i_site_cost INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rows ). ENDMETHOD. METHOD decimals. SELECT SINGLE total_cost FROM {{p}}i_site_cost WHERE site_id = 'S4' INTO @DATA(lv_cost). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '3.75' ) act = CONV decfloat34( lv_cost ) ). ENDMETHOD. ENDCLASS.