150 lines
6.9 KiB
ABAP
150 lines
6.9 KiB
ABAP
CLASS {{p}}jump_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
CLASS-DATA go_env TYPE REF TO if_osql_test_environment.
|
|
CLASS-DATA gt_fields TYPE ddfields.
|
|
CLASS-METHODS class_setup.
|
|
CLASS-METHODS class_teardown.
|
|
METHODS setup.
|
|
METHODS field_info
|
|
IMPORTING iv_name TYPE fieldname
|
|
RETURNING VALUE(rs_info) TYPE dfies.
|
|
METHODS assert_field_exists
|
|
IMPORTING iv_name TYPE fieldname.
|
|
METHODS all_fields_exist FOR TESTING.
|
|
METHODS key_fields FOR TESTING.
|
|
METHODS char_fields FOR TESTING.
|
|
METHODS date_field FOR TESTING.
|
|
METHODS minutes_field FOR TESTING.
|
|
METHODS amount_field FOR TESTING.
|
|
METHODS client_field FOR TESTING.
|
|
METHODS insert_and_read FOR TESTING.
|
|
METHODS duplicate_key FOR TESTING.
|
|
METHODS filter_by_date FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}jump_hidden IMPLEMENTATION.
|
|
|
|
METHOD class_setup.
|
|
DATA(lo_struct) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( '{{P}}JUMP' ) ).
|
|
gt_fields = lo_struct->get_ddic_field_list( ).
|
|
go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}JUMP' ) ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD class_teardown.
|
|
go_env->destroy( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD setup.
|
|
go_env->clear_doubles( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD field_info.
|
|
READ TABLE gt_fields INTO rs_info WITH KEY fieldname = iv_name.
|
|
ENDMETHOD.
|
|
|
|
METHOD assert_field_exists.
|
|
cl_abap_unit_assert=>assert_equals( exp = iv_name act = field_info( iv_name )-fieldname ).
|
|
ENDMETHOD.
|
|
|
|
METHOD all_fields_exist.
|
|
cl_abap_unit_assert=>assert_equals( exp = 8 act = lines( gt_fields ) ).
|
|
assert_field_exists( 'CLIENT' ).
|
|
assert_field_exists( 'SESSION_ID' ).
|
|
assert_field_exists( 'VISITOR_ID' ).
|
|
assert_field_exists( 'JUMP_DATE' ).
|
|
assert_field_exists( 'JUMP_MINUTES' ).
|
|
assert_field_exists( 'LOCKER_NO' ).
|
|
assert_field_exists( 'FEE_AMOUNT' ).
|
|
assert_field_exists( 'PAID' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD key_fields.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'X' act = field_info( 'CLIENT' )-keyflag ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'X' act = field_info( 'SESSION_ID' )-keyflag ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_info( 'VISITOR_ID' )-keyflag ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_info( 'JUMP_DATE' )-keyflag ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_info( 'JUMP_MINUTES' )-keyflag ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_info( 'LOCKER_NO' )-keyflag ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_info( 'FEE_AMOUNT' )-keyflag ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_info( 'PAID' )-keyflag ).
|
|
ENDMETHOD.
|
|
|
|
METHOD char_fields.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'C' act = field_info( 'SESSION_ID' )-inttype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 10 act = field_info( 'SESSION_ID' )-leng ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'C' act = field_info( 'VISITOR_ID' )-inttype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 10 act = field_info( 'VISITOR_ID' )-leng ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'N' act = field_info( 'LOCKER_NO' )-inttype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = field_info( 'LOCKER_NO' )-leng ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'C' act = field_info( 'PAID' )-inttype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = field_info( 'PAID' )-leng ).
|
|
ENDMETHOD.
|
|
|
|
METHOD date_field.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'D' act = field_info( 'JUMP_DATE' )-inttype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 8 act = field_info( 'JUMP_DATE' )-leng ).
|
|
ENDMETHOD.
|
|
|
|
METHOD minutes_field.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'I' act = field_info( 'JUMP_MINUTES' )-inttype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 10 act = field_info( 'JUMP_MINUTES' )-leng ).
|
|
ENDMETHOD.
|
|
|
|
METHOD amount_field.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'P' act = field_info( 'FEE_AMOUNT' )-inttype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 9 act = field_info( 'FEE_AMOUNT' )-leng ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = field_info( 'FEE_AMOUNT' )-decimals ).
|
|
ENDMETHOD.
|
|
|
|
METHOD client_field.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'C' act = field_info( 'CLIENT' )-inttype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = field_info( 'CLIENT' )-leng ).
|
|
ENDMETHOD.
|
|
|
|
METHOD insert_and_read.
|
|
DATA(ls_jump) = VALUE {{p}}jump( session_id = 'S000000001'
|
|
visitor_id = 'V000000001'
|
|
jump_date = '20250401'
|
|
jump_minutes = 60
|
|
locker_no = '0007'
|
|
fee_amount = '12.50'
|
|
paid = 'X' ).
|
|
INSERT {{p}}jump FROM @ls_jump.
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = sy-subrc ).
|
|
SELECT SINGLE * FROM {{p}}jump WHERE session_id = 'S000000001' INTO @DATA(ls_read).
|
|
cl_abap_unit_assert=>assert_equals( exp = ls_jump-visitor_id act = ls_read-visitor_id ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ls_jump-jump_date act = ls_read-jump_date ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ls_jump-jump_minutes act = ls_read-jump_minutes ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ls_jump-locker_no act = ls_read-locker_no ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( ls_jump-fee_amount )
|
|
act = CONV decfloat34( ls_read-fee_amount ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = ls_jump-paid act = ls_read-paid ).
|
|
ENDMETHOD.
|
|
|
|
METHOD duplicate_key.
|
|
DATA(ls_jump) = VALUE {{p}}jump( session_id = 'S000000002'
|
|
visitor_id = 'V000000002'
|
|
jump_date = '20250402' ).
|
|
INSERT {{p}}jump FROM @ls_jump.
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = sy-subrc ).
|
|
INSERT {{p}}jump FROM @ls_jump.
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = sy-subrc ).
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_by_date.
|
|
DATA lt_jump TYPE STANDARD TABLE OF {{p}}jump WITH EMPTY KEY.
|
|
lt_jump = VALUE #( ( session_id = 'S1' visitor_id = 'A' jump_date = '20250401' )
|
|
( session_id = 'S2' visitor_id = 'B' jump_date = '20250401' )
|
|
( session_id = 'S3' visitor_id = 'C' jump_date = '20250402' ) ).
|
|
INSERT {{p}}jump FROM TABLE @lt_jump.
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = sy-subrc ).
|
|
SELECT * FROM {{p}}jump INTO TABLE @DATA(lt_all).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lines( lt_all ) ).
|
|
SELECT * FROM {{p}}jump WHERE jump_date = '20250401' INTO TABLE @DATA(lt_day).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_day ) ).
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|