mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Merge pull request #1501 from christianguenter2/issue_1390
Introduce injector class
This commit is contained in:
commit
4f59c42fb4
|
@ -1,30 +1,33 @@
|
|||
CLASS zcl_abapgit_factory DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC .
|
||||
CREATE PRIVATE
|
||||
GLOBAL FRIENDS zcl_abapgit_injector.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-DATA gi_tadir TYPE REF TO zif_abapgit_tadir .
|
||||
CLASS-METHODS:
|
||||
get_tadir
|
||||
RETURNING
|
||||
VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir.
|
||||
|
||||
CLASS-METHODS get_tadir
|
||||
RETURNING
|
||||
VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA:
|
||||
mi_tadir TYPE REF TO zif_abapgit_tadir.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_FACTORY IMPLEMENTATION.
|
||||
|
||||
CLASS zcl_abapgit_factory IMPLEMENTATION.
|
||||
|
||||
METHOD get_tadir.
|
||||
|
||||
IF gi_tadir IS INITIAL.
|
||||
CREATE OBJECT gi_tadir TYPE zcl_abapgit_tadir.
|
||||
IF mi_tadir IS INITIAL.
|
||||
CREATE OBJECT mi_tadir TYPE zcl_abapgit_tadir.
|
||||
ENDIF.
|
||||
|
||||
ri_tadir = gi_tadir.
|
||||
ri_tadir = mi_tadir.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Factory</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
|
|
24
src/zcl_abapgit_injector.clas.abap
Normal file
24
src/zcl_abapgit_injector.clas.abap
Normal file
|
@ -0,0 +1,24 @@
|
|||
CLASS zcl_abapgit_injector DEFINITION
|
||||
PUBLIC
|
||||
CREATE PRIVATE
|
||||
FOR TESTING .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS set_tadir
|
||||
IMPORTING
|
||||
!ii_tadir TYPE REF TO zif_abapgit_tadir .
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_injector IMPLEMENTATION.
|
||||
|
||||
METHOD set_tadir.
|
||||
|
||||
zcl_abapgit_factory=>mi_tadir = ii_tadir.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
93
src/zcl_abapgit_injector.clas.testclasses.abap
Normal file
93
src/zcl_abapgit_injector.clas.testclasses.abap
Normal file
|
@ -0,0 +1,93 @@
|
|||
*"* use this source file for your ABAP unit test classes
|
||||
|
||||
CLASS ltd_abapgit_tadir_mock DEFINITION.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES: zif_abapgit_tadir.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS no_dependency_injection DEFINITION FOR TESTING
|
||||
RISK LEVEL HARMLESS
|
||||
DURATION SHORT.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
no_injection FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS simple_dependency_injection DEFINITION FOR TESTING
|
||||
RISK LEVEL HARMLESS
|
||||
DURATION SHORT.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
setup,
|
||||
simple_injection FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltd_abapgit_tadir_mock IMPLEMENTATION.
|
||||
|
||||
METHOD zif_abapgit_tadir~get_object_package.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_tadir~read.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_tadir~read_single.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS no_dependency_injection IMPLEMENTATION.
|
||||
|
||||
METHOD no_injection.
|
||||
|
||||
DATA: lo_tadir TYPE REF TO zif_abapgit_tadir,
|
||||
lo_class_descr TYPE REF TO cl_abap_classdescr.
|
||||
|
||||
lo_tadir = zcl_abapgit_factory=>get_tadir( ).
|
||||
|
||||
lo_class_descr ?= cl_abap_classdescr=>describe_by_object_ref( lo_tadir ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '\CLASS=ZCL_ABAPGIT_TADIR'
|
||||
act = lo_class_descr->absolute_name ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS simple_dependency_injection IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
|
||||
DATA: lo_tadir_mock TYPE REF TO ltd_abapgit_tadir_mock.
|
||||
|
||||
CREATE OBJECT lo_tadir_mock.
|
||||
|
||||
zcl_abapgit_injector=>set_tadir( lo_tadir_mock ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD simple_injection.
|
||||
|
||||
DATA: lo_tadir TYPE REF TO zif_abapgit_tadir,
|
||||
lo_class_descr TYPE REF TO cl_abap_classdescr.
|
||||
|
||||
lo_tadir = zcl_abapgit_factory=>get_tadir( ).
|
||||
|
||||
lo_class_descr ?= cl_abap_classdescr=>describe_by_object_ref( lo_tadir ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = '\CLASS-POOL=ZCL_ABAPGIT_INJECTOR\CLASS=LTD_ABAPGIT_TADIR_MOCK'
|
||||
act = lo_class_descr->absolute_name ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
19
src/zcl_abapgit_injector.clas.xml
Normal file
19
src/zcl_abapgit_injector.clas.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_INJECTOR</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abapGit injector</DESCRIPT>
|
||||
<CATEGORY>05</CATEGORY>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1,13 +1,12 @@
|
|||
CLASS zcl_abapgit_tadir DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC
|
||||
|
||||
CREATE PRIVATE
|
||||
GLOBAL FRIENDS zcl_abapgit_factory .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES zif_abapgit_tadir .
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS exists
|
||||
|
@ -38,7 +37,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_TADIR IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_tadir IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD build.
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>TADIR access</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
|
|
Loading…
Reference in New Issue
Block a user