CLASS {{p}}t16_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 stay_rows FOR TESTING. METHODS hotel_rows FOR TESTING. METHODS guest_shown FOR TESTING. METHODS total_price FOR TESTING. METHODS price_decimals FOR TESTING. METHODS town_shown FOR TESTING. METHODS rating_shown FOR TESTING. METHODS unknown_hotel FOR TESTING. ENDCLASS. CLASS {{p}}t16_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_STAY' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_hotel TYPE STANDARD TABLE OF {{p}}hotel WITH EMPTY KEY. DATA lt_stay TYPE STANDARD TABLE OF {{p}}stay WITH EMPTY KEY. go_env->clear_doubles( ). lt_hotel = VALUE #( ( hotel_id = 'H1' city_name = 'HAMBURG' star_rating = 4 ) ( hotel_id = 'H2' city_name = 'MUNICH' star_rating = 5 ) ). lt_stay = VALUE #( ( stay_id = 'S1' hotel_id = 'H1' guest = 'ADA' nights = 3 price_per_night = '100.00' ) ( stay_id = 'S2' hotel_id = 'H1' guest = 'BOB' nights = 1 price_per_night = '99.99' ) ( stay_id = 'S3' hotel_id = 'H2' guest = 'CARA' nights = 2 price_per_night = '10.50' ) ( stay_id = 'S4' hotel_id = 'H9' guest = 'DAN' nights = 5 price_per_night = '1.00' ) ). go_env->insert_test_data( lt_hotel ). go_env->insert_test_data( lt_stay ). ENDMETHOD. METHOD stay_rows. SELECT COUNT(*) FROM {{p}}i_stay INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_rows ). ENDMETHOD. METHOD hotel_rows. SELECT COUNT(*) FROM {{p}}i_hotel INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rows ). ENDMETHOD. METHOD guest_shown. SELECT SINGLE guest FROM {{p}}i_stay WHERE stay_id = 'S2' INTO @DATA(lv_guest). cl_abap_unit_assert=>assert_equals( exp = 'BOB' act = lv_guest ). ENDMETHOD. METHOD total_price. SELECT SINGLE total_price FROM {{p}}i_stay WHERE stay_id = 'S1' INTO @DATA(lv_price). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '300.00' ) act = CONV decfloat34( lv_price ) ). ENDMETHOD. METHOD price_decimals. SELECT SINGLE total_price FROM {{p}}i_stay WHERE stay_id = 'S3' INTO @DATA(lv_price). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '21.00' ) act = CONV decfloat34( lv_price ) ). ENDMETHOD. METHOD town_shown. SELECT SINGLE city_name FROM {{p}}i_stay WHERE stay_id = 'S1' INTO @DATA(lv_town). cl_abap_unit_assert=>assert_equals( exp = 'HAMBURG' act = lv_town ). ENDMETHOD. METHOD rating_shown. SELECT SINGLE star_rating FROM {{p}}i_stay WHERE stay_id = 'S3' INTO @DATA(lv_rating). cl_abap_unit_assert=>assert_equals( exp = CONV i( 5 ) act = CONV i( lv_rating ) ). ENDMETHOD. METHOD unknown_hotel. SELECT SINGLE city_name, star_rating FROM {{p}}i_stay WHERE stay_id = 'S4' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_initial( ls_row-city_name ). cl_abap_unit_assert=>assert_initial( ls_row-star_rating ). ENDMETHOD. ENDCLASS.