CLASS {{p}}t21_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 cost_of_project_one FOR TESTING. METHODS hours_of_project_one FOR TESTING. METHODS count_of_project_one FOR TESTING. METHODS no_active_assignment FOR TESTING. METHODS row_count FOR TESTING. METHODS over_budget_flag FOR TESTING. METHODS budget_not_exceeded FOR TESTING. METHODS project_name_shown FOR TESTING. ENDCLASS. CLASS {{p}}t21_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_PROJ_EFFORT' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_proj TYPE STANDARD TABLE OF {{p}}proj WITH EMPTY KEY. DATA lt_asgn TYPE STANDARD TABLE OF {{p}}asgn WITH EMPTY KEY. go_env->clear_doubles( ). lt_proj = VALUE #( ( proj_id = 'P1' proj_name = 'ALPHA' budget = '500.00' ) ( proj_id = 'P2' proj_name = 'BETA' budget = '100.00' ) ( proj_id = 'P3' proj_name = 'GAMMA' budget = '1000.00' ) ( proj_id = 'P4' proj_name = 'DELTA' budget = '50.00' ) ). lt_asgn = VALUE #( ( proj_id = 'P1' emp_id = 'E1' work_hours = 10 rate = '50.00' status = 'A' ) ( proj_id = 'P1' emp_id = 'E2' work_hours = 4 rate = '25.00' status = 'A' ) ( proj_id = 'P1' emp_id = 'E3' work_hours = 8 rate = '100.00' status = 'I' ) ( proj_id = 'P2' emp_id = 'E1' work_hours = 2 rate = '50.00' status = 'A' ) ( proj_id = 'P4' emp_id = 'E2' work_hours = 5 rate = '10.00' status = 'I' ) ). go_env->insert_test_data( lt_proj ). go_env->insert_test_data( lt_asgn ). ENDMETHOD. METHOD cost_of_project_one. SELECT SINGLE total_cost FROM {{p}}i_proj_effort WHERE proj_id = 'P1' INTO @DATA(lv_cost). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '600.00' ) act = CONV decfloat34( lv_cost ) ). ENDMETHOD. METHOD hours_of_project_one. SELECT SINGLE total_hours FROM {{p}}i_proj_effort WHERE proj_id = 'P1' INTO @DATA(lv_hours). cl_abap_unit_assert=>assert_equals( exp = CONV i( lv_hours ) act = 14 ). ENDMETHOD. METHOD count_of_project_one. SELECT SINGLE assign_count FROM {{p}}i_proj_effort WHERE proj_id = 'P1' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = CONV i( lv_count ) act = 2 ). ENDMETHOD. METHOD no_active_assignment. SELECT SINGLE proj_name FROM {{p}}i_proj_effort WHERE proj_id = 'P4' INTO @DATA(lv_name). cl_abap_unit_assert=>assert_equals( exp = 4 act = sy-subrc ). cl_abap_unit_assert=>assert_initial( lv_name ). ENDMETHOD. METHOD row_count. SELECT COUNT(*) FROM {{p}}i_proj_effort INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = CONV i( lv_rows ) act = 2 ). ENDMETHOD. METHOD over_budget_flag. SELECT SINGLE over_budget FROM {{p}}i_proj_effort WHERE proj_id = 'P1' INTO @DATA(lv_flag). cl_abap_unit_assert=>assert_equals( exp = 'X' act = lv_flag ). ENDMETHOD. METHOD budget_not_exceeded. SELECT SINGLE over_budget FROM {{p}}i_proj_effort WHERE proj_id = 'P2' INTO @DATA(lv_flag). cl_abap_unit_assert=>assert_equals( exp = 'N' act = lv_flag ). ENDMETHOD. METHOD project_name_shown. SELECT SINGLE proj_name FROM {{p}}i_proj_effort WHERE proj_id = 'P2' INTO @DATA(lv_name). cl_abap_unit_assert=>assert_equals( exp = 'BETA' act = lv_name ). ENDMETHOD. ENDCLASS.