Documentationcurrent version
Help us improve the docs by fixing typos and proposing enhancements.


Action "assert"

Assert an action return true or an array with all items equals to true.

When calling children, ensure they return true and that the value is not altered with the raw_output metadata.

When the not option is active and if an array is returned, all the items must equals false for the assertion to succeed.

Casting rules

Casting is activated by default and is disabled when the strict configuration is active.

  • Strings and buffers are true unless empty
  • Numbers above 0 are true
  • Values of null and undefined are false
  • Object literals are true if they contain keys
  • Function are invalid and throw a NIKITA_ASSERT_INVALID_OUTPUT error


Assert succeed when the handler return true:

nikita.assert( () => {
  return true

Assert succeed when the handler return a promise which resolves with true:

nikita.assert( () => {
  return new Promise( (resolve) => {


on_action = (action) ->
  action.handler = ( (handler) -> ({config}) ->
    result = await @call
      $raw_output: true
      $handler: handler
    result = [result] unless Array.isArray result
    unless config.strict
      result = then (res) ->
        switch typeof res
          when 'undefined' then false
          when 'boolean' then !!res
          when 'number' then !!res
          when 'string' then !!res.length
          when 'object'
            if Buffer.isBuffer res then !!res.length
            else if res is null then false
            else !!Object.keys(res).length
          when 'function'
            throw utils.error 'NIKITA_ASSERT_INVALID_OUTPUT', [
              'assertion does not accept functions'
    result = not result.some (res) ->
      unless config.not
      then res isnt true
      else res is true
    throw utils.error 'NIKITA_ASSERT_UNTRUE', [
      'assertion did not validate,'
      "got #{JSON.stringify result}"
    ] unless result is true

Schema definitions

definitions =
    type: 'object'
        type: 'boolean'
        default: false
        description: '''
        Negates the validation.
        type: 'boolean'
        default: false
        description: '''
        Cancel the casting of output into a boolean value.


module.exports =
    on_action: on_action
    definitions: definitions


utils = require '../utils'
Edit on GitHub

Nikita is an open source project hosted on GitHub and developed by Adaltas.