1 | const test = require('tap').test
|
2 | , prr = require('./')
|
3 |
|
4 | test('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 |
|
23 | test('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 |
|
43 | test('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 |
|
69 | test('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 |
|
126 | test('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 | })
|