DoneJS StealJS jQuery++ FuncUnit DocumentJS
6.0.1
5.33.2 4.3.0 3.14.1 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-bind
      • can-compute
      • can-debug
      • can-deep-observable
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-backup
      • can-define-stream
      • can-define-stream-kefir
      • can-event-queue
      • can-kefir
      • can-list
      • can-map
      • can-map-compat
      • can-map-define
      • can-observable-array
      • can-observable-object
      • can-observation
      • can-observation-recorder
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
      • can-value
    • Views
      • can-attribute-observable
      • can-component
      • can-observable-bindings
      • can-stache
      • can-stache-bindings
      • can-stache-converters
      • can-stache-element
      • can-stache-route-helpers
      • can-view-autorender
      • can-view-callbacks
      • can-view-import
      • can-view-model
      • can-view-parser
      • can-view-scope
      • can-view-target
      • steal-stache
    • Data Modeling
      • can-connect
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-tag
      • can-define-realtime-rest-model
      • can-define-rest-model
      • can-fixture
      • can-fixture-socket
      • can-local-store
      • can-memory-store
      • can-ndjson-stream
      • can-query-logic
      • can-realtime-rest-model
      • can-rest-model
      • can-set-legacy
      • can-super-model
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-hash
      • can-route-mock
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-diff
      • can-globals
      • can-join-uris
      • can-key
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-queues
      • can-string
      • can-string-to-any
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-child-nodes
      • can-control
      • can-dom-data
      • can-dom-events
      • can-dom-mutate
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-fragment
    • Data Validation
      • can-define-validate-validatejs
        • DefineMap.prototype
          • errors
          • testSet
      • can-type
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-data-types
      • can-namespace
      • can-reflect
      • can-reflect-dependencies
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

testSet

  • Edit on GitHub

Tests value changes against constraints. Does not set errors on map instance.

testSet()

Calls validator on the current values of a can-define/map/map. This is essentially the same as calling errors().

Returns

{Errors}:

Will return undefined if map is valid. Otherwise, will return an array of [can-validate/types/errors].

const Person = new DefineMap( {
    name: {
        validate: {
            presence: true
        }
    }
} );
const person = new Person();
person.testSet();

// returns: [{message: "is required", related: "name"}]

map.testSet(keyName, value)

Changes keyName's value in the map instance clone. Then checks if the object is valid.

const Person = new DefineMap( {
  name: {
      validate: {
          presence: true
      }
  }
} );
const person = new Person( { name: "Juan" } );
person.testSet( "name", "" );

//=> [{message: "is required", related: "name"}]

Parameters

  1. keyName {string}:

    The property key to test

  2. value {*}:

    The new value to test for keyName.

Returns

{Errors}:

Will return undefined if test map is valid. Otherwise, will return an array of Errors.

map.testSet(props, useNewInstance)

Replaces many values on the map instance clone. Making useNewInstance set to true will create a new instance of the map and test changes on the clean instance.

const Person = new DefineMap( {
  name: {
      validate: {
          presence: true
      }
  },
  age: {
      validate: {
          numericality: true
      }
  }
} );
const person = new Person( { name: "Juan", age: 35 } );

// this returns [{message: "is required", related: "name"}]
person.testSet( { name: "" } );

//this returns [{message: "is required", related: "name"}]
person.testSet( { age: 35 }, true );

Parameters

  1. props {object}:

    An object of key/value pairs, where key is a property in the map instance that will update to the new value.

  2. useNewInstance {boolean}:

    If true, will use a new instance of the map constructor, then test changes against that new map instance.

Returns

{Errors}:

Will return undefined if test map is valid. Otherwise, will return an array of Errors.

Usage

With the exception of calling testSet with no arguments, testSet is called on a copy of the map instance, this is to prevent errors from being set on the map instance when using testSet. This means that errors returned are a result of the values provided through arguments being merged with the existing values.

This behavior can be controlled when testing multiple values by passing true for useNewInstance. This will test values with a new instance of the map constructor, allowing better control of what values are tested.

map.testSet( { name: "", age: 100 }, true );

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 6.0.1.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news