UNPKG

simple-ioc

Version:

Simple Inversion of Control for node.js

157 lines (156 loc) 6.9 kB
var assert = require( 'assert' ); describe( 'lib/dependencyParser', function() { var dependencyParser; before( function( callback ) { dependencyParser = require( '../../../../lib/containerHelpers/dependencyParser.js' )(); callback(); } ); describe( 'isReservesDependencyName', function() { it( 'Should identify callback parameter as reserved', function() { assert.ok( dependencyParser.isReservedDependencyName( 'callback' ) ); } ); it( 'Should identify parentName parameter as reserved', function() { assert.ok( dependencyParser.isReservedDependencyName( 'parentName' ) ); } ); it( 'Should identify pub parameter as reserved', function() { assert.ok( dependencyParser.isReservedDependencyName( 'pub' ) ); } ); it( 'Should identify setup parameter as reserved', function() { assert.ok( dependencyParser.isReservedDependencyName( 'setup' ) ); } ); it( 'Should not identify other parameter as reserved', function() { assert.ok( !dependencyParser.isReservedDependencyName( 'other' ) ); } ); } ); describe( 'getDependencies', function() { describe( 'parameters', function() { it( 'Should have the correct parameters', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1, p2 ) { var arr = [ p1, callback, pub ]; } ); assert.deepEqual( dependencies.parameters.map( function( parameter ) { return parameter.name; } ), [ 'callback', 'parentName', 'pub', 'setup', 'p1', 'p2' ] ); } ); } ); describe( 'nonReserved', function() { it( 'Should identify all non reserved dependencies', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1, p2 ) { var arr = [ p1, callback, pub ]; } ); assert.deepEqual( dependencies.nonReserved, [ 'p1', 'p2' ] ); } ); } ); describe( 'hasUnused', function() { it( 'Should identify that there are unused parameters', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1, p2 ) { var arr = [ p1, callback, pub ]; } ); assert.ok( dependencies.hasUnused ); } ); it( 'Should identify that there are no unused parameters', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1, p2 ) { var arr = [ callback, parentName, pub, setup, p1, p2 ]; } ); assert.ok( !dependencies.hasUnused ); } ); it( 'Should identify that there are no unused parameters eventhough parentName is unused', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1, p2 ) { var arr = [ callback, pub, setup, p1, p2 ]; } ); assert.ok( !dependencies.hasUnused ); } ); } ); describe( 'unused', function() { it( 'Should omit unused parentName parameter', function() { var dependencies = dependencyParser.getDependencies( function( parentName ) { } ); assert.ok( dependencies.unused.length === 0 ); } ); it( 'Should identify the correct unused dependencies', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1, p2 ) { var arr = [ p1, callback, pub ]; } ); assert.ok( dependencies.hasUnused ); assert.deepEqual( dependencies.unused.map( function( parameter ) { return parameter.name; } ), [ 'setup', 'p2' ] ); } ); } ); describe( 'isReserved', function() { it( 'Should identify reserved dependencies', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1 ) { } ); assert.ok( dependencies.parameters[ 0 ].isReserved ); assert.ok( dependencies.parameters[ 1 ].isReserved ); assert.ok( dependencies.parameters[ 2 ].isReserved ); assert.ok( dependencies.parameters[ 3 ].isReserved ); assert.ok( !dependencies.parameters[ 4 ].isReserved ); } ); } ); describe( 'isCallback/isParentName/isPub/isSetup', function() { it( 'Should identify callback, parentName, pub and setup', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1 ) { } ); assert.ok( dependencies.parameters[ 0 ].isCallback ); assert.ok( dependencies.parameters[ 1 ].isParentName ); assert.ok( dependencies.parameters[ 2 ].isPub ); assert.ok( dependencies.parameters[ 3 ].isSetup ); assert.ok( !dependencies.parameters[ 4 ].isCallback && !dependencies.parameters[ 4 ].isParentName && !dependencies.parameters[ 4 ].isPub && !dependencies.parameters[ 4 ].isSetup ); } ); } ); describe( 'hasCallback', function() { it( 'Should return true if callback dependeny exists among dependencies', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1 ) { } ); assert.ok( dependencies.hasCallback ); } ); it( 'Should return false if no callback dependeny exists among dependencies', function() { var dependencies = dependencyParser.getDependencies( function( parentName, pub, setup, p1 ) { } ); assert.ok( !dependencies.hasCallback ); } ); } ); describe( 'hasParentName', function() { it( 'Should return true if parentName dependeny exists among dependencies', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1 ) { } ); assert.ok( dependencies.hasParentName ); } ); it( 'Should return false if no parentName dependeny exists among dependencies', function() { var dependencies = dependencyParser.getDependencies( function( pub, setup, p1 ) { } ); assert.ok( !dependencies.hasParentName ); } ); } ); describe( 'hasPub', function() { it( 'Should return true if pub dependeny exists among dependencies', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1 ) { } ); assert.ok( dependencies.hasPub ); } ); it( 'Should return false if no pub dependeny exists among dependencies', function() { var dependencies = dependencyParser.getDependencies( function( setup, p1 ) { } ); assert.ok( !dependencies.hasPub ); } ); } ); describe( 'hasSetup', function() { it( 'Should return true if setup dependeny exists among dependencies', function() { var dependencies = dependencyParser.getDependencies( function( callback, parentName, pub, setup, p1 ) { } ); assert.ok( dependencies.hasSetup ); } ); it( 'Should return false if no setup dependeny exists among dependencies', function() { var dependencies = dependencyParser.getDependencies( function( p1 ) { } ); assert.ok( !dependencies.hasSetup ); } ); } ); } ); } );