Skip to content

Commit

Permalink
add: info on reason-string maxLength chars
Browse files Browse the repository at this point in the history
  • Loading branch information
dbale-altoros committed Jul 10, 2023
1 parent c561e53 commit 827c88b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
11 changes: 8 additions & 3 deletions lib/rules/best-practises/reason-string.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,12 @@ class ReasonStringChecker extends BaseChecker {
// If has reason message and is too long, throw an error
const reason = _.last(functionParameters).value
if (reason.length > this.maxCharactersLong) {
this._errorMessageIsTooLong(node, functionName)
const infoMessage = reason.length
.toString()
.concat(' counted / ')
.concat(this.maxCharactersLong.toString())
.concat(' allowed')
this._errorMessageIsTooLong(node, functionName, infoMessage)
}
}
}
Expand All @@ -103,8 +108,8 @@ class ReasonStringChecker extends BaseChecker {
this.error(node, `Provide an error message for ${key}`)
}

_errorMessageIsTooLong(node, key) {
this.error(node, `Error message for ${key} is too long`)
_errorMessageIsTooLong(node, key, infoMessage) {
this.error(node, `Error message for ${key} is too long: ${infoMessage}`)
}
}

Expand Down
21 changes: 21 additions & 0 deletions test/rules/best-practises/reason-string.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,25 @@ describe('Linter - reason-string', () => {
assertNoWarnings(report)
assertNoErrors(report)
})

it('should raise reason string maxLength error with added data', () => {
const qtyChars = 'Roles: account already has role'.length
const maxLength = 5

const code = funcWith(`require(!has(role, account), "Roles: account already has role");
role.bearer[account] = true;role.bearer[account] = true;
`)

const report = linter.processStr(code, {
rules: { 'reason-string': ['warn', { maxLength: 5 }] },
})

assert.ok(report.warningCount > 0)
assertWarnsCount(report, 1)

assert.equal(
report.reports[0].message,
`Error message for require is too long: ${qtyChars} counted / ${maxLength} allowed`
)
})
})

0 comments on commit 827c88b

Please sign in to comment.