Skip to content

Commit 95705f1

Browse files
test(logger): cover production info defaults
Co-authored-by: Theodore Li <TheodoreSpeaks@users.noreply.github.com>
1 parent 2852fca commit 95705f1

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

packages/logger/src/index.test.ts

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,86 @@ describe('Logger', () => {
9999
})
100100
})
101101

102+
describe('environment-based log levels', () => {
103+
const env = process.env
104+
const globalRecord = globalThis as Record<string, unknown>
105+
let originalNodeEnv: string | undefined
106+
let originalLogLevel: string | undefined
107+
let hadWindow: boolean
108+
let originalWindow: unknown
109+
110+
beforeEach(() => {
111+
originalNodeEnv = env.NODE_ENV
112+
originalLogLevel = env.LOG_LEVEL
113+
hadWindow = Object.prototype.hasOwnProperty.call(globalRecord, 'window')
114+
originalWindow = globalRecord.window
115+
})
116+
117+
afterEach(() => {
118+
if (originalNodeEnv === undefined) {
119+
delete env.NODE_ENV
120+
} else {
121+
env.NODE_ENV = originalNodeEnv
122+
}
123+
124+
if (originalLogLevel === undefined) {
125+
delete env.LOG_LEVEL
126+
} else {
127+
env.LOG_LEVEL = originalLogLevel
128+
}
129+
130+
if (hadWindow) {
131+
globalRecord.window = originalWindow
132+
} else {
133+
delete globalRecord.window
134+
}
135+
})
136+
137+
test('logs info by default in production on server', () => {
138+
env.NODE_ENV = 'production'
139+
delete env.LOG_LEVEL
140+
141+
const logger = createLogger('ProdServer')
142+
logger.debug('debug message')
143+
logger.info('info message')
144+
145+
expect(consoleLogSpy).toHaveBeenCalledTimes(1)
146+
expect(consoleLogSpy).toHaveBeenCalledWith(
147+
expect.stringContaining('[INFO] [ProdServer]'),
148+
'info message'
149+
)
150+
})
151+
152+
test('respects LOG_LEVEL override in production', () => {
153+
env.NODE_ENV = 'production'
154+
env.LOG_LEVEL = LogLevel.ERROR
155+
156+
const logger = createLogger('ProdOverride')
157+
logger.info('suppressed info')
158+
logger.error('error message')
159+
160+
expect(consoleLogSpy).not.toHaveBeenCalled()
161+
expect(consoleErrorSpy).toHaveBeenCalledTimes(1)
162+
expect(consoleErrorSpy).toHaveBeenCalledWith(
163+
expect.stringContaining('[ERROR] [ProdOverride]'),
164+
'error message'
165+
)
166+
})
167+
168+
test('does not log in production browser runtime', () => {
169+
env.NODE_ENV = 'production'
170+
delete env.LOG_LEVEL
171+
globalRecord.window = {}
172+
173+
const logger = createLogger('ProdBrowser')
174+
logger.info('hidden info')
175+
logger.error('hidden error')
176+
177+
expect(consoleLogSpy).not.toHaveBeenCalled()
178+
expect(consoleErrorSpy).not.toHaveBeenCalled()
179+
})
180+
})
181+
102182
describe('object formatting', () => {
103183
test('should handle null and undefined arguments', () => {
104184
const logger = createLogger('TestModule')

0 commit comments

Comments
 (0)