Skip to content

Commit

Permalink
Enhancement: Support main property on factory definition (#201)
Browse files Browse the repository at this point in the history
* support main property on factory definition

* tests for supporting main prop for factory

* fix ts test
  • Loading branch information
coal182 committed Jun 28, 2023
1 parent cfe270e commit c7f411d
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 3 deletions.
2 changes: 1 addition & 1 deletion lib/Loader/FileLoader.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ class FileLoader {
if (service.factory.class.includes('@', 0)) {
object = new Reference(service.factory.class.slice(1))
} else {
object = this._requireClassNameFromPath(service.factory.class)
object = this._requireClassNameFromPath(service.factory.class, service.factory.main)
}

const definition = new Definition()
Expand Down
7 changes: 6 additions & 1 deletion test/Resources-ts/config/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,9 @@ services:
multipleExports:
class: ./../MultipleExports
defaultClass:
class: ./../MultipleExportsWithDefault
class: ./../MultipleExportsWithDefault
kebabCaseFilenameFactory:
factory:
class: ./../kebab-case-filename-factory
main: KebabCaseFilenameFactory
method: "create"
7 changes: 7 additions & 0 deletions test/Resources-ts/kebab-case-filename-factory.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export class KebabCaseFilenameFactory {
static create(){
return new KebabCaseFilenameClass();
}
}

export class KebabCaseFilenameClass {}
7 changes: 6 additions & 1 deletion test/Resources/config/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,9 @@ services:
multipleExports:
class: ./../MultipleExports
defaultClass:
class: ./../MultipleExportsWithDefault
class: ./../MultipleExportsWithDefault
kebabCaseFilenameFactory:
factory:
class: ./../kebab-case-filename-factory
main: KebabCaseFilenameFactory
method: "create"
7 changes: 7 additions & 0 deletions test/Resources/kebab-case-filename-factory.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export class KebabCaseFilenameFactory {
static create(){
return new KebabCaseFilenameClass();
}
}

export class KebabCaseFilenameClass {}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import DecoratingMailerTwo from '../../../Resources-ts/DecoratingMailerTwo'
import ChildClass from '../../../Resources-ts/abstract/ChildClass'
import Service from '../../../Resources-ts/abstract/Service'
import { MultipleExports, ClassOne, ClassTwo } from '../../../Resources-ts/MultipleExports'
import { KebabCaseFilenameClass } from '../../../Resources-ts/kebab-case-filename-factory'
import DefaultClass from '../../../Resources-ts/MultipleExportsWithDefault'
import { NamedService } from '../../../Resources-ts/NamedService'
import RepositoryManager from '../../../Resources-ts/RepositoryManager'
Expand Down Expand Up @@ -354,11 +355,13 @@ describe('YamlFileLoaderTS', () => {
const two = container.get('classTwo')
const multipleExports = container.get('multipleExports')
const defaultClass = container.get('defaultClass')
const kebabCaseFilenameFactory = container.get('kebabCaseFilenameFactory')

// Assert.
assert.instanceOf(one, ClassOne)
assert.instanceOf(two, ClassTwo)
assert.instanceOf(defaultClass, DefaultClass)
assert.instanceOf(kebabCaseFilenameFactory, KebabCaseFilenameClass)
return assert.instanceOf(multipleExports, MultipleExports)
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import ChildClass from '../../../Resources/abstract/ChildClass'
import ChildClassTwo from '../../../Resources/abstract/ChildClassTwo'
import Service from '../../../Resources/abstract/Service'
import { MultipleExports, ClassOne, ClassTwo } from '../../../Resources/MultipleExports'
import { KebabCaseFilenameClass } from '../../../Resources/kebab-case-filename-factory';
import DefaultClass from '../../../Resources/MultipleExportsWithDefault'
import { NamedService } from '../../../Resources/NamedService'
import RepositoryManager from '../../../Resources/RepositoryManager'
Expand Down Expand Up @@ -347,11 +348,13 @@ describe('YamlFileLoader', () => {
const two = container.get('classTwo')
const multipleExports = container.get('multipleExports')
const defaultClass = container.get('defaultClass')
const kebabCaseFilenameFactory = container.get('kebabCaseFilenameFactory')

// Assert.
assert.instanceOf(one, ClassOne)
assert.instanceOf(two, ClassTwo)
assert.instanceOf(defaultClass, DefaultClass)
assert.instanceOf(kebabCaseFilenameFactory, KebabCaseFilenameClass)
return assert.instanceOf(multipleExports, MultipleExports)
})

Expand Down

0 comments on commit c7f411d

Please sign in to comment.