CLASS {{p}}t41_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 album_totals FOR TESTING. METHODS track_counts FOR TESTING. METHODS album_without_tracks FOR TESTING. METHODS title_shown FOR TESTING. METHODS longest_track FOR TESTING. METHODS single_track_album FOR TESTING. ENDCLASS. CLASS {{p}}t41_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_ALBUM_STATS' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_album TYPE STANDARD TABLE OF {{p}}album WITH EMPTY KEY. DATA lt_track TYPE STANDARD TABLE OF {{p}}track WITH EMPTY KEY. go_env->clear_doubles( ). lt_album = VALUE #( ( album_id = 'A1' title = 'BLUE' artist = 'ONE' ) ( album_id = 'A2' title = 'RED' artist = 'TWO' ) ( album_id = 'A3' title = 'GREEN' artist = 'THREE' ) ). lt_track = VALUE #( ( album_id = 'A1' track_no = 1 play_sec = 200 genre = 'ROCK' ) ( album_id = 'A1' track_no = 2 play_sec = 130 genre = 'POP' ) ( album_id = 'A1' track_no = 3 play_sec = 300 genre = 'JAZZ' ) ( album_id = 'A2' track_no = 1 play_sec = 45 genre = 'POP' ) ). go_env->insert_test_data( lt_album ). go_env->insert_test_data( lt_track ). ENDMETHOD. METHOD album_totals. SELECT SINGLE total_seconds FROM {{p}}i_album_stats WHERE album_id = 'A1' INTO @DATA(lv_total). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 630 ) act = CONV decfloat34( lv_total ) ). ENDMETHOD. METHOD track_counts. SELECT SINGLE track_count FROM {{p}}i_album_stats WHERE album_id = 'A1' INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = CONV decfloat34( lv_count ) ). ENDMETHOD. METHOD album_without_tracks. SELECT COUNT(*) FROM {{p}}i_album_stats INTO @DATA(lv_rows). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 2 ) act = CONV decfloat34( lv_rows ) ). ENDMETHOD. METHOD title_shown. SELECT SINGLE title FROM {{p}}i_album_stats WHERE album_id = 'A2' INTO @DATA(lv_title). cl_abap_unit_assert=>assert_equals( exp = 'RED' act = lv_title ). ENDMETHOD. METHOD longest_track. SELECT SINGLE longest_seconds FROM {{p}}i_album_stats WHERE album_id = 'A1' INTO @DATA(lv_max). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 300 ) act = CONV decfloat34( lv_max ) ). ENDMETHOD. METHOD single_track_album. SELECT SINGLE track_count, total_seconds, longest_seconds FROM {{p}}i_album_stats WHERE album_id = 'A2' INTO @DATA(ls_stat). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = CONV decfloat34( ls_stat-track_count ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 45 ) act = CONV decfloat34( ls_stat-total_seconds ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 45 ) act = CONV decfloat34( ls_stat-longest_seconds ) ). ENDMETHOD. ENDCLASS.