Skip to content

Commit 6bcfcb9

Browse files
committed
chore: addl class tests
1 parent 8089f11 commit 6bcfcb9

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

Diff for: test/index.js

+57
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,63 @@ Classes('constructor properties', () => {
106106
assert.equal(output.val, 42);
107107
});
108108

109+
Classes('constructor properties :: class', () => {
110+
class Test {
111+
constructor(num) {
112+
this.value = num;
113+
}
114+
}
115+
116+
Test.prototype.val = 42;
117+
118+
const input = new Test(123);
119+
const output = klona(input);
120+
121+
assert.deepEqual(input, output);
122+
assert.deepEqual(output.constructor, Test);
123+
assert.deepEqual(output.__proto__, { val: 42 });
124+
125+
assert.equal(output.value, 123);
126+
assert.equal(output.val, 42);
127+
});
128+
129+
Classes('constructor properties :: defaults', () => {
130+
class Test {
131+
constructor(num = 123) {
132+
this.value = num;
133+
}
134+
}
135+
136+
const input = new Test(456);
137+
const output = klona(input);
138+
139+
assert.deepEqual(input, output);
140+
assert.equal(output.value, 456);
141+
});
142+
143+
Classes('accessors', () => {
144+
class Test {
145+
get val() {
146+
return 42;
147+
}
148+
}
149+
150+
const input = new Test();
151+
const output = klona(input);
152+
153+
assert.deepEqual(input, output);
154+
assert.deepEqual(output.constructor, Test);
155+
assert.deepEqual(output.__proto__, {});
156+
157+
assert.deepEqual(
158+
// @ts-ignore
159+
Object.getOwnPropertyDescriptor(input.__proto__, 'val'),
160+
Object.getOwnPropertyDescriptor(output.__proto__, 'val'),
161+
);
162+
163+
assert.equal(output.val, 42);
164+
})
165+
109166
Classes.run();
110167

111168
// ---

0 commit comments

Comments
 (0)