CLASS {{p}}visit_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 fee_of_one_visit FOR TESTING. METHODS fee_of_two_hours FOR TESTING. METHODS fee_of_zero_hours FOR TESTING. METHODS cancelled_visit_hidden FOR TESTING. METHODS orphan_visit_hidden FOR TESTING. METHODS open_visits_shown FOR TESTING. METHODS area_name_shown FOR TESTING. METHODS guest_shown FOR TESTING. METHODS num_hours_shown FOR TESTING. ENDCLASS. CLASS {{p}}visit_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_VISIT_FEE' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_area TYPE STANDARD TABLE OF {{p}}area WITH EMPTY KEY. DATA lt_visit TYPE STANDARD TABLE OF {{p}}visit WITH EMPTY KEY. go_env->clear_doubles( ). lt_area = VALUE #( ( area_id = 'A1' area_name = 'Window' seats = 4 ) ( area_id = 'A2' area_name = 'Corner' seats = 2 ) ). lt_visit = VALUE #( ( visit_id = 'V1' area_id = 'A1' guest = 'ANNA' num_hours = 3 visit_state = 'O' ) ( visit_id = 'V2' area_id = 'A2' guest = 'BEN' num_hours = 2 visit_state = 'O' ) ( visit_id = 'V3' area_id = 'A1' guest = 'CARA' num_hours = 5 visit_state = 'C' ) ( visit_id = 'V4' area_id = 'A2' guest = 'DAN' num_hours = 0 visit_state = 'O' ) ( visit_id = 'V5' area_id = 'A9' guest = 'EVE' num_hours = 4 visit_state = 'O' ) ). go_env->insert_test_data( lt_area ). go_env->insert_test_data( lt_visit ). ENDMETHOD. METHOD fee_of_one_visit. SELECT SINGLE fee FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V1' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '22.50' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD fee_of_two_hours. SELECT SINGLE fee FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V2' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '15.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD fee_of_zero_hours. SELECT COUNT(*) FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V4' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rows ). SELECT SINGLE fee FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V4' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '0.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD cancelled_visit_hidden. SELECT COUNT(*) FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V3' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rows ). ENDMETHOD. METHOD orphan_visit_hidden. SELECT COUNT(*) FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V5' INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rows ). ENDMETHOD. METHOD open_visits_shown. SELECT COUNT(*) FROM {{p}}i_visit_fee( p_rate = '7.50' ) INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rows ). ENDMETHOD. METHOD area_name_shown. SELECT SINGLE area_name FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V1' INTO @DATA(lv_name). cl_abap_unit_assert=>assert_equals( exp = 'Window' act = lv_name ). ENDMETHOD. METHOD guest_shown. SELECT SINGLE guest FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V2' INTO @DATA(lv_guest). cl_abap_unit_assert=>assert_equals( exp = 'BEN' act = lv_guest ). ENDMETHOD. METHOD num_hours_shown. SELECT SINGLE num_hours FROM {{p}}i_visit_fee( p_rate = '7.50' ) WHERE visit_id = 'V1' INTO @DATA(lv_hours). cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_hours ). ENDMETHOD. ENDCLASS.