CLASS {{p}}e_rental_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 short_low_season FOR TESTING. METHODS short_high_season FOR TESTING. METHODS free_day_at_seven FOR TESTING. METHODS free_day_group_a FOR TESTING. METHODS six_days_no_free FOR TESTING. METHODS long_group_c FOR TESTING. METHODS unknown_group FOR TESTING. METHODS unknown_season FOR TESTING. METHODS seven_days_group_b FOR TESTING. METHODS columns_shown FOR TESTING. METHODS all_rows_shown FOR TESTING. ENDCLASS. CLASS {{p}}e_rental_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_RENTAL_FEE' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_rental TYPE STANDARD TABLE OF {{p}}rental WITH EMPTY KEY. go_env->clear_doubles( ). lt_rental = VALUE #( ( rental_id = 'R01' car_group = 'A' season = 'L' rental_days = 3 ) ( rental_id = 'R02' car_group = 'B' season = 'H' rental_days = 2 ) ( rental_id = 'R03' car_group = 'C' season = 'L' rental_days = 7 ) ( rental_id = 'R04' car_group = 'A' season = 'H' rental_days = 10 ) ( rental_id = 'R05' car_group = 'B' season = 'L' rental_days = 6 ) ( rental_id = 'R06' car_group = 'C' season = 'H' rental_days = 14 ) ( rental_id = 'R07' car_group = 'X' season = 'L' rental_days = 1 ) ( rental_id = 'R08' car_group = 'A' season = 'X' rental_days = 1 ) ( rental_id = 'R09' car_group = 'B' season = 'H' rental_days = 7 ) ). go_env->insert_test_data( lt_rental ). ENDMETHOD. METHOD short_low_season. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R01' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '100.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD short_high_season. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R02' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '135.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD free_day_at_seven. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R03' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '505.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD free_day_group_a. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R04' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '334.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD six_days_no_free. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R05' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '315.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD long_group_c. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R06' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '1273.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD unknown_group. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R07' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '40.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD unknown_season. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R08' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '40.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD seven_days_group_b. SELECT SINGLE fee FROM {{p}}i_rental_fee WHERE rental_id = 'R09' INTO @DATA(lv_fee). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '375.00' ) act = CONV decfloat34( lv_fee ) ). ENDMETHOD. METHOD columns_shown. SELECT SINGLE rental_id, car_group, rental_days FROM {{p}}i_rental_fee WHERE rental_id = 'R01' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_equals( exp = 'R01' act = ls_row-rental_id ). cl_abap_unit_assert=>assert_equals( exp = 'A' act = ls_row-car_group ). cl_abap_unit_assert=>assert_equals( exp = 3 act = ls_row-rental_days ). ENDMETHOD. METHOD all_rows_shown. SELECT COUNT(*) FROM {{p}}i_rental_fee INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 9 act = lv_rows ). ENDMETHOD. ENDCLASS.