[#25] Added Getter/Setter validator call tests for MemberBuilder
parent
1332da78a2
commit
1fa92d44a1
|
@ -210,11 +210,11 @@ exports.buildGetterSetter = function(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var prev_data = scanMembers( members, name, base ),
|
var prev_data = scanMembers( members, name, base ),
|
||||||
prev_keywords = {}
|
prev_keywords = null
|
||||||
;
|
;
|
||||||
|
|
||||||
this._validate.validateGetterSetter(
|
this._validate.validateGetterSetter(
|
||||||
name, keywords, prev_data, prev_keywords
|
name, {}, keywords, prev_data, prev_keywords
|
||||||
);
|
);
|
||||||
|
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
|
|
|
@ -242,7 +242,7 @@ exports.prototype.validateProperty = function(
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
*/
|
*/
|
||||||
exports.prototype.validateGetterSetter = function(
|
exports.prototype.validateGetterSetter = function(
|
||||||
name, keywords, prev_data, prev_keywords
|
name, value, keywords, prev_data, prev_keywords
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var prev = ( prev_data ) ? prev_data.member : null,
|
var prev = ( prev_data ) ? prev_data.member : null,
|
||||||
|
@ -266,7 +266,7 @@ exports.prototype.validateGetterSetter = function(
|
||||||
}
|
}
|
||||||
|
|
||||||
// do not permit visibility de-escalation
|
// do not permit visibility de-escalation
|
||||||
if ( this._getVisibilityValue( prev_keywords )
|
if ( this._getVisibilityValue( prev_keywords || {} )
|
||||||
< this._getVisibilityValue( keywords )
|
< this._getVisibilityValue( keywords )
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,146 @@
|
||||||
|
/**
|
||||||
|
* Tests MemberBuilder getter/setter builder
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Mike Gerwitz
|
||||||
|
*
|
||||||
|
* This file is part of ease.js.
|
||||||
|
*
|
||||||
|
* ease.js is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
* Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Mike Gerwitz
|
||||||
|
* @package test
|
||||||
|
*/
|
||||||
|
|
||||||
|
var shared = require( __dirname + '/inc-common' ),
|
||||||
|
es5 = ( typeof Object.defineProperty === 'function' ) ? true : false;
|
||||||
|
|
||||||
|
require( 'common' ).testCase(
|
||||||
|
{
|
||||||
|
caseSetUp: function()
|
||||||
|
{
|
||||||
|
var _self = this;
|
||||||
|
|
||||||
|
this.testArgs = function( args, name, value, keywords )
|
||||||
|
{
|
||||||
|
shared.testArgs( _self, args, name, value, keywords, function(
|
||||||
|
prev_default, pval_given, pkey_given
|
||||||
|
)
|
||||||
|
{
|
||||||
|
var expected = _self.members[ 'public' ][ name ];
|
||||||
|
|
||||||
|
if ( !expected )
|
||||||
|
{
|
||||||
|
return prev_default;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
value: {
|
||||||
|
expected: expected,
|
||||||
|
given: pval_given.member,
|
||||||
|
},
|
||||||
|
keywords: {
|
||||||
|
expected: null, // XXX
|
||||||
|
given: pkey_given,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
} );
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
setUp: function()
|
||||||
|
{
|
||||||
|
// stub factories used for testing
|
||||||
|
var stubFactory = this.require( 'MethodWrapperFactory' )(
|
||||||
|
function( func ) { return func; }
|
||||||
|
);
|
||||||
|
|
||||||
|
this.sut = this.require( 'MemberBuilder' )(
|
||||||
|
stubFactory, stubFactory,
|
||||||
|
this.mockValidate = this.getMock( 'MemberBuilderValidator' )
|
||||||
|
);
|
||||||
|
|
||||||
|
this.members = this.sut.initMembers();
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The validator can only do its job if we're providing it with the correct
|
||||||
|
* information
|
||||||
|
*/
|
||||||
|
'Passes proper data to validator when not overriding': function()
|
||||||
|
{
|
||||||
|
es5 || this.skip();
|
||||||
|
|
||||||
|
var _self = this,
|
||||||
|
called = false,
|
||||||
|
|
||||||
|
name = 'foo',
|
||||||
|
value_get = function get() {},
|
||||||
|
value_set = function set() {},
|
||||||
|
keywords = {}
|
||||||
|
;
|
||||||
|
|
||||||
|
this.mockValidate.validateGetterSetter = function()
|
||||||
|
{
|
||||||
|
called = true;
|
||||||
|
|
||||||
|
// XXX: Currently no 'value' argument is passed
|
||||||
|
_self.testArgs( arguments, name, {}, keywords );
|
||||||
|
};
|
||||||
|
|
||||||
|
this.sut.buildGetterSetter( this.members, {}, name,
|
||||||
|
value_get, value_set, keywords, {}
|
||||||
|
);
|
||||||
|
|
||||||
|
this.assertEqual( true, called,
|
||||||
|
'validateGetterSetter() was not called'
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
'Passes proper data to validator when overriding': function()
|
||||||
|
{
|
||||||
|
es5 || this.skip();
|
||||||
|
|
||||||
|
var _self = this,
|
||||||
|
called = false,
|
||||||
|
|
||||||
|
name = 'foo',
|
||||||
|
value_get = function get() {},
|
||||||
|
value_set = function set() {},
|
||||||
|
keywords = {}
|
||||||
|
;
|
||||||
|
|
||||||
|
// since we're overriding (XXX)
|
||||||
|
this.members[ 'public' ][ name ] = {};
|
||||||
|
|
||||||
|
this.mockValidate.validateGetterSetter = function()
|
||||||
|
{
|
||||||
|
called = true;
|
||||||
|
|
||||||
|
// XXX: Currently no 'value' argument is passed
|
||||||
|
_self.testArgs( arguments, name, {}, keywords );
|
||||||
|
};
|
||||||
|
|
||||||
|
this.sut.buildGetterSetter( this.members, {}, name,
|
||||||
|
value_get, value_set, keywords, {}
|
||||||
|
);
|
||||||
|
|
||||||
|
this.assertEqual( true, called,
|
||||||
|
'validateGetterSetter() was not called'
|
||||||
|
);
|
||||||
|
},
|
||||||
|
} );
|
||||||
|
|
|
@ -47,7 +47,7 @@ exports.testArgs = function( testcase, args, name, value, keywords, prevLookup )
|
||||||
'Incorrect name passed to validator'
|
'Incorrect name passed to validator'
|
||||||
);
|
);
|
||||||
|
|
||||||
testcase.assertStrictEqual( value, args[ 1 ],
|
testcase.assertDeepEqual( value, args[ 1 ],
|
||||||
'Incorrect value passed to validator'
|
'Incorrect value passed to validator'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ exports.testArgs = function( testcase, args, name, value, keywords, prevLookup )
|
||||||
'otherwise null'
|
'otherwise null'
|
||||||
);
|
);
|
||||||
|
|
||||||
testcase.assertStrictEqual( prev.keywords.expected, prev.keywords.given,
|
testcase.assertDeepEqual( prev.keywords.expected, prev.keywords.given,
|
||||||
'Previous keywords should contain prev keyword if ' +
|
'Previous keywords should contain prev keyword if ' +
|
||||||
'overriding, otherwise null'
|
'overriding, otherwise null'
|
||||||
);
|
);
|
||||||
|
|
|
@ -41,7 +41,7 @@ require( 'common' ).testCase(
|
||||||
function( name, startobj, overrideobj )
|
function( name, startobj, overrideobj )
|
||||||
{
|
{
|
||||||
_self.sut.validateGetterSetter(
|
_self.sut.validateGetterSetter(
|
||||||
name, overrideobj,
|
name, {}, overrideobj,
|
||||||
{ get: function() {}, set: function() {} },
|
{ get: function() {}, set: function() {} },
|
||||||
startobj
|
startobj
|
||||||
);
|
);
|
||||||
|
@ -72,7 +72,7 @@ require( 'common' ).testCase(
|
||||||
this.quickFailureTest( name, 'method', function()
|
this.quickFailureTest( name, 'method', function()
|
||||||
{
|
{
|
||||||
_self.sut.validateGetterSetter(
|
_self.sut.validateGetterSetter(
|
||||||
name, {}, { member: function() {} }
|
name, {}, {}, { member: function() {} }
|
||||||
);
|
);
|
||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
|
@ -88,7 +88,7 @@ require( 'common' ).testCase(
|
||||||
this.quickFailureTest( name, 'method', function()
|
this.quickFailureTest( name, 'method', function()
|
||||||
{
|
{
|
||||||
_self.sut.validateGetterSetter(
|
_self.sut.validateGetterSetter(
|
||||||
name, {}, { member: 'foo' }
|
name, {}, {}, { member: 'foo' }
|
||||||
);
|
);
|
||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue