Skip to content

Commit 191925f

Browse files
committed
Merge branch 'master' of github.com:zazoomauro/node-dependency-injection
2 parents f42861f + 6384201 commit 191925f

5 files changed

Lines changed: 77 additions & 0 deletions

File tree

lib/Loader/FileLoader.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import validate from 'validate-npm-package-name'
66
import Autowire from '../Autowire'
77
import Argument from './Argument'
88
import Condition from '../Condition'
9+
import ServiceFile from '../ServiceFile'
910

1011
class FileLoader {
1112
/**
@@ -241,6 +242,14 @@ class FileLoader {
241242
autowire.addExclude(exclude)
242243
})
243244
}
245+
if (defaults.dumpFile) {
246+
let dumpFilePath = defaults.dumpFile
247+
if (!path.isAbsolute(dumpFilePath)) {
248+
const filePathParsed = path.parse(this.filePath)
249+
dumpFilePath = path.join(filePathParsed.dir, dumpFilePath)
250+
}
251+
autowire.serviceFile = new ServiceFile(dumpFilePath, true)
252+
}
244253
await autowire.process()
245254
}
246255

lib/Loader/XmlFileLoader.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,10 @@ export default class XmlFileLoader extends FileLoader {
182182
defaults.exclude = excludes.map((e) => e['@_pattern'] || e)
183183
}
184184

185+
if (defaultsNode['@_dumpFile'] !== undefined) {
186+
defaults.dumpFile = defaultsNode['@_dumpFile']
187+
}
188+
185189
return defaults
186190
}
187191

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
services:
2+
_defaults:
3+
autowire: true
4+
rootDir: ../src
5+
exclude: ["ToExclude"]
6+
dumpFile: ../../../../../../../../../tmp/services-dump-file-relative-test.yaml
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
services:
2+
_defaults:
3+
autowire: true
4+
rootDir: ../src
5+
exclude: ["ToExclude"]
6+
dumpFile: /tmp/services-dump-file-test.yaml

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

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,58 @@ describe('AutowireTS - Bind', () => {
822822
assert.strictEqual(container.binds.get('someParam'), 'someValue')
823823
})
824824
})
825+
826+
describe('AutowireTS - dumpFile', () => {
827+
const resourcesTsFolder = 'Resources-ts'
828+
const autowireFolder = 'Autowire'
829+
const dir = path.join(__dirname, '..', '..', resourcesTsFolder, autowireFolder, 'src')
830+
const dumpFilePath = '/tmp/services-dump-file-test.yaml'
831+
832+
it('should generate a dump file when dumpFile is set in YAML _defaults', async () => {
833+
// Arrange.
834+
const configFile = path.join(
835+
__dirname, '..', '..', resourcesTsFolder, autowireFolder, 'config', 'services-dump-file.yaml'
836+
)
837+
const container = new ContainerBuilder(false, dir)
838+
const loader = new YamlFileLoader(container)
839+
840+
// Act.
841+
await loader.load(configFile)
842+
await container.compile()
843+
844+
// Assert: load the dumped file in a new container and verify services work
845+
const containerDump = new ContainerBuilder(false, dir)
846+
const dumpLoader = new YamlFileLoader(containerDump)
847+
await dumpLoader.load(dumpFilePath)
848+
849+
assert.instanceOf(containerDump.get(FooBar), FooBar)
850+
assert.instanceOf(containerDump.get(Foo), Foo)
851+
assert.instanceOf(containerDump.get(Bar), Bar)
852+
})
853+
854+
it('should generate a dump file when dumpFile is a relative path in YAML _defaults', async () => {
855+
// Arrange.
856+
const relativeDumpFilePath = '/tmp/services-dump-file-relative-test.yaml'
857+
const configFile = path.join(
858+
__dirname, '..', '..', resourcesTsFolder, autowireFolder, 'config', 'services-dump-file-relative.yaml'
859+
)
860+
const container = new ContainerBuilder(false, dir)
861+
const loader = new YamlFileLoader(container)
862+
863+
// Act.
864+
await loader.load(configFile)
865+
await container.compile()
866+
867+
// Assert: load the dumped file in a new container and verify services work
868+
const containerDump = new ContainerBuilder(false, dir)
869+
const dumpLoader = new YamlFileLoader(containerDump)
870+
await dumpLoader.load(relativeDumpFilePath)
871+
872+
assert.instanceOf(containerDump.get(FooBar), FooBar)
873+
assert.instanceOf(containerDump.get(Foo), Foo)
874+
assert.instanceOf(containerDump.get(Bar), Bar)
875+
})
876+
})
825877
import KeyedCheckoutService from '../../Resources-ts/Autowire-Keyed/src/Service/KeyedCheckoutService'
826878
import KeyedPaymentRouterService from '../../Resources-ts/Autowire-Keyed/src/Service/KeyedPaymentRouterService'
827879
import StripePaymentService from '../../Resources-ts/Autowire-Keyed/src/Service/StripePaymentService'

0 commit comments

Comments
 (0)