CLASS {{p}}forge_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 open_jobs_only FOR TESTING. METHODS done_job_hidden FOR TESTING. METHODS job_without_article FOR TESTING. METHODS job_without_customer FOR TESTING. METHODS article_fields FOR TESTING. METHODS customer_fields FOR TESTING. METHODS heavy_effort FOR TESTING. METHODS light_effort FOR TESTING. METHODS exact_limit_light FOR TESTING. METHODS work_min_shown FOR TESTING. METHODS boundary_over_limit FOR TESTING. METHODS missing_article_no_row FOR TESTING. ENDCLASS. CLASS {{p}}forge_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_FORGE_JOB' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_job TYPE STANDARD TABLE OF {{p}}forgjob WITH EMPTY KEY. DATA lt_art TYPE STANDARD TABLE OF {{p}}forgart WITH EMPTY KEY. DATA lt_cus TYPE STANDARD TABLE OF {{p}}forgcus WITH EMPTY KEY. go_env->clear_doubles( ). lt_job = VALUE #( ( job_id = 'B1' article_id = 'W1' job_date = '20240301' work_min = 200 job_state = 'O' ) ( job_id = 'B2' article_id = 'W2' job_date = '20240302' work_min = 60 job_state = 'O' ) ( job_id = 'B3' article_id = 'W3' job_date = '20240303' work_min = 90 job_state = 'O' ) ( job_id = 'B4' article_id = 'W1' job_date = '20240304' work_min = 120 job_state = 'D' ) ( job_id = 'B5' article_id = 'W4' job_date = '20240305' work_min = 30 job_state = 'O' ) ( job_id = 'B6' article_id = 'W1' job_date = '20240306' work_min = 120 job_state = 'O' ) ( job_id = 'B7' article_id = 'W2' job_date = '20240307' work_min = 121 job_state = 'O' ) ( job_id = 'B8' article_id = 'W9' job_date = '20240308' work_min = 45 job_state = 'O' ) ). lt_art = VALUE #( ( article_id = 'W1' customer_id = 'K1' article_name = 'GATE' weight_kg = 40 ) ( article_id = 'W2' customer_id = 'K2' article_name = 'FENCE' weight_kg = 25 ) ( article_id = 'W4' customer_id = 'K9' article_name = 'RAILING' weight_kg = 15 ) ). lt_cus = VALUE #( ( customer_id = 'K1' customer_name = 'ALPHA' city = 'BREMEN' ) ( customer_id = 'K2' customer_name = 'BETA' city = 'KIEL' ) ( customer_id = '' customer_name = 'ORPHAN' city = 'NOWHERE' ) ). go_env->insert_test_data( lt_job ). go_env->insert_test_data( lt_art ). go_env->insert_test_data( lt_cus ). ENDMETHOD. METHOD open_jobs_only. SELECT COUNT(*) FROM {{p}}i_forge_job INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_count ). ENDMETHOD. METHOD done_job_hidden. SELECT COUNT(*) FROM {{p}}i_forge_job WHERE job_id = 'B4' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_count ). ENDMETHOD. METHOD job_without_article. SELECT COUNT(*) FROM {{p}}i_forge_job WHERE job_id = 'B3' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_count ). ENDMETHOD. METHOD job_without_customer. SELECT COUNT(*) FROM {{p}}i_forge_job WHERE job_id = 'B5' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_count ). ENDMETHOD. METHOD article_fields. SELECT SINGLE article_name, weight_kg FROM {{p}}i_forge_job WHERE job_id = 'B1' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_equals( exp = 'GATE' act = ls_row-article_name ). cl_abap_unit_assert=>assert_equals( exp = 40 act = ls_row-weight_kg ). ENDMETHOD. METHOD customer_fields. SELECT SINGLE customer_name, city FROM {{p}}i_forge_job WHERE job_id = 'B2' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_equals( exp = 'BETA' act = ls_row-customer_name ). cl_abap_unit_assert=>assert_equals( exp = 'KIEL' act = ls_row-city ). ENDMETHOD. METHOD heavy_effort. SELECT SINGLE effort FROM {{p}}i_forge_job WHERE job_id = 'B1' INTO @DATA(lv_effort). cl_abap_unit_assert=>assert_equals( exp = 'HEAVY' act = lv_effort ). ENDMETHOD. METHOD light_effort. SELECT SINGLE effort FROM {{p}}i_forge_job WHERE job_id = 'B2' INTO @DATA(lv_effort). cl_abap_unit_assert=>assert_equals( exp = 'LIGHT' act = lv_effort ). ENDMETHOD. METHOD exact_limit_light. SELECT SINGLE effort FROM {{p}}i_forge_job WHERE job_id = 'B6' INTO @DATA(lv_effort). cl_abap_unit_assert=>assert_equals( exp = 'LIGHT' act = lv_effort ). ENDMETHOD. METHOD work_min_shown. SELECT SINGLE work_min FROM {{p}}i_forge_job WHERE job_id = 'B6' INTO @DATA(lv_min). cl_abap_unit_assert=>assert_equals( exp = 120 act = lv_min ). ENDMETHOD. METHOD boundary_over_limit. SELECT SINGLE effort FROM {{p}}i_forge_job WHERE job_id = 'B7' INTO @DATA(lv_effort). cl_abap_unit_assert=>assert_equals( exp = 'HEAVY' act = lv_effort ). ENDMETHOD. METHOD missing_article_no_row. SELECT COUNT(*) FROM {{p}}i_forge_job WHERE job_id = 'B8' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_count ). ENDMETHOD. ENDCLASS.