sitter

Testing framework suitable for simple unit-structure-comparisons

Usage no npm install needed!

<script type="module">
  import sitter from 'https://cdn.skypack.dev/sitter';
</script>

README

Sitter

A small test framework for Node.js written in ES6. Best suitable for comparing simple structures in purpose-written unit tests:

  • JSON
  • array
  • plain object
  • js primitive types

Was written to provide a clean and simple output on such simple unit tests. Based on:

Exposes several assert types:

  • equal
    • equality ==
  • equalStrict
    • identity ===
  • deepEqual
    • in depth with leafs beeing compared with equality ==
  • deepEqualStrict
    • in depth with leaf beeing compared with identity ===
    • default option
    • recommended as it works fine on primitive types

More on equality comparison in JS on Equality comparisons and sameness.

Usage

Install with:

npm install sitter --save
// module import
var Sitter = require('sitter').Sitter;

// samples to assert
var toTest = [
    {
        result:{a:1, b:2},
        expected:{a:1, b:2}
    },
    {
        result:null,
        expected:undefined
    },
    {
        result:[1, 2, 3],
        expected:[1, 3, 2]
    }
];

//====================================================================//
// An instance of a single Sitter.                                    //
// The one paramter is a String which is the name of the group of the // 
//   asserts that are to be performed.                                //
//====================================================================//
let localTest = new Sitter('LOCAL TEST');

//==================================================================//
// Each assert is configured in a plain object.                     //
// The same object can be reused in multiple asserts under the same //
//   instance of Sitter.                                            //
//==================================================================//
let localTestData = {
    result:null,
    expected:null,
    assertType:'deepEqualStrict',
    message:'',
    entry:''
};

for (let i = 0; i < toTest.length; i++) {
    localTest.asserts({
        result:toTest[i]['result'],
        expected:toTest[i]['expected'],
        assertType:'deepEqualStrict',
        entry:'CASE ' + i
    });
}

This will output:

————————[LOCAL TEST]
  └———[CASE 0]			PASS ✓
  └———[CASE 1]			FAIL ×
  └———[CASE 2]			FAIL ×

Internally, each instance holds an Array of entry names that have failed (.failedAsserts) and that one that have passed (.passedAsserts):

console.log(localTest.failedAsserts);
console.log(localTest.passedAsserts);

For an example, see src/test/test

Sitter

var Sitter = require('sitter').Sitter;
let localTest = new Sitter(<TEST NAME>, <OPTIONS>);
  • <TEST NAME>
    • String
    • OPTIONAL - defaults to some random name
  • <OPTIONS>
    • plain object
    • OPTIONAL
    • properties:
      • hideLogs
        • Boolean
        • OPTIONAL
        • defaults to false
        • hide the console logs

Assertion

localTest.asserts({
    result:<RESULT>,
    expected:<EXPECTED>,
    assertType:<ASSERT TYPE>,
    message:<MESSAGE>,
    entry:<ENTRY>
});
  • <RESULT>
    • REQUIRED
    • what is to be tested
    • primitives, plain objects, JSON, array
  • <EXPECTED>
    • REQUIRED
    • what is to be expected
    • primitives, plain objects, JSON, array
  • <ASSERT TYPE>
    • String
    • OPTIONAL - defaults to deepEqualStrict
    • one of the assert types
  • <MESSAGE>
    • String
    • OPTIONAL - defaults to ''
    • additional message to display - 'should fail' for instance
  • <ENTRY>
    • String
    • RECOMMENDED - defaults to ''
    • the name of a single assert

Test

Run npm test in the root of the module.