*"* use this source file for your ABAP unit test classes
CLASS ltcl_travel DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
CLASS-DATA: cds_test_environment TYPE REF TO if_cds_test_environment,
begin_date TYPE /dmo/begin_date,
end_date TYPE /dmo/end_date.
CLASS-DATA:agency TYPE /dmo/agency,
customer TYPE /dmo/customer,
carrier TYPE /dmo/carrier,
flight TYPE /dmo/flight,
supplement TYPE /dmo/supplement,
travel TYPE zrap100_r_traveltp_72806,
accepted_travel TYPE zrap100_r_traveltp_72806,
rejected_travel TYPE zrap100_r_traveltp_72806,
read_travel TYPE STANDARD TABLE OF zrap100_72806,
travel_w_invalid_dates TYPE zrap100_r_traveltp_72806.
METHODS:first_test.
CLASS-METHODS:
class_setup,
class_teardown.
METHODS:
setup,
teardown.
METHODS:
read_travel_ok FOR TESTING RAISING cx_static_check,
create_travel_ok FOR TESTING RAISING cx_static_check,
create_travel_not_ok FOR TESTING RAISING cx_static_check,
validate_dates_not_ok FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_travel IMPLEMENTATION.
METHOD first_test.
cl_abap_unit_assert=>fail( 'Implement for first test here' ).
ENDMETHOD.
METHOD class_setup.
" data:cds_test_environment TYPE REF TO if_cds_test_environment.
begin_date = cl_abap_context_info=>get_system_date( ) + 10.
end_date = cl_abap_context_info=>get_system_date( ) + 30.
SELECT SINGLE * FROM /dmo/customer INTO @customer ##WARN_OK.
SELECT SINGLE * FROM /dmo/agency INTO @agency.
SELECT SINGLE * FROM /dmo/carrier INTO @carrier.
cds_test_environment = cl_cds_test_environment=>create_for_multiple_cds(
i_for_entities = VALUE #(
( i_for_entity = 'ZRAP100_R_TRAVELTP_72806'
i_select_base_dependencies = abap_true ) )
).
ENDMETHOD.
METHOD class_teardown.
cds_test_environment->destroy( ).
ENDMETHOD.
METHOD setup.
cds_test_environment->clear_doubles( ).
travel = VALUE #( travelid = '101' agencyid = agency-agency_id customerid = customer-customer_id
begindate = begin_date
enddate = end_date
bookingfee = '20'
currencycode = 'EUR'
description = 'Travel 1'
overallstatus = 'O'
).
accepted_travel = VALUE #( agencyid = agency-agency_id customerid = customer-customer_id
begindate = begin_date
enddate = end_date
bookingfee = '20'
currencycode = 'EUR'
description = 'Travel 1'
overallstatus = 'A'
).
rejected_travel = VALUE #( agencyid = '1111' customerid = customer-customer_id
begindate = begin_date
enddate = end_date
bookingfee = '20'
currencycode = 'EUR'
description = 'Travel 1'
overallstatus = 'X'
).
travel_w_invalid_dates = VALUE #( agencyid = agency-agency_id customerid = customer-customer_id
begindate = end_date
enddate = begin_date
bookingfee = '20'
currencycode = 'EUR'
description = 'Travel 2'
overallstatus = 'O'
).
ENDMETHOD.
METHOD teardown.
cds_test_environment->clear_doubles( ).
ROLLBACK ENTITIES.
ENDMETHOD.
METHOD read_travel_ok.
read_travel = VALUE #( (
travel_id = '110'
agency_id = agency-agency_id customer_id = customer-customer_id
begin_date = begin_date
end_date = end_date
booking_fee = '20'
currency_code = 'EUR'
description = 'Travel 1'
overall_status = 'O' ) ).
cds_test_environment->insert_test_data( i_data = read_travel ).
READ ENTITIES OF zrap100_r_traveltp_72806
ENTITY travel ALL FIELDS WITH
VALUE #( ( %key-TravelID = read_travel[ 1 ]-travel_id ) )
RESULT DATA(lt_read_travel)
FAILED DATA(failed)
REPORTED DATA(reported).
cl_abap_unit_assert=>assert_equals(
EXPORTING
act = lt_read_travel[ 1 ]-travelid
exp = 110
msg = 'Failed to create travel instance.').
ENDMETHOD.
METHOD create_travel_ok.
DATA lt_accepted_travel TYPE TABLE FOR CREATE zrap100_r_traveltp_72806\\Travel.
APPEND CORRESPONDING #( accepted_travel ) TO lt_accepted_travel.
MODIFY ENTITIES OF zrap100_r_traveltp_72806
ENTITY travel
CREATE FIELDS (
AgencyID
BeginDate
EndDate
Bookingfee
totalPrice
currencyCode
description
overallstatus )
WITH lt_accepted_travel
MAPPED DATA(mapped)
REPORTED DATA(reported)
FAILED DATA(failed).
COMMIT ENTITIES.
READ ENTITIES OF zrap100_r_traveltp_72806
ENTITY travel ALL FIELDS WITH
VALUE #( ( travelid = mapped-travel[ 1 ]-travelid ) )
RESULT DATA(lt_read_travel)
FAILED failed
REPORTED reported.
cl_abap_unit_assert=>assert_not_initial(
EXPORTING
act = lt_read_travel[ 1 ]-travelid
msg = 'Failed to create travel id.'
).
cl_abap_unit_assert=>assert_equals(
EXPORTING
act = lt_read_travel[ 1 ]-travelid
exp = lt_accepted_travel[ 1 ]-travelid
msg = 'Failed to create travel instance'
).
cl_abap_unit_assert=>assert_initial(
EXPORTING
act = failed-travel
msg = 'Failed to create travel instance' ).
ENDMETHOD.
METHOD create_travel_not_ok.
DATA:lt_rejected_travel TYPE TABLE FOR CREATE zrap100_r_traveltp_72806\\Travel.
APPEND CORRESPONDING #( rejected_travel ) TO lt_rejected_travel.
MODIFY ENTITIES OF zrap100_r_traveltp_72806
ENTITY travel
CREATE FIELDS (
agencyid
begindate
enddate
bookingfee
totalprice
currencycode
description
overallstatus )
WITH lt_rejected_travel
MAPPED DATA(lt_mapped)
REPORTED DATA(lt_repoted)
FAILED DATA(lt_failed).
COMMIT ENTITIES RESPONSE OF zrap100_r_traveltp_72806 REPORTED DATA(lt_travel_create)
FAILED DATA(lt_failed_response).
cl_abap_unit_assert=>assert_not_initial( lt_failed_response ).
ENDMETHOD.
METHOD validate_dates_not_ok.
DATA:lt_create_date_not_ok TYPE TABLE FOR CREATE zrap100_r_traveltp_72806\\Travel.
APPEND CORRESPONDING #( travel_w_invalid_dates ) TO lt_create_date_not_ok.
MODIFY ENTITIES OF zrap100_r_traveltp_72806
ENTITY travel
CREATE FIELDS ( agencyid bookingfee currencycode overallstatus begindate enddate )
WITH lt_create_date_not_ok
MAPPED DATA(lt_mapped)
REPORTED DATA(lt_reported)
FAILED DATA(lt_failed).
COMMIT ENTITIES.
cl_abap_unit_assert=>assert_not_initial(
EXPORTING
act = sy-subrc
msg = 'failed with error date' ).
READ ENTITIES OF ZRAP100_r_traveltp_72806
ENTITY travel
ALL FIELDS WITH
VALUE #( ( travelid = lt_mapped-travel[ 1 ]-travelid ) )
RESULT DATA(lt_travel_validate_date)
FAILED lt_failed
REPORTED lt_reported.
cl_abap_unit_assert=>assert_initial(
EXPORTING
act = lt_travel_validate_date
msg = 'failed insert' ).
ENDMETHOD.
ENDCLASS.