115 lines
4.7 KiB
ABAP
115 lines
4.7 KiB
ABAP
CLASS ltc_care_visit_checker DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}care_visit_checker.
|
|
|
|
METHODS setup.
|
|
METHODS valid_visit_passes FOR TESTING.
|
|
METHODS empty_visit_id FOR TESTING.
|
|
METHODS outside_hours FOR TESTING.
|
|
METHODS bad_duration FOR TESTING.
|
|
METHODS too_long FOR TESTING.
|
|
METHODS carer_overlap FOR TESTING.
|
|
METHODS client_overlap FOR TESTING.
|
|
METHODS touching_visits FOR TESTING.
|
|
|
|
METHODS expect_reason
|
|
IMPORTING is_visit TYPE {{p}}care_visit_checker=>ty_visit
|
|
it_plan TYPE {{p}}care_visit_checker=>tt_visit
|
|
iv_reason TYPE {{p}}if_care_reason=>ty_reason.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltc_care_visit_checker IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}care_visit_checker( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD valid_visit_passes.
|
|
DATA(ls_visit) = VALUE {{p}}care_visit_checker=>ty_visit(
|
|
visit_id = 'V1' client_id = 'K1' carer_id = 'C1' start_hour = 9 end_hour = 11 ).
|
|
DATA(lt_plan) = VALUE {{p}}care_visit_checker=>tt_visit( ).
|
|
TRY.
|
|
mo_cut->check_visit( is_visit = ls_visit it_plan = lt_plan ).
|
|
CATCH {{p}}cx_care_visit INTO DATA(lx).
|
|
cl_abap_unit_assert=>fail( msg = |unexpected reason { lx->mv_reason }| ).
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD empty_visit_id.
|
|
DATA(ls_visit) = VALUE {{p}}care_visit_checker=>ty_visit(
|
|
visit_id = '' client_id = 'K1' carer_id = 'C1' start_hour = 9 end_hour = 11 ).
|
|
DATA(lt_plan) = VALUE {{p}}care_visit_checker=>tt_visit( ).
|
|
expect_reason( is_visit = ls_visit
|
|
it_plan = lt_plan
|
|
iv_reason = {{p}}if_care_reason=>c_reason-no_visit_id ).
|
|
ENDMETHOD.
|
|
|
|
METHOD outside_hours.
|
|
DATA(ls_visit) = VALUE {{p}}care_visit_checker=>ty_visit(
|
|
visit_id = 'V1' client_id = 'K1' carer_id = 'C1' start_hour = 5 end_hour = 7 ).
|
|
DATA(lt_plan) = VALUE {{p}}care_visit_checker=>tt_visit( ).
|
|
expect_reason( is_visit = ls_visit
|
|
it_plan = lt_plan
|
|
iv_reason = {{p}}if_care_reason=>c_reason-outside_hours ).
|
|
ENDMETHOD.
|
|
|
|
METHOD bad_duration.
|
|
DATA(ls_visit) = VALUE {{p}}care_visit_checker=>ty_visit(
|
|
visit_id = 'V1' client_id = 'K1' carer_id = 'C1' start_hour = 10 end_hour = 10 ).
|
|
DATA(lt_plan) = VALUE {{p}}care_visit_checker=>tt_visit( ).
|
|
expect_reason( is_visit = ls_visit
|
|
it_plan = lt_plan
|
|
iv_reason = {{p}}if_care_reason=>c_reason-bad_duration ).
|
|
ENDMETHOD.
|
|
|
|
METHOD too_long.
|
|
DATA(ls_visit) = VALUE {{p}}care_visit_checker=>ty_visit(
|
|
visit_id = 'V1' client_id = 'K1' carer_id = 'C1' start_hour = 9 end_hour = 14 ).
|
|
DATA(lt_plan) = VALUE {{p}}care_visit_checker=>tt_visit( ).
|
|
expect_reason( is_visit = ls_visit
|
|
it_plan = lt_plan
|
|
iv_reason = {{p}}if_care_reason=>c_reason-too_long ).
|
|
ENDMETHOD.
|
|
|
|
METHOD carer_overlap.
|
|
DATA(ls_visit) = VALUE {{p}}care_visit_checker=>ty_visit(
|
|
visit_id = 'V1' client_id = 'K2' carer_id = 'C1' start_hour = 9 end_hour = 11 ).
|
|
DATA(lt_plan) = VALUE {{p}}care_visit_checker=>tt_visit(
|
|
( visit_id = 'P1' client_id = 'K1' carer_id = 'C1' start_hour = 10 end_hour = 12 ) ).
|
|
expect_reason( is_visit = ls_visit
|
|
it_plan = lt_plan
|
|
iv_reason = {{p}}if_care_reason=>c_reason-carer_overlap ).
|
|
ENDMETHOD.
|
|
|
|
METHOD client_overlap.
|
|
DATA(ls_visit) = VALUE {{p}}care_visit_checker=>ty_visit(
|
|
visit_id = 'V1' client_id = 'K1' carer_id = 'C2' start_hour = 9 end_hour = 11 ).
|
|
DATA(lt_plan) = VALUE {{p}}care_visit_checker=>tt_visit(
|
|
( visit_id = 'P1' client_id = 'K1' carer_id = 'C1' start_hour = 10 end_hour = 12 ) ).
|
|
expect_reason( is_visit = ls_visit
|
|
it_plan = lt_plan
|
|
iv_reason = {{p}}if_care_reason=>c_reason-client_overlap ).
|
|
ENDMETHOD.
|
|
|
|
METHOD touching_visits.
|
|
DATA(ls_visit) = VALUE {{p}}care_visit_checker=>ty_visit(
|
|
visit_id = 'V1' client_id = 'K1' carer_id = 'C1' start_hour = 12 end_hour = 14 ).
|
|
DATA(lt_plan) = VALUE {{p}}care_visit_checker=>tt_visit(
|
|
( visit_id = 'P1' client_id = 'K1' carer_id = 'C1' start_hour = 10 end_hour = 12 ) ).
|
|
TRY.
|
|
mo_cut->check_visit( is_visit = ls_visit it_plan = lt_plan ).
|
|
CATCH {{p}}cx_care_visit INTO DATA(lx).
|
|
cl_abap_unit_assert=>fail( msg = |unexpected reason { lx->mv_reason }| ).
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD expect_reason.
|
|
TRY.
|
|
mo_cut->check_visit( is_visit = is_visit it_plan = it_plan ).
|
|
cl_abap_unit_assert=>fail( msg = 'exception expected' ).
|
|
CATCH {{p}}cx_care_visit INTO DATA(lx).
|
|
cl_abap_unit_assert=>assert_equals( exp = iv_reason act = lx->mv_reason ).
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
ENDCLASS.
|