144 lines
4.6 KiB
ABAP
144 lines
4.6 KiB
ABAP
CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
TYPES ty_reason TYPE c LENGTH 10.
|
|
|
|
DATA mo_cut TYPE REF TO {{p}}return_checker.
|
|
DATA mo_env TYPE REF TO if_osql_test_environment.
|
|
|
|
METHODS setup.
|
|
METHODS teardown.
|
|
METHODS valid_return
|
|
RETURNING VALUE(rs_return) TYPE {{p}}return_checker=>ty_return_data.
|
|
METHODS expect_reason
|
|
IMPORTING is_data TYPE {{p}}return_checker=>ty_return_data
|
|
iv_reason TYPE ty_reason.
|
|
|
|
METHODS ok_return FOR TESTING.
|
|
METHODS rejects_no_data FOR TESTING.
|
|
METHODS rejects_empty_date FOR TESTING.
|
|
METHODS rejects_date_order FOR TESTING.
|
|
METHODS rejects_mileage FOR TESTING.
|
|
METHODS rejects_fuel FOR TESTING.
|
|
METHODS rejects_damage FOR TESTING.
|
|
METHODS rejects_unknown FOR TESTING.
|
|
METHODS rejects_too_long FOR TESTING.
|
|
METHODS accepts_max_duration FOR TESTING.
|
|
METHODS checks_data_before_master FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}t02_hidden IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_env = cl_osql_test_environment=>create( VALUE #( ( '{{P}}VEHICLE' ) ) ).
|
|
DATA lt_vehicle TYPE STANDARD TABLE OF {{p}}vehicle WITH EMPTY KEY.
|
|
lt_vehicle = VALUE #( ( mandt = sy-mandt
|
|
vehicle_id = 'V-1001'
|
|
max_days = 5 )
|
|
( mandt = sy-mandt
|
|
vehicle_id = 'V-1002'
|
|
max_days = 30 ) ).
|
|
mo_env->insert_test_data( lt_vehicle ).
|
|
mo_cut = NEW {{p}}return_checker( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD teardown.
|
|
mo_env->destroy( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD valid_return.
|
|
rs_return = VALUE #( rental_id = 'R-4711'
|
|
vehicle_id = 'V-1001'
|
|
start_date = '20240101'
|
|
return_date = '20240103'
|
|
start_mileage = 10000
|
|
end_mileage = 10250
|
|
fuel_percent = 80
|
|
damage_code = ''
|
|
is_damaged = abap_false ).
|
|
ENDMETHOD.
|
|
|
|
METHOD expect_reason.
|
|
TRY.
|
|
mo_cut->check( is_data ).
|
|
cl_abap_unit_assert=>fail( msg = |no exception, expected { iv_reason }| ).
|
|
CATCH {{p}}cx_return_error INTO DATA(lo_error).
|
|
cl_abap_unit_assert=>assert_equals( exp = iv_reason act = lo_error->mv_reason ).
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD ok_return.
|
|
TRY.
|
|
mo_cut->check( valid_return( ) ).
|
|
CATCH {{p}}cx_return_error INTO DATA(lo_error).
|
|
cl_abap_unit_assert=>fail( msg = |unexpected reason { lo_error->mv_reason }| ).
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_no_data.
|
|
DATA(ls_return) = valid_return( ).
|
|
CLEAR ls_return-rental_id.
|
|
expect_reason( is_data = ls_return iv_reason = 'NO_DATA' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_empty_date.
|
|
DATA(ls_return) = valid_return( ).
|
|
CLEAR ls_return-start_date.
|
|
expect_reason( is_data = ls_return iv_reason = 'NO_DATA' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_date_order.
|
|
DATA(ls_return) = valid_return( ).
|
|
ls_return-return_date = '20231231'.
|
|
expect_reason( is_data = ls_return iv_reason = 'DATE_ORDER' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_mileage.
|
|
DATA(ls_return) = valid_return( ).
|
|
ls_return-end_mileage = ls_return-start_mileage - 1.
|
|
expect_reason( is_data = ls_return iv_reason = 'MILEAGE' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_fuel.
|
|
DATA(ls_return) = valid_return( ).
|
|
ls_return-fuel_percent = 101.
|
|
expect_reason( is_data = ls_return iv_reason = 'FUEL' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_damage.
|
|
DATA(ls_return) = valid_return( ).
|
|
ls_return-is_damaged = abap_true.
|
|
CLEAR ls_return-damage_code.
|
|
expect_reason( is_data = ls_return iv_reason = 'DAMAGE' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_unknown.
|
|
DATA(ls_return) = valid_return( ).
|
|
ls_return-vehicle_id = 'V-9999'.
|
|
expect_reason( is_data = ls_return iv_reason = 'UNKNOWN' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rejects_too_long.
|
|
DATA(ls_return) = valid_return( ).
|
|
ls_return-return_date = '20240110'.
|
|
expect_reason( is_data = ls_return iv_reason = 'TOO_LONG' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD accepts_max_duration.
|
|
DATA(ls_return) = valid_return( ).
|
|
ls_return-return_date = '20240105'.
|
|
TRY.
|
|
mo_cut->check( ls_return ).
|
|
CATCH {{p}}cx_return_error INTO DATA(lo_error).
|
|
cl_abap_unit_assert=>fail( msg = |unexpected reason { lo_error->mv_reason }| ).
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD checks_data_before_master.
|
|
DATA(ls_return) = valid_return( ).
|
|
ls_return-vehicle_id = 'V-9999'.
|
|
ls_return-fuel_percent = 150.
|
|
expect_reason( is_data = ls_return iv_reason = 'FUEL' ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|