Spaces:
Sleeping
Sleeping
; | |
var $defineProperty = require('../'); | |
var test = require('tape'); | |
var gOPD = require('gopd'); | |
test('defineProperty: supported', { skip: !$defineProperty }, function (t) { | |
t.plan(4); | |
t.equal(typeof $defineProperty, 'function', 'defineProperty is supported'); | |
if ($defineProperty && gOPD) { // this `if` check is just to shut TS up | |
var o = { a: 1 }; | |
$defineProperty(o, 'b', { enumerable: true, value: 2 }); | |
t.deepEqual( | |
gOPD(o, 'b'), | |
{ | |
configurable: false, | |
enumerable: true, | |
value: 2, | |
writable: false | |
}, | |
'property descriptor is as expected' | |
); | |
$defineProperty(o, 'c', { enumerable: false, value: 3, writable: true }); | |
t.deepEqual( | |
gOPD(o, 'c'), | |
{ | |
configurable: false, | |
enumerable: false, | |
value: 3, | |
writable: true | |
}, | |
'property descriptor is as expected' | |
); | |
} | |
t.equal($defineProperty, Object.defineProperty, 'defineProperty is Object.defineProperty'); | |
t.end(); | |
}); | |
test('defineProperty: not supported', { skip: !!$defineProperty }, function (t) { | |
t.notOk($defineProperty, 'defineProperty is not supported'); | |
t.match( | |
typeof $defineProperty, | |
/^(?:undefined|boolean)$/, | |
'`typeof defineProperty` is `undefined` or `boolean`' | |
); | |
t.end(); | |
}); | |