72 lines
3.3 KiB
ABAP
72 lines
3.3 KiB
ABAP
CLASS ltc_studio_summary DEFINITION FINAL FOR TESTING
|
|
DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
TYPES ty_fee TYPE p LENGTH 8 DECIMALS 2.
|
|
DATA mo_cut TYPE REF TO {{p}}studio_summary.
|
|
METHODS setup.
|
|
METHODS single_entry FOR TESTING.
|
|
METHODS ignores_invalid_fee FOR TESTING.
|
|
METHODS removes_duplicates FOR TESTING.
|
|
METHODS groups_two_studios FOR TESTING.
|
|
METHODS sorts_by_class_type FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_studio_summary IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}studio_summary( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD single_entry.
|
|
DATA lt_input TYPE {{p}}studio_summary=>tt_attendance.
|
|
lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA'
|
|
member_id = 'M0000001' fee = '12.50' ) ).
|
|
DATA(lt_result) = mo_cut->summarize( lt_input ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_fee( '12.50' )
|
|
act = lt_result[ 1 ]-total_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD ignores_invalid_fee.
|
|
DATA lt_input TYPE {{p}}studio_summary=>tt_attendance.
|
|
lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA'
|
|
member_id = 'M0000001' fee = '0.00' ) ).
|
|
DATA(lt_result) = mo_cut->summarize( lt_input ).
|
|
cl_abap_unit_assert=>assert_initial( act = lt_result ).
|
|
ENDMETHOD.
|
|
|
|
METHOD removes_duplicates.
|
|
DATA lt_input TYPE {{p}}studio_summary=>tt_attendance.
|
|
lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA'
|
|
member_id = 'M0000001' fee = '10.00' )
|
|
( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA'
|
|
member_id = 'M0000001' fee = '99.00' ) ).
|
|
DATA(lt_result) = mo_cut->summarize( lt_input ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_result[ 1 ]-class_count ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV ty_fee( '10.00' )
|
|
act = lt_result[ 1 ]-total_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD groups_two_studios.
|
|
DATA lt_input TYPE {{p}}studio_summary=>tt_attendance.
|
|
lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'YOGA'
|
|
member_id = 'M0000001' fee = '10.00' )
|
|
( studio = 'S002' class_id = 'C0000002' class_type = 'YOGA'
|
|
member_id = 'M0000002' fee = '15.00' ) ).
|
|
DATA(lt_result) = mo_cut->summarize( lt_input ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_result ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_result[ 1 ]-class_count ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_result[ 1 ]-member_count ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sorts_by_class_type.
|
|
DATA lt_input TYPE {{p}}studio_summary=>tt_attendance.
|
|
lt_input = VALUE #( ( studio = 'S001' class_id = 'C0000001' class_type = 'ZUMBA'
|
|
member_id = 'M0000001' fee = '10.00' )
|
|
( studio = 'S001' class_id = 'C0000002' class_type = 'AEROBIC'
|
|
member_id = 'M0000002' fee = '10.00' ) ).
|
|
DATA(lt_result) = mo_cut->summarize( lt_input ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'AEROBIC' act = lt_result[ 1 ]-class_type ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|