add injector class

This commit is contained in:
Christian Guenter 2018-06-10 16:24:44 +00:00 committed by christianguenter2
parent eec7a7d096
commit 6a9acb8a1b
7 changed files with 153 additions and 17 deletions

View File

@ -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.

View File

@ -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>

View 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.

View 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.

View 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>

View File

@ -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.

View File

@ -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>