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 source_a_rows FOR TESTING. METHODS source_b_rows FOR TESTING. METHODS all_partners FOR TESTING. METHODS same_id_twice FOR TESTING. METHODS name_and_city FOR TESTING. METHODS only_in_a FOR TESTING. METHODS only_in_b FOR TESTING. ENDCLASS. CLASS {{p}}t16_hidden IMPLEMENTATION. METHOD class_setup. go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_PARTNER_ALL' ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. DATA lt_a TYPE STANDARD TABLE OF {{p}}part_a WITH EMPTY KEY. DATA lt_b TYPE STANDARD TABLE OF {{p}}part_b WITH EMPTY KEY. go_env->clear_doubles( ). lt_a = VALUE #( ( partner_id = 'P1' name = 'Alpha GmbH' city = 'Berlin' ) ( partner_id = 'P2' name = 'Beta AG' city = 'Hamburg' ) ). lt_b = VALUE #( ( partner_id = 'P2' name = 'Beta AG' city = 'Hamburg' ) ( partner_id = 'P3' name = 'Gamma KG' city = 'Munich' ) ). go_env->insert_test_data( lt_a ). go_env->insert_test_data( lt_b ). ENDMETHOD. METHOD source_a_rows. SELECT partner_id, source FROM {{p}}i_partner_all WHERE source = 'A' ORDER BY partner_id INTO TABLE @DATA(lt_rows). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_rows ) ). cl_abap_unit_assert=>assert_equals( exp = 'P1' act = lt_rows[ 1 ]-partner_id ). cl_abap_unit_assert=>assert_equals( exp = 'P2' act = lt_rows[ 2 ]-partner_id ). ENDMETHOD. METHOD source_b_rows. SELECT partner_id, source FROM {{p}}i_partner_all WHERE source = 'B' ORDER BY partner_id INTO TABLE @DATA(lt_rows). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_rows ) ). cl_abap_unit_assert=>assert_equals( exp = 'P2' act = lt_rows[ 1 ]-partner_id ). cl_abap_unit_assert=>assert_equals( exp = 'P3' act = lt_rows[ 2 ]-partner_id ). ENDMETHOD. METHOD all_partners. SELECT COUNT(*) FROM {{p}}i_partner_all INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_count ). ENDMETHOD. METHOD same_id_twice. SELECT source FROM {{p}}i_partner_all WHERE partner_id = 'P2' ORDER BY source INTO TABLE @DATA(lt_rows). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_rows ) ). cl_abap_unit_assert=>assert_equals( exp = 'A' act = lt_rows[ 1 ]-source ). cl_abap_unit_assert=>assert_equals( exp = 'B' act = lt_rows[ 2 ]-source ). ENDMETHOD. METHOD name_and_city. SELECT SINGLE name, city FROM {{p}}i_partner_all WHERE partner_id = 'P3' AND source = 'B' INTO @DATA(ls_row). cl_abap_unit_assert=>assert_equals( exp = 'Gamma KG' act = ls_row-name ). cl_abap_unit_assert=>assert_equals( exp = 'Munich' act = ls_row-city ). ENDMETHOD. METHOD only_in_a. SELECT source FROM {{p}}i_partner_all WHERE partner_id = 'P1' INTO TABLE @DATA(lt_rows). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_rows ) ). cl_abap_unit_assert=>assert_equals( exp = 'A' act = lt_rows[ 1 ]-source ). ENDMETHOD. METHOD only_in_b. SELECT source FROM {{p}}i_partner_all WHERE partner_id = 'P3' INTO TABLE @DATA(lt_rows). cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_rows ) ). cl_abap_unit_assert=>assert_equals( exp = 'B' act = lt_rows[ 1 ]-source ). ENDMETHOD. ENDCLASS.