1const test = require('tap').test 2 , prr = require('./') 3 4test('test prr(o, key, value) form', function (t) { 5 t.plan(2) 6 7 var o = {} 8 prr(o, 'foo', 'bar') 9 t.equal(o.foo, 'bar', 'correct value') 10 t.deepEqual( 11 Object.getOwnPropertyDescriptor(o, 'foo') 12 , { 13 enumerable : false 14 , configurable : false 15 , writable : false 16 , value : 'bar' 17 } 18 , 'correct property descriptor' 19 ) 20 t.end() 21}) 22 23test('test prr(o, { key: value }) form', function (t) { 24 t.plan(2) 25 26 var o = {} 27 prr(o, { foo: 'bar' }) 28 29 t.equal(o.foo, 'bar', 'correct value') 30 t.deepEqual( 31 Object.getOwnPropertyDescriptor(o, 'foo') 32 , { 33 enumerable : false 34 , configurable : false 35 , writable : false 36 , value : 'bar' 37 } 38 , 'correct property descriptor' 39 ) 40 t.end() 41}) 42 43test('test multiple key:value pairs', function (t) { 44 var o = { foo: 'bar' } 45 46 prr(o, { one: 'ONE', two: 'TWO', obj: { o: 'o' }}) 47 48 t.deepEqual(o, { foo: 'bar' }, 'properties are not enumerable') 49 t.equal(o.one, 'ONE', 'correctly set property') 50 t.equal(o.two, 'TWO', 'correctly set property') 51 t.deepEqual(o.obj, { o: 'o' }, 'correctly set property') 52 53 ;[ 'one', 'two', 'obj' ].forEach(function (p) { 54 t.deepEqual( 55 Object.getOwnPropertyDescriptor(o, p) 56 , { 57 enumerable : false 58 , configurable : false 59 , writable : false 60 , value : p == 'obj' ? { o: 'o' } : p.toUpperCase() 61 } 62 , 'correct property descriptor' 63 ) 64 }) 65 66 t.end() 67}) 68 69test('test descriptor options', function (t) { 70 var o = {} 71 72 prr(o, 'foo', 'bar', { 73 enumerable : true 74 , configurable : false 75 }) 76 t.equal(o.foo, 'bar', 'correct value') 77 t.deepEqual( 78 Object.getOwnPropertyDescriptor(o, 'foo') 79 , { 80 enumerable : true 81 , configurable : false 82 , writable : false 83 , value : 'bar' 84 } 85 , 'correct property descriptor' 86 ) 87 88 prr(o, 'foo2', 'bar2', { 89 enumerable : true 90 , configurable : true 91 , writable : false 92 }) 93 t.equal(o.foo2, 'bar2', 'correct value') 94 t.deepEqual( 95 Object.getOwnPropertyDescriptor(o, 'foo2') 96 , { 97 enumerable : true 98 , configurable : true 99 , writable : false 100 , value : 'bar2' 101 } 102 , 'correct property descriptor' 103 ) 104 105 prr(o, 'foo3', 'bar3', { 106 enumerable : true 107 , configurable : true 108 , writable : true 109 }) 110 t.equal(o.foo3, 'bar3', 'correct value') 111 t.deepEqual( 112 Object.getOwnPropertyDescriptor(o, 'foo3') 113 , { 114 enumerable : true 115 , configurable : true 116 , writable : true 117 , value : 'bar3' 118 } 119 , 'correct property descriptor' 120 ) 121 122 t.end() 123}) 124 125 126test('test descriptor options, string form', function (t) { 127 var o = {} 128 129 prr(o, 'foo', 'bar', 'e') 130 t.equal(o.foo, 'bar', 'correct value') 131 t.deepEqual( 132 Object.getOwnPropertyDescriptor(o, 'foo') 133 , { 134 enumerable : true 135 , configurable : false 136 , writable : false 137 , value : 'bar' 138 } 139 , 'correct property descriptor' 140 ) 141 142 prr(o, 'foo2', 'bar2', 'ec') 143 t.equal(o.foo2, 'bar2', 'correct value') 144 t.deepEqual( 145 Object.getOwnPropertyDescriptor(o, 'foo2') 146 , { 147 enumerable : true 148 , configurable : true 149 , writable : false 150 , value : 'bar2' 151 } 152 , 'correct property descriptor' 153 ) 154 155 prr(o, 'foo3', 'bar3', 'ecw') 156 t.equal(o.foo3, 'bar3', 'correct value') 157 t.deepEqual( 158 Object.getOwnPropertyDescriptor(o, 'foo3') 159 , { 160 enumerable : true 161 , configurable : true 162 , writable : true 163 , value : 'bar3' 164 } 165 , 'correct property descriptor' 166 ) 167 168 t.end() 169}) 170