89 lines
3.8 KiB
ABAP
89 lines
3.8 KiB
ABAP
CLASS ltc_climb_pricer DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}climb_pricer.
|
|
METHODS setup.
|
|
METHODS assert_amount
|
|
IMPORTING iv_expected TYPE {{p}}climb_pricer=>ty_amount
|
|
iv_actual TYPE {{p}}climb_pricer=>ty_amount
|
|
iv_text TYPE string.
|
|
METHODS adult_booking FOR TESTING.
|
|
METHODS youth_booking FOR TESTING.
|
|
METHODS family_booking FOR TESTING.
|
|
METHODS equipment_surcharge FOR TESTING.
|
|
METHODS group_surcharge FOR TESTING.
|
|
METHODS member_discount FOR TESTING.
|
|
METHODS loyalty_discount FOR TESTING.
|
|
METHODS unknown_entry FOR TESTING.
|
|
METHODS invalid_hours FOR TESTING.
|
|
METHODS invalid_climbers FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_climb_pricer IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}climb_pricer( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD assert_amount.
|
|
cl_abap_unit_assert=>assert_equals( exp = iv_expected act = iv_actual msg = iv_text ).
|
|
ENDMETHOD.
|
|
|
|
METHOD adult_booking.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'A' hours = 2 climbers = 2 ) ).
|
|
assert_amount( iv_expected = '36.00' iv_actual = ls_result-base iv_text = 'base' ).
|
|
assert_amount( iv_expected = '36.00' iv_actual = ls_result-total iv_text = 'total' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD youth_booking.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'Y' hours = 1 climbers = 1 ) ).
|
|
assert_amount( iv_expected = '6.00' iv_actual = ls_result-base iv_text = 'base' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD family_booking.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'F' hours = 3 climbers = 4 ) ).
|
|
assert_amount( iv_expected = '84.00' iv_actual = ls_result-base iv_text = 'base' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD equipment_surcharge.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'A' hours = 2 climbers = 3
|
|
equipment = abap_true ) ).
|
|
assert_amount( iv_expected = '12.00' iv_actual = ls_result-surcharge iv_text = 'surcharge' ).
|
|
assert_amount( iv_expected = '66.00' iv_actual = ls_result-total iv_text = 'total' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD group_surcharge.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'A' hours = 1 climbers = 6 ) ).
|
|
assert_amount( iv_expected = '15.00' iv_actual = ls_result-surcharge iv_text = 'surcharge' ).
|
|
assert_amount( iv_expected = '69.00' iv_actual = ls_result-total iv_text = 'total' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD member_discount.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'A' hours = 2 climbers = 2
|
|
member = abap_true ) ).
|
|
assert_amount( iv_expected = '5.40' iv_actual = ls_result-discount iv_text = 'discount' ).
|
|
assert_amount( iv_expected = '30.60' iv_actual = ls_result-total iv_text = 'total' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD loyalty_discount.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'A' hours = 2 climbers = 2
|
|
visits = 10 ) ).
|
|
assert_amount( iv_expected = '7.20' iv_actual = ls_result-discount iv_text = 'discount' ).
|
|
assert_amount( iv_expected = '28.80' iv_actual = ls_result-total iv_text = 'total' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD unknown_entry.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'X' hours = 2 climbers = 2 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'UNKNOWN ENTRY TYPE' act = ls_result-message ).
|
|
ENDMETHOD.
|
|
|
|
METHOD invalid_hours.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'A' hours = 7 climbers = 2 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'INVALID HOURS' act = ls_result-message ).
|
|
ENDMETHOD.
|
|
|
|
METHOD invalid_climbers.
|
|
DATA(ls_result) = mo_cut->price( VALUE #( entry_type = 'A' hours = 2 climbers = 11 ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'INVALID CLIMBERS' act = ls_result-message ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|