136 lines
5.6 KiB
ABAP
136 lines
5.6 KiB
ABAP
CLASS {{p}}move_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
METHODS call
|
|
IMPORTING iv_order_no TYPE string
|
|
iv_move_date TYPE d
|
|
iv_work_hours TYPE decfloat34
|
|
iv_box_count TYPE i
|
|
iv_calc_mode TYPE string
|
|
EXPORTING ev_fee TYPE decfloat34
|
|
ev_msg TYPE string
|
|
ev_subrc TYPE sysubrc.
|
|
METHODS eco_base_fee FOR TESTING.
|
|
METHODS std_base_fee FOR TESTING.
|
|
METHODS box_fee_added FOR TESTING.
|
|
METHODS exp_surcharge FOR TESTING.
|
|
METHODS rounds_half_up FOR TESTING.
|
|
METHODS rejects_empty_order FOR TESTING.
|
|
METHODS rejects_empty_date FOR TESTING.
|
|
METHODS rejects_bad_hours FOR TESTING.
|
|
METHODS rejects_negative_boxes FOR TESTING.
|
|
METHODS rejects_unknown_mode FOR TESTING.
|
|
METHODS first_error_wins FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}move_hidden IMPLEMENTATION.
|
|
METHOD call.
|
|
ev_fee = 0.
|
|
ev_msg = ''.
|
|
CALL FUNCTION '{{P}}MOVE_FEE'
|
|
EXPORTING
|
|
iv_order_no = iv_order_no
|
|
iv_move_date = iv_move_date
|
|
iv_work_hours = iv_work_hours
|
|
iv_box_count = iv_box_count
|
|
iv_calc_mode = iv_calc_mode
|
|
IMPORTING
|
|
ev_fee = ev_fee
|
|
ev_msg = ev_msg
|
|
EXCEPTIONS
|
|
invalid_order = 1
|
|
invalid_date = 2
|
|
invalid_hours = 3
|
|
invalid_count = 4
|
|
unknown_mode = 5
|
|
OTHERS = 6.
|
|
ev_subrc = sy-subrc.
|
|
ENDMETHOD.
|
|
|
|
METHOD eco_base_fee.
|
|
call( EXPORTING iv_order_no = `A1` iv_move_date = '20250101'
|
|
iv_work_hours = 3 iv_box_count = 0 iv_calc_mode = `ECO`
|
|
IMPORTING ev_fee = DATA(lv_fee) ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 135 ) act = lv_fee ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `OK` act = lv_msg ).
|
|
ENDMETHOD.
|
|
|
|
METHOD std_base_fee.
|
|
call( EXPORTING iv_order_no = `A2` iv_move_date = '20250201'
|
|
iv_work_hours = 2 iv_box_count = 0 iv_calc_mode = `STD`
|
|
IMPORTING ev_fee = DATA(lv_fee) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 120 ) act = lv_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD box_fee_added.
|
|
call( EXPORTING iv_order_no = `A3` iv_move_date = '20250201'
|
|
iv_work_hours = 1 iv_box_count = 4 iv_calc_mode = `STD`
|
|
IMPORTING ev_fee = DATA(lv_fee) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 66 ) act = lv_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD exp_surcharge.
|
|
call( EXPORTING iv_order_no = `A4` iv_move_date = '20250201'
|
|
iv_work_hours = 1 iv_box_count = 2 iv_calc_mode = `EXP`
|
|
IMPORTING ev_fee = DATA(lv_fee) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '93.6' ) act = lv_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rounds_half_up.
|
|
call( EXPORTING iv_order_no = `A5` iv_move_date = '20250201'
|
|
iv_work_hours = '1.005' iv_box_count = 0 iv_calc_mode = `ECO`
|
|
IMPORTING ev_fee = DATA(lv_fee) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '45.23' ) act = lv_fee ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_empty_order.
|
|
call( EXPORTING iv_order_no = `` iv_move_date = '20250101'
|
|
iv_work_hours = 1 iv_box_count = 0 iv_calc_mode = `STD`
|
|
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Order number is missing` act = lv_msg ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_empty_date.
|
|
call( EXPORTING iv_order_no = `A6` iv_move_date = '00000000'
|
|
iv_work_hours = 1 iv_box_count = 0 iv_calc_mode = `STD`
|
|
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Move date is missing` act = lv_msg ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_bad_hours.
|
|
call( EXPORTING iv_order_no = `A7` iv_move_date = '20250101'
|
|
iv_work_hours = 0 iv_box_count = 0 iv_calc_mode = `STD`
|
|
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Work hours are not positive` act = lv_msg ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_negative_boxes.
|
|
call( EXPORTING iv_order_no = `A8` iv_move_date = '20250101'
|
|
iv_work_hours = 1 iv_box_count = -1 iv_calc_mode = `STD`
|
|
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Box count is negative` act = lv_msg ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_unknown_mode.
|
|
call( EXPORTING iv_order_no = `A9` iv_move_date = '20250101'
|
|
iv_work_hours = 1 iv_box_count = 0 iv_calc_mode = `FIX`
|
|
IMPORTING ev_msg = DATA(lv_msg) ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 5 act = lv_rc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Calculation mode is unknown` act = lv_msg ).
|
|
ENDMETHOD.
|
|
|
|
METHOD first_error_wins.
|
|
call( EXPORTING iv_order_no = `` iv_move_date = '00000000'
|
|
iv_work_hours = -2 iv_box_count = -1 iv_calc_mode = `FIX`
|
|
IMPORTING ev_subrc = DATA(lv_rc) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|