File tree Expand file tree Collapse file tree 2 files changed +32
-1
lines changed
Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -16,12 +16,21 @@ type Container struct {
1616 connected bool
1717}
1818
19+ // Retuns a new container and sets a default dependency that allows
20+ // to inject this container as a parameter on the resolvers
1921func New () * Container {
20- return & Container {
22+ container := & Container {
2123 Graph : graph .NewGraph [resolver.DependencyResolver [any ]](),
2224 typeIndex : make (map [reflect.Type ]* graph.Node [resolver.DependencyResolver [any ]]),
2325 tokenIndex : make (map [string ]* graph.Node [resolver.DependencyResolver [any ]]),
2426 }
27+
28+ // Allow resolvers to inject container
29+ container .AddDependency (func () * Container {
30+ return container
31+ })
32+
33+ return container
2534}
2635
2736func (c * Container ) AddDependency (res any ) error {
Original file line number Diff line number Diff line change @@ -99,3 +99,25 @@ func TestResolveToken_WithDependencies(t *testing.T) {
9999 require .NoError (t , err )
100100 require .NotNil (t , buf )
101101}
102+
103+ func TestContainerDependency (t * testing.T ) {
104+ cont := container .New ()
105+
106+ cont .AddDependency (testutils .NewService )
107+ cont .AddTokenDependency ("buffer" , func () * bytes.Buffer {
108+ return bytes .NewBuffer ([]byte {})
109+ })
110+
111+ cont .AddDependency (func (c * container.Container ) testutils.MyDeps {
112+ deps := testutils.MyDeps {}
113+ err := c .Fill (& deps )
114+ require .NoError (t , err )
115+
116+ return deps
117+ })
118+
119+ deps , err := container.Resolve [testutils.MyDeps ](cont )
120+ require .NoError (t , err )
121+ err = deps .CheckResolvedDependencies ()
122+ require .NoError (t , err )
123+ }
You can’t perform that action at this time.
0 commit comments