Skip to content

Commit d935231

Browse files
authored
fix(autowire): fix bug with multiple override arguments when autowiring (#218)
1 parent 7cee1c2 commit d935231

File tree

9 files changed

+50
-9
lines changed

9 files changed

+50
-9
lines changed

lib/CompilerPass/AutowireOverridePass.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ export default class AutowireOverridePass {
1919

2020
_processOverride (definitionToOverride, container) {
2121
const definitionsToOverride = container.instanceManager.searchNotOverrideDefinitionsByObject(definitionToOverride.Object)
22+
const referencesToOverride = []
2223

2324
for (const overrideArg of definitionToOverride.overrideArgs) {
24-
const references = this._getReferencesForOverrideArg(overrideArg.id)
25-
26-
for (const [, definitionFromOverride] of definitionsToOverride) {
27-
definitionFromOverride.args = [...references]
28-
}
25+
referencesToOverride.push(...this._getReferencesForOverrideArg(overrideArg.id))
26+
}
27+
for (const [, definitionFromOverride] of definitionsToOverride) {
28+
definitionFromOverride.args = referencesToOverride
2929
}
3030
}
3131

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
},
5050
"homepage": "https://github.com/zazoomauro/node-dependency-injection#readme",
5151
"engines": {
52-
"node": ">=14.0.0"
52+
"node": ">=15.0.0"
5353
},
5454
"dependencies": {
5555
"@babel/runtime": "^7.17.9",
@@ -110,4 +110,4 @@
110110
"instrument": false
111111
},
112112
"false": {}
113-
}
113+
}

test/Resources-ts/Autowire-Override/config/services-not-exists.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ services:
66
App.NoExists:
77
class: './FooBarAutowireOverride'
88
override_arguments:
9-
- '@Caca'
9+
- '@NotExists'

test/Resources-ts/Autowire-Override/config/services.yaml

+9
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,12 @@ services:
77
class: './FooBarAutowireOverride'
88
override_arguments:
99
- '@CiAdapter'
10+
- '@SomeService'
11+
- '@AnotherService'
12+
13+
App.AnotherFooBarAutowireOverride:
14+
class: './AnotherFooBarAutowireOverride'
15+
override_arguments:
16+
- '@BarAdapter'
17+
- '@SomeService'
18+
- '@AnotherService'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import Adapter from "./Adapter";
2+
import AnotherService from "./AnotherService";
3+
import SomeService from "./SomeService";
4+
5+
export default class AnotherFooBarAutowireOverride {
6+
constructor(
7+
private readonly _adapter: Adapter,
8+
private readonly _someService: SomeService,
9+
private readonly _anotherService: AnotherService
10+
) {
11+
}
12+
13+
getString(): string {
14+
return this._adapter.toString();
15+
}
16+
17+
get adapter() {
18+
return this._adapter
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default class AnotherService {}

test/Resources-ts/Autowire-Override/src/FooBarAutowireOverride.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
import Adapter from "./Adapter";
2+
import AnotherService from "./AnotherService";
3+
import SomeService from "./SomeService";
24

35
export default class FooBarAutowireOverride {
4-
constructor(private readonly _adapter: Adapter) {}
6+
constructor(
7+
private readonly _adapter: Adapter,
8+
private readonly _someService: SomeService,
9+
private readonly _anotherService: AnotherService
10+
) {
11+
}
512

613
getString(): string {
714
return this._adapter.toString();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default class SomeService {}

test/node-dependency-injection/lib-ts/Autowire.spec.js

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import ImplementsTwoPath from '../../Resources-ts/AutowireModulePath/src/Service
2626
import PathExcludedService from '../../Resources-ts/AutowireModulePath/src/ToExclude/ExcludedService'
2727
import PathInFolderExcludedService from '../../Resources-ts/AutowireModulePath/src/ToExclude/InFolderExclude/InFolderExcludedService'
2828
import FooBarAutowireOverride from '../../Resources-ts/Autowire-Override/src/FooBarAutowireOverride'
29+
import AnotherFooBarAutowireOverride from '../../Resources-ts/Autowire-Override/src/AnotherFooBarAutowireOverride'
2930
import ServiceFile from '../../../lib/ServiceFile';
3031
import RootDirectoryNotFound from '../../../lib/Exception/RootDirectoryNotFound';
3132

@@ -76,9 +77,11 @@ describe('AutowireTS', () => {
7677

7778
// Act.
7879
const actual = cb.get(FooBarAutowireOverride)
80+
const actualAnother = cb.get(AnotherFooBarAutowireOverride)
7981

8082
// Assert.
8183
assert.equal(actual.getString(), "ci")
84+
assert.equal(actualAnother.getString(), "bar")
8285
});
8386

8487
it('should get service file when was properly set', () => {

0 commit comments

Comments
 (0)