diff --git a/src/zcl_abapgit_factory.clas.abap b/src/zcl_abapgit_factory.clas.abap index 466248785..be4fd03f0 100644 --- a/src/zcl_abapgit_factory.clas.abap +++ b/src/zcl_abapgit_factory.clas.abap @@ -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. diff --git a/src/zcl_abapgit_factory.clas.xml b/src/zcl_abapgit_factory.clas.xml index b92211da3..a8cd80d72 100644 --- a/src/zcl_abapgit_factory.clas.xml +++ b/src/zcl_abapgit_factory.clas.xml @@ -7,7 +7,6 @@ 1 E Factory - 2 1 X X diff --git a/src/zcl_abapgit_injector.clas.abap b/src/zcl_abapgit_injector.clas.abap new file mode 100644 index 000000000..7f3ba3ca8 --- /dev/null +++ b/src/zcl_abapgit_injector.clas.abap @@ -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. diff --git a/src/zcl_abapgit_injector.clas.testclasses.abap b/src/zcl_abapgit_injector.clas.testclasses.abap new file mode 100644 index 000000000..28bb3a47d --- /dev/null +++ b/src/zcl_abapgit_injector.clas.testclasses.abap @@ -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. diff --git a/src/zcl_abapgit_injector.clas.xml b/src/zcl_abapgit_injector.clas.xml new file mode 100644 index 000000000..8e632aa21 --- /dev/null +++ b/src/zcl_abapgit_injector.clas.xml @@ -0,0 +1,19 @@ + + + + + + ZCL_ABAPGIT_INJECTOR + 1 + E + abapGit injector + 05 + 1 + X + X + X + X + + + + diff --git a/src/zcl_abapgit_tadir.clas.abap b/src/zcl_abapgit_tadir.clas.abap index 0bc91e958..69ddd1218 100644 --- a/src/zcl_abapgit_tadir.clas.abap +++ b/src/zcl_abapgit_tadir.clas.abap @@ -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. diff --git a/src/zcl_abapgit_tadir.clas.xml b/src/zcl_abapgit_tadir.clas.xml index 8c7c92231..e556c16a2 100644 --- a/src/zcl_abapgit_tadir.clas.xml +++ b/src/zcl_abapgit_tadir.clas.xml @@ -7,7 +7,6 @@ 1 E TADIR access - 2 1 X X