93 lines
3.9 KiB
ABAP
93 lines
3.9 KiB
ABAP
CLASS ltc_licence_merger DEFINITION FINAL FOR TESTING
|
|
DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}if_licence_merge.
|
|
METHODS setup.
|
|
METHODS merges_two_lists FOR TESTING.
|
|
METHODS ignores_invalid_rows FOR TESTING.
|
|
METHODS normalizes_keys FOR TESTING.
|
|
METHODS sorts_the_result FOR TESTING.
|
|
METHODS empty_input FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_licence_merger IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}licence_merger( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD merges_two_lists.
|
|
DATA(lt_primary) = VALUE {{p}}if_licence_merge=>tt_licences(
|
|
( product = 'ALPHA' cost_centre = '1000' seats = 5 unit_price = '100.00' ) ).
|
|
DATA(lt_secondary) = VALUE {{p}}if_licence_merge=>tt_licences(
|
|
( product = 'ALPHA' cost_centre = '1000' seats = 2 unit_price = '120.00' ) ).
|
|
|
|
DATA(lt_act) = mo_cut->merge( it_primary = lt_primary
|
|
it_secondary = lt_secondary ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_act ) ).
|
|
DATA(ls_row) = lt_act[ 1 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = 7 act = ls_row-seats ).
|
|
cl_abap_unit_assert=>assert_equals(
|
|
exp = CONV {{p}}if_licence_merge=>ty_price( '120.00' )
|
|
act = ls_row-unit_price ).
|
|
ENDMETHOD.
|
|
|
|
METHOD ignores_invalid_rows.
|
|
DATA(lt_primary) = VALUE {{p}}if_licence_merge=>tt_licences(
|
|
( product = '' cost_centre = '1000' seats = 5 unit_price = '10.00' )
|
|
( product = 'ALPHA' cost_centre = '1000' seats = 0 unit_price = '10.00' )
|
|
( product = 'BETA' cost_centre = '2000' seats = 2 unit_price = '3.00' ) ).
|
|
DATA(lt_secondary) = VALUE {{p}}if_licence_merge=>tt_licences( ).
|
|
|
|
DATA(lt_act) = mo_cut->merge( it_primary = lt_primary
|
|
it_secondary = lt_secondary ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_act ) ).
|
|
DATA(ls_row) = lt_act[ 1 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = 'BETA' act = ls_row-product ).
|
|
ENDMETHOD.
|
|
|
|
METHOD normalizes_keys.
|
|
DATA(lt_primary) = VALUE {{p}}if_licence_merge=>tt_licences(
|
|
( product = ' alpha ' cost_centre = '1000' seats = 1 unit_price = '2.00' ) ).
|
|
DATA(lt_secondary) = VALUE {{p}}if_licence_merge=>tt_licences(
|
|
( product = 'ALPHA' cost_centre = '1000' seats = 1 unit_price = '2.00' ) ).
|
|
|
|
DATA(lt_act) = mo_cut->merge( it_primary = lt_primary
|
|
it_secondary = lt_secondary ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_act ) ).
|
|
DATA(ls_row) = lt_act[ 1 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = 'ALPHA' act = ls_row-product ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_row-seats ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sorts_the_result.
|
|
DATA(lt_primary) = VALUE {{p}}if_licence_merge=>tt_licences(
|
|
( product = 'BETA' cost_centre = '2000' seats = 1 unit_price = '1.00' )
|
|
( product = 'ALPHA' cost_centre = '3000' seats = 1 unit_price = '1.00' )
|
|
( product = 'ALPHA' cost_centre = '1000' seats = 1 unit_price = '1.00' ) ).
|
|
DATA(lt_secondary) = VALUE {{p}}if_licence_merge=>tt_licences( ).
|
|
|
|
DATA(lt_act) = mo_cut->merge( it_primary = lt_primary
|
|
it_secondary = lt_secondary ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lines( lt_act ) ).
|
|
DATA(ls_row) = lt_act[ 1 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = 'ALPHA' act = ls_row-product ).
|
|
cl_abap_unit_assert=>assert_equals( exp = '1000' act = ls_row-cost_centre ).
|
|
ls_row = lt_act[ 3 ].
|
|
cl_abap_unit_assert=>assert_equals( exp = 'BETA' act = ls_row-product ).
|
|
ENDMETHOD.
|
|
|
|
METHOD empty_input.
|
|
DATA(lt_empty) = VALUE {{p}}if_licence_merge=>tt_licences( ).
|
|
|
|
DATA(lt_act) = mo_cut->merge( it_primary = lt_empty
|
|
it_secondary = lt_empty ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_act ) ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|