import { EnvConfigSettings, ConfigSettingsPath } from '../../src'; import { ConfigSettingsBuilder } from '../../src/builder/ConfigSettingsBuilder'; import { configRootsDir } from '../helpers'; import * as path from 'path'; describe(`File Importing`, () => { const refsRoot = path.join(configRootsDir, 'refs'); interface AppSettings { appsetting1: string; appsetting2: string; } interface BuildSettings { setting1: string; setting2: string; appSettings: AppSettings; looseFileSetting: any } it('Should properly load a referenced config directory (NODE_ENV=development)', async () => { process.env.NODE_ENV = 'development'; const pathOptions: ConfigSettingsPath = { rootPath: refsRoot, baseName: 'build' } const built = await ConfigSettingsBuilder.build(pathOptions) expect(built.setting1).toEqual('baseValue1'); //expect(built.appSettings).toEqual('$ref=../app/.settings'); expect(built.appSettings.appsetting1).toEqual('baseValue1'); expect(built.appSettings.appsetting2).toEqual('devValue2'); }); it('Should properly load a referenced config directory (NODE_ENV=production)', async () => { process.env.NODE_ENV = 'production'; const pathOptions: ConfigSettingsPath = { rootPath: refsRoot, baseName: 'build' } const built = await ConfigSettingsBuilder.build(pathOptions) expect(built.setting1).toEqual('baseValue1'); //expect(built.appSettings).toEqual('$ref=../app/.settings'); expect(built.appSettings.appsetting1).toEqual('baseValue1'); expect(built.appSettings.appsetting2).toEqual('prodValue2'); }); it('Should properly load a referenced config directory with a custom environment variable', async () => { process.env.NODE_ENV = 'production'; process.env.TEST_SETTING_2 = 'my env val'; const pathOptions: ConfigSettingsPath = { rootPath: refsRoot, baseName: 'build' } const built = await ConfigSettingsBuilder.build(pathOptions) expect(built.setting1).toEqual('baseValue1'); //expect(built.appSettings).toEqual('$ref=../app/.settings'); expect(built.appSettings.appsetting1).toEqual('baseValue1'); expect(built.appSettings.appsetting2).toEqual('my env val'); }); it('Should properly load a referenced config file', async () => { process.env.NODE_ENV = 'development'; const pathOptions: ConfigSettingsPath = { rootPath: refsRoot, baseName: 'build' } const built = await ConfigSettingsBuilder.build(pathOptions) expect(built.setting1).toEqual('baseValue1'); expect(built.appSettings.appsetting1).toEqual('baseValue1'); expect(built.looseFileSetting).toMatchObject({ appsetting2: 'loosefileval' }); }); });