Skip to content

Commit c7f411d

Browse files
authored
Enhancement: Support main property on factory definition (#201)
* support main property on factory definition * tests for supporting main prop for factory * fix ts test
1 parent cfe270e commit c7f411d

File tree

7 files changed

+33
-3
lines changed

7 files changed

+33
-3
lines changed

lib/Loader/FileLoader.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class FileLoader {
9494
if (service.factory.class.includes('@', 0)) {
9595
object = new Reference(service.factory.class.slice(1))
9696
} else {
97-
object = this._requireClassNameFromPath(service.factory.class)
97+
object = this._requireClassNameFromPath(service.factory.class, service.factory.main)
9898
}
9999

100100
const definition = new Definition()

test/Resources-ts/config/main.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,9 @@ services:
88
multipleExports:
99
class: ./../MultipleExports
1010
defaultClass:
11-
class: ./../MultipleExportsWithDefault
11+
class: ./../MultipleExportsWithDefault
12+
kebabCaseFilenameFactory:
13+
factory:
14+
class: ./../kebab-case-filename-factory
15+
main: KebabCaseFilenameFactory
16+
method: "create"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export class KebabCaseFilenameFactory {
2+
static create(){
3+
return new KebabCaseFilenameClass();
4+
}
5+
}
6+
7+
export class KebabCaseFilenameClass {}

test/Resources/config/main.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,9 @@ services:
88
multipleExports:
99
class: ./../MultipleExports
1010
defaultClass:
11-
class: ./../MultipleExportsWithDefault
11+
class: ./../MultipleExportsWithDefault
12+
kebabCaseFilenameFactory:
13+
factory:
14+
class: ./../kebab-case-filename-factory
15+
main: KebabCaseFilenameFactory
16+
method: "create"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export class KebabCaseFilenameFactory {
2+
static create(){
3+
return new KebabCaseFilenameClass();
4+
}
5+
}
6+
7+
export class KebabCaseFilenameClass {}

test/node-dependency-injection/lib-ts/Loader/YamlFileLoader.spec.js

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import DecoratingMailerTwo from '../../../Resources-ts/DecoratingMailerTwo'
2020
import ChildClass from '../../../Resources-ts/abstract/ChildClass'
2121
import Service from '../../../Resources-ts/abstract/Service'
2222
import { MultipleExports, ClassOne, ClassTwo } from '../../../Resources-ts/MultipleExports'
23+
import { KebabCaseFilenameClass } from '../../../Resources-ts/kebab-case-filename-factory'
2324
import DefaultClass from '../../../Resources-ts/MultipleExportsWithDefault'
2425
import { NamedService } from '../../../Resources-ts/NamedService'
2526
import RepositoryManager from '../../../Resources-ts/RepositoryManager'
@@ -354,11 +355,13 @@ describe('YamlFileLoaderTS', () => {
354355
const two = container.get('classTwo')
355356
const multipleExports = container.get('multipleExports')
356357
const defaultClass = container.get('defaultClass')
358+
const kebabCaseFilenameFactory = container.get('kebabCaseFilenameFactory')
357359

358360
// Assert.
359361
assert.instanceOf(one, ClassOne)
360362
assert.instanceOf(two, ClassTwo)
361363
assert.instanceOf(defaultClass, DefaultClass)
364+
assert.instanceOf(kebabCaseFilenameFactory, KebabCaseFilenameClass)
362365
return assert.instanceOf(multipleExports, MultipleExports)
363366
})
364367

test/node-dependency-injection/lib/Loader/YamlFileLoader.spec.js

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import ChildClass from '../../../Resources/abstract/ChildClass'
2121
import ChildClassTwo from '../../../Resources/abstract/ChildClassTwo'
2222
import Service from '../../../Resources/abstract/Service'
2323
import { MultipleExports, ClassOne, ClassTwo } from '../../../Resources/MultipleExports'
24+
import { KebabCaseFilenameClass } from '../../../Resources/kebab-case-filename-factory';
2425
import DefaultClass from '../../../Resources/MultipleExportsWithDefault'
2526
import { NamedService } from '../../../Resources/NamedService'
2627
import RepositoryManager from '../../../Resources/RepositoryManager'
@@ -347,11 +348,13 @@ describe('YamlFileLoader', () => {
347348
const two = container.get('classTwo')
348349
const multipleExports = container.get('multipleExports')
349350
const defaultClass = container.get('defaultClass')
351+
const kebabCaseFilenameFactory = container.get('kebabCaseFilenameFactory')
350352

351353
// Assert.
352354
assert.instanceOf(one, ClassOne)
353355
assert.instanceOf(two, ClassTwo)
354356
assert.instanceOf(defaultClass, DefaultClass)
357+
assert.instanceOf(kebabCaseFilenameFactory, KebabCaseFilenameClass)
355358
return assert.instanceOf(multipleExports, MultipleExports)
356359
})
357360

0 commit comments

Comments
 (0)