196 lines
7.9 KiB
ABAP
196 lines
7.9 KiB
ABAP
CLASS {{p}}bowl_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-METHODS class_setup.
|
|
CLASS-METHODS class_teardown.
|
|
METHODS setup.
|
|
METHODS field_names FOR TESTING.
|
|
METHODS key_fields FOR TESTING.
|
|
METHODS char_fields FOR TESTING.
|
|
METHODS numc_fields FOR TESTING.
|
|
METHODS decimal_fields FOR TESTING.
|
|
METHODS date_and_count FOR TESTING.
|
|
METHODS no_reserved_names FOR TESTING.
|
|
METHODS insert_and_read FOR TESTING.
|
|
METHODS duplicate_booking FOR TESTING.
|
|
METHODS get_field
|
|
IMPORTING iv_name TYPE string
|
|
RETURNING VALUE(rs_field) TYPE dfies.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}bowl_hidden IMPLEMENTATION.
|
|
|
|
METHOD class_setup.
|
|
go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}BOWL' ) ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD class_teardown.
|
|
go_env->destroy( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD setup.
|
|
go_env->clear_doubles( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD get_field.
|
|
DATA lo_struct TYPE REF TO cl_abap_structdescr.
|
|
lo_struct ?= cl_abap_typedescr=>describe_by_name( '{{P}}BOWL' ).
|
|
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
|
|
READ TABLE lt_fields INTO rs_field WITH KEY fieldname = iv_name.
|
|
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
|
|
ENDMETHOD.
|
|
|
|
METHOD field_names.
|
|
DATA lo_struct TYPE REF TO cl_abap_structdescr.
|
|
lo_struct ?= cl_abap_typedescr=>describe_by_name( '{{P}}BOWL' ).
|
|
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 10 act = lines( lt_fields ) ).
|
|
|
|
DATA lt_names TYPE STANDARD TABLE OF string WITH EMPTY KEY.
|
|
lt_names = VALUE #( FOR ls_field IN lt_fields ( to_upper( ls_field-fieldname ) ) ).
|
|
|
|
DATA lt_expected TYPE STANDARD TABLE OF string WITH EMPTY KEY.
|
|
lt_expected = VALUE #( ( `CLIENT` ) ( `BOOKING_ID` ) ( `LANE_NO` ) ( `PLAY_HOURS` )
|
|
( `GAME_MODE` ) ( `ORDER_NO` ) ( `PLAY_DATE` )
|
|
( `PLAYER_COUNT` ) ( `LEAGUE_CODE` ) ( `PRICE_VALUE` ) ).
|
|
LOOP AT lt_expected INTO DATA(lv_name).
|
|
READ TABLE lt_names TRANSPORTING NO FIELDS WITH KEY table_line = lv_name.
|
|
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc
|
|
msg = |Field { lv_name } is missing| ).
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
METHOD key_fields.
|
|
DATA lo_struct TYPE REF TO cl_abap_structdescr.
|
|
lo_struct ?= cl_abap_typedescr=>describe_by_name( '{{P}}BOWL' ).
|
|
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
|
|
LOOP AT lt_fields INTO DATA(ls_field).
|
|
DATA(lv_name) = to_upper( ls_field-fieldname ).
|
|
IF lv_name = 'CLIENT' OR lv_name = 'BOOKING_ID' OR lv_name = 'LANE_NO'.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'X' act = ls_field-keyflag ).
|
|
ELSE.
|
|
cl_abap_unit_assert=>assert_equals( exp = ' ' act = ls_field-keyflag ).
|
|
ENDIF.
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
METHOD char_fields.
|
|
DATA(ls_field) = get_field( 'BOOKING_ID' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = ls_field-datatype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 10 act = ls_field-leng ).
|
|
|
|
ls_field = get_field( 'ORDER_NO' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = ls_field-datatype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 10 act = ls_field-leng ).
|
|
|
|
ls_field = get_field( 'LEAGUE_CODE' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = ls_field-datatype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_field-leng ).
|
|
|
|
ls_field = get_field( 'GAME_MODE' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = ls_field-datatype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_field-leng ).
|
|
ENDMETHOD.
|
|
|
|
METHOD numc_fields.
|
|
DATA(ls_field) = get_field( 'LANE_NO' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'NUMC' act = ls_field-datatype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_field-leng ).
|
|
ENDMETHOD.
|
|
|
|
METHOD decimal_fields.
|
|
DATA(ls_field) = get_field( 'PLAY_HOURS' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'DEC' act = ls_field-datatype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_field-leng ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_field-decimals ).
|
|
|
|
ls_field = get_field( 'PRICE_VALUE' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'DEC' act = ls_field-datatype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 11 act = ls_field-leng ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_field-decimals ).
|
|
ENDMETHOD.
|
|
|
|
METHOD date_and_count.
|
|
DATA(ls_field) = get_field( 'PLAY_DATE' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'DATS' act = ls_field-datatype ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 8 act = ls_field-leng ).
|
|
|
|
ls_field = get_field( 'PLAYER_COUNT' ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'INT4' act = ls_field-datatype ).
|
|
ENDMETHOD.
|
|
|
|
METHOD no_reserved_names.
|
|
DATA lo_struct TYPE REF TO cl_abap_structdescr.
|
|
lo_struct ?= cl_abap_typedescr=>describe_by_name( '{{P}}BOWL' ).
|
|
DATA(lt_fields) = lo_struct->get_ddic_field_list( ).
|
|
|
|
DATA lt_reserved TYPE STANDARD TABLE OF string WITH EMPTY KEY.
|
|
lt_reserved = VALUE #( ( `HOURS` ) ( `MODE` ) ( `ORDER` ) ( `DATE` )
|
|
( `COUNT` ) ( `GROUP` ) ( `VALUE` ) ( `NUMBER` ) ).
|
|
|
|
LOOP AT lt_fields INTO DATA(ls_field).
|
|
DATA(lv_name) = to_upper( ls_field-fieldname ).
|
|
READ TABLE lt_reserved TRANSPORTING NO FIELDS WITH KEY table_line = lv_name.
|
|
cl_abap_unit_assert=>assert_subrc( exp = 4 act = sy-subrc
|
|
msg = |Field name { lv_name } is a reserved word| ).
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
METHOD insert_and_read.
|
|
DATA lv_lane TYPE {{p}}bowl-lane_no.
|
|
DATA ls_booking TYPE {{p}}bowl.
|
|
ls_booking-client = sy-mandt.
|
|
ls_booking-booking_id = 'B-0001'.
|
|
ls_booking-lane_no = '01'.
|
|
ls_booking-play_hours = '12.50'.
|
|
ls_booking-game_mode = 'N'.
|
|
ls_booking-order_no = 'ORD-0001'.
|
|
ls_booking-play_date = '20240115'.
|
|
ls_booking-player_count = 4.
|
|
ls_booking-league_code = 'L-01'.
|
|
ls_booking-price_value = '1234.50'.
|
|
|
|
INSERT {{p}}bowl FROM @ls_booking.
|
|
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
|
|
|
|
SELECT SINGLE * FROM {{p}}bowl
|
|
WHERE booking_id = 'B-0001' AND lane_no = '01' INTO @DATA(ls_read).
|
|
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
|
|
|
|
lv_lane = '01'.
|
|
cl_abap_unit_assert=>assert_equals( exp = lv_lane act = ls_read-lane_no ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '12.50' )
|
|
act = CONV decfloat34( ls_read-play_hours ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'N' act = ls_read-game_mode ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'ORD-0001' act = ls_read-order_no ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV d( '20240115' ) act = ls_read-play_date ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = ls_read-player_count ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'L-01' act = ls_read-league_code ).
|
|
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '1234.50' )
|
|
act = CONV decfloat34( ls_read-price_value ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD duplicate_booking.
|
|
DATA ls_booking TYPE {{p}}bowl.
|
|
ls_booking-client = sy-mandt.
|
|
ls_booking-booking_id = 'B-0002'.
|
|
ls_booking-lane_no = '02'.
|
|
ls_booking-game_mode = 'L'.
|
|
|
|
INSERT {{p}}bowl FROM @ls_booking.
|
|
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
|
|
|
|
ls_booking-game_mode = 'N'.
|
|
INSERT {{p}}bowl FROM @ls_booking.
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = sy-subrc ).
|
|
|
|
SELECT SINGLE game_mode FROM {{p}}bowl
|
|
WHERE booking_id = 'B-0002' AND lane_no = '02' INTO @DATA(lv_mode).
|
|
cl_abap_unit_assert=>assert_subrc( exp = 0 act = sy-subrc ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'L' act = lv_mode ).
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|