Skip to content

Commit

Permalink
Add a test
Browse files Browse the repository at this point in the history
  • Loading branch information
segevfiner committed Jan 30, 2025
1 parent 8a33834 commit 417b071
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
22 changes: 11 additions & 11 deletions browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,17 @@ function asObject (logger, level, args, ts, opts) {
let lvl = (logger._childLevel | 0) + 1
if (lvl < 1) lvl = 1

if (ts) {
logObject.time = ts
}

if (levelFormatter) {
const formattedLevel = levelFormatter(level, logger.levels.values[level])
Object.assign(logObject, formattedLevel)
} else {
logObject.level = logger.levels.values[level]
}

if (opts.asObjectBindingsOnly) {
if (msg !== null && typeof msg === 'object') {
while (lvl-- && typeof argsCloned[0] === 'object') {
Expand All @@ -362,17 +373,6 @@ function asObject (logger, level, args, ts, opts) {
const formattedLogObject = logObjectFormatter(logObject)
return [formattedLogObject, ...argsCloned]
} else {
if (ts) {
logObject.time = ts
}

if (levelFormatter) {
const formattedLevel = levelFormatter(level, logger.levels.values[level])
Object.assign(logObject, formattedLevel)
} else {
logObject.level = logger.levels.values[level]
}

// deliberate, catching objects, arrays
if (msg !== null && typeof msg === 'object') {
while (lvl-- && typeof argsCloned[0] === 'object') {
Expand Down
20 changes: 20 additions & 0 deletions test/browser.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ test('opts.browser.asObject logs pino-like object to console', ({ end, ok, is })
instance.info('test')
end()
})

test('opts.browser.asObject uses opts.messageKey in logs', ({ end, ok, is }) => {
const messageKey = 'message'
const instance = require('../browser')({
Expand All @@ -183,6 +184,25 @@ test('opts.browser.asObject uses opts.messageKey in logs', ({ end, ok, is }) =>
end()
})

test('opts.browser.asObjectBindingsOnly passes the bindings but keep the message unformatted', ({ end, ok, is, deepEqual }) => {
const messageKey = 'message'
const instance = require('../browser')({
messageKey,
browser: {
asObjectBindingsOnly: true,
write: function (o, msg, ...args) {
is(o.level, 30)
ok(o.time)
is(msg, 'test %s')
deepEqual(args, ['foo'])
}
}
})

instance.info('test %s', 'foo')
end()
})

test('opts.browser.formatters (level) logs pino-like object to console', ({ end, ok, is }) => {
const info = console.info
console.info = function (o) {
Expand Down

0 comments on commit 417b071

Please sign in to comment.