assertion
Assertion Library for Browser and Node.JS
Last updated 9 years ago by tenbits .
MIT · Original npm · Tarball · package.json
$ cnpm install assertion 
SYNC missed versions from official npm registry.

Assertion Library for Browsers and NodeJS

Build Status NPM version Bower version

Based on the API Interface of the NodeJS Assert module. And is part of the uTest Library.

As a standalone module can be found in NPM repository

npm install assertion
API
NodeJS API
  • Assert Documentation

    assert
    
    	equal
    	notEqual
    	deepEqual
    	notDeepEqual
    	strictEqual
    	notStrictEqual
    	throws
    	doesNotThrow
    	ifError
    
Additional API
  • has / hasNot

    Subset matching

    // Substring search
    assert.has(String, String | RegExp, ?message);
    
    // Simple property existence check
    assert.has(Object, String);
    
    // Sub-object match
    assert.has(Object, Object);
    
    // Check if item exists in set
    assert.has(Array, Primitive);
    
    // Subset match
    assert.has(Array, Array);
    

    When checking arrays or objects, deep matching is performed. See tests

    
    assert.has({
    	foo: 'foo',
    	bar: {
    		qux: {
    			qux: 'qux'
    			quux: 'quux'
    		},
    		baz: [1, 2, 3]
    	}
    }, {
    	foo: null,
    	bar: {
    		baz: [1],
    		qux: {
    			qux: 'qux'
    		}
    	}
    });
    
    
  • is/isNot

    Type check

    	// Check by Typename
    	assert.is(Any, String, ?message)
    	
    	// Check by Contructor (instanceof)
    	assert.is(Any, Function);
    

    Typename is extracted from Object.prototype.toString.call, so these are:

    	'String'
    	'Number'
    	'Null'
    	'Undefined'
    	'Function'
    	'RegExp'
    	'Date'
    	'Object' // any `object` will pass here
    	'HTML**' // DOM Node, e.g. HTMLBodyElement
    	'CustomEvent'
    	...
    	all other built-in types
    
  • lessThan lessThanOrEqaul greaterThan greaterThanOrEqual

    Compares two digits

  • Aliases

    There are also aliases (which can be set to globals, to simplify the write-read of tests)

    assert.eq_      === assert.equal
    assert.notEq_   === assert.notEqual
    
    assert.lt_      === assert.lessThan
    assert.lte_     === assert.lessThanOrEqaul
    assert.gt_      === assert.greaterThan
    assert.gt_      === assert.greaterThanOrEqual
    
    assert.deepEq_  === assert.deepEqual
    assert.notDeepEq_  === assert.notDeepEqual
    
  • jQuery

    jQuery Assertion Extensions (alias name syntax)

    	$.fn.eq_
    	$.fn.notEq_
    	$.fn.deepEq_
    	$.fn.notDeepEq_
    	$.fn.has_
    	$.fn.hasNot_
    	$.fn.lt_
    	$.fn.lte_
    	$.fn.gt_
    	$.fn.gte_
    

    Functions API:

    • Get Property
      • (Key, Expected)
      • ([Key, Expected], message)
    • Function call
      • (FnName [, ...arguments], Expected)
      • ([FnName [, ...arguments], Expected], message)

    has/hasNot

    • Node Find/Filter Assertions
      • (Selector, ?ExpectedCount)

    Example:

    // <div class='container' id='foo'>
    //		<h4>Baz</h4>
    //		<span>Qux</span>
    // </div>
    
    $('.container')
    	.eq_('length', 1)
    	.eq_('attr', 'id', 'foo')
    	.eq_('hasClass', 'container', true)
    	
    	.children()
    	.eq_('length', 2)
    	.has_('html', 'span')
    	
    	.filter('h4')
    	.eq_('length', 1)
    	.eq_('text', 'Baz')
    	
    	// addition sample
    	.is_('visible'),
    	.is_('hidden')
    	.eq_('css', 'border-left-width', '2px')
    	;
    	
    $('.container')
    	.has_('h4')
    	.hasNot_('h1')
    	;
    
  • Assert callbacks calls

    • await

      Wait for a callback

      Creates a wrapper function to ensure that the function is called.

      	// ! Arguments order does not matter
      	var fn = assert.await(
      		String   /* optional - name of this wrapper*/
      		Function /* optional - wrap the function*/,
      		Object   /* optional - use binded context*/,
      		Number   /* optional - expectation count, default is `1`*/
      	);
      	
      	// creates item in assert.callbacks
      	[
      		{
      			name: String,
      			error: Error, // to receive the stack trace
      			count: Number
      		}
      	];
      	
      	// after the `fn` function is called `count` times, then the object is removed
      	// from the callbacks set
      	
      	
      	// Example
      	var fn = assert.await();
      	assert.callbacks.length === 1;
      	try {
      		throw new Error()
      	} catch {
      		fn();
      	}
      	
      	assert.callbacks.length === 0;
      	
      
    • avoid

      Unexpect more then N function calls

      // ! Arguments order does not matter
      var fn = assert.avoid(
      	String   /* optional - name of this wrapper*/
      	Function /* optional - wrap the function*/,
      	Object   /* optional - use binded context*/,
      	Number   /* optional - amount of allowed calls, default is `0`*/
      );
      
      fooDfr()
      	.fail(assert.avoid())
      	.done(function(){
      		// ..
      	})
      	
      
      
  • Listener

    You can attach listener to the assertions. Event Types:

    • start
    • fail

      if fail type listener is attached, then exceptions are not thrown.

    • success
    // sample
    assert.on('fail', function(error){
    	error instanceof assert.AssertionError;
    });
    

:copyright: MIT - The Atma.js Project

Current Tags

  • 1.3.35                                ...           latest (9 years ago)

33 Versions

  • 1.3.35                                ...           9 years ago
  • 1.3.34                                ...           9 years ago
  • 1.3.33                                ...           9 years ago
  • 1.3.31                                ...           9 years ago
  • 1.3.29                                ...           9 years ago
  • 1.3.27                                ...           9 years ago
  • 1.3.25                                ...           11 years ago
  • 1.3.24                                ...           11 years ago
  • 1.3.23                                ...           11 years ago
  • 1.3.22                                ...           11 years ago
  • 1.3.21                                ...           11 years ago
  • 1.3.20                                ...           11 years ago
  • 1.2.19                                ...           11 years ago
  • 1.2.18                                ...           11 years ago
  • 1.2.17                                ...           11 years ago
  • 1.2.16                                ...           11 years ago
  • 1.2.15                                ...           11 years ago
  • 1.2.14                                ...           11 years ago
  • 1.2.13                                ...           11 years ago
  • 1.1.12                                ...           11 years ago
  • 0.100.8                                ...           11 years ago
  • 0.100.7                                ...           11 years ago
  • 0.100.6                                ...           12 years ago
  • 0.100.5                                ...           12 years ago
  • 0.100.4                                ...           12 years ago
  • 0.100.3                                ...           12 years ago
  • 0.100.1                                ...           12 years ago
  • 0.99.100                                ...           12 years ago
  • 0.99.99                                ...           12 years ago
  • 0.99.98                                ...           12 years ago
  • 0.99.97                                ...           12 years ago
  • 0.99.96                                ...           12 years ago
  • 0.99.95                                ...           12 years ago
Maintainers (1)
Downloads
Today 0
This Week 11
This Month 23
Last Day 1
Last Week 12
Last Month 0
Dependencies (0)
None
Dev Dependencies (1)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |