11jest . mock ( '../src/utils/env.utils' ) ;
22
3- describe ( 'Config' , ( ) => {
4- beforeEach ( ( ) => {
5- jest . resetModules ( ) ;
6- } ) ;
7-
3+ describe ( 'config' , ( ) => {
84 it ( 'should use default logger config values' , ( ) => {
95 jest . mock ( '../src/utils/env.utils' , ( ) => ( {
106 Env : {
@@ -14,11 +10,11 @@ describe('Config', () => {
1410 }
1511 } ) ) ;
1612
17- const { Config } = require ( '../src/config' ) ;
13+ const { config } = require ( '../src/config' ) ;
1814 const { Env } = require ( '../src/utils/env.utils' ) ;
1915
20- expect ( Config . Logger . level ) . toBe ( 'info' ) ;
21- expect ( Config . Logger . name ) . toBe ( '@catbee/utils' ) ;
16+ expect ( config . logger . level ) . toBe ( 'info' ) ;
17+ expect ( config . logger . name ) . toBe ( '@catbee/utils' ) ;
2218
2319 expect ( Env . get ) . toHaveBeenCalledWith ( 'LOGGER_LEVEL' , 'info' ) ;
2420 expect ( Env . get ) . toHaveBeenCalledWith ( 'LOGGER_NAME' , '@catbee/utils' ) ;
@@ -40,10 +36,10 @@ describe('Config', () => {
4036 }
4137 } ) ) ;
4238
43- const { Config } = require ( '../src/config' ) ;
39+ const { config } = require ( '../src/config' ) ;
4440
45- expect ( Config . Logger . level ) . toBe ( 'debug' ) ;
46- expect ( Config . Logger . name ) . toBe ( 'custom-logger' ) ;
41+ expect ( config . logger . level ) . toBe ( 'debug' ) ;
42+ expect ( config . logger . name ) . toBe ( 'custom-logger' ) ;
4743 } ) ;
4844
4945 it ( 'should fallback to npm_package_name when LOGGER_NAME is not set' , ( ) => {
@@ -61,24 +57,53 @@ describe('Config', () => {
6157 }
6258 } ) ) ;
6359
64- const { Config } = require ( '../src/config' ) ;
60+ const { config } = require ( '../src/config' ) ;
6561
66- expect ( Config . Logger . level ) . toBe ( 'warn' ) ;
67- expect ( Config . Logger . name ) . toBe ( 'my-pkg' ) ;
62+ expect ( config . logger . level ) . toBe ( 'warn' ) ;
63+ expect ( config . logger . name ) . toBe ( 'my-pkg' ) ;
6864 } ) ;
6965
7066 it ( 'should still return string for level even if invalid' , ( ) => {
7167 jest . mock ( '../src/utils/env.utils' , ( ) => ( {
7268 Env : {
73- get : jest . fn ( ( ) => 'nonsense ' ) ,
69+ get : jest . fn ( ( ) => 'debug ' ) ,
7470 getBoolean : jest . fn ( ( ) => false ) ,
7571 getNumber : jest . fn ( ( key : string , fallback : number ) => fallback )
7672 }
7773 } ) ) ;
7874
79- const { Config } = require ( '../src/config' ) ;
75+ const { config } = require ( '../src/config' ) ;
76+
77+ expect ( typeof config . logger . level ) . toBe ( 'string' ) ;
78+ expect ( config . logger . level ) . toBe ( 'debug' ) ;
79+ } ) ;
80+
81+ it ( 'should update nested config values without losing others' , ( ) => {
82+ const { config, setConfig } = require ( '../src/config' ) ;
83+
84+ expect ( config . logger . pretty ) . toBe ( false ) ; // based on previous mock
8085
81- expect ( typeof Config . Logger . level ) . toBe ( 'string' ) ;
82- expect ( Config . Logger . level ) . toBe ( 'nonsense' ) ;
86+ setConfig ( { logger : { level : 'debug' } } ) ;
87+
88+ expect ( config . logger . level ) . toBe ( 'debug' ) ;
89+ expect ( config . logger . pretty ) . toBe ( false ) ; // still unchanged
90+ } ) ;
91+
92+ it ( 'should get config' , ( ) => {
93+ const { getConfig } = require ( '../src/config' ) ;
94+
95+ expect ( getConfig ( ) ) . toStrictEqual ( {
96+ logger : {
97+ level : 'debug' ,
98+ name : 'debug' ,
99+ pretty : false
100+ } ,
101+ cache : {
102+ defaultTtl : 3600000
103+ } ,
104+ http : {
105+ timeout : 30000
106+ }
107+ } ) ;
83108 } ) ;
84109} ) ;
0 commit comments