spec: Tests for remote ES6 class

This commit is contained in:
Cheng Zhao 2016-02-22 12:13:26 +08:00
parent 67324ce732
commit f610e332b3
2 changed files with 66 additions and 0 deletions

View file

@ -1,3 +1,5 @@
'use strict';
const assert = require('assert');
const path = require('path');
@ -98,6 +100,41 @@ describe('ipc module', function() {
});
});
describe('remote class', function() {
let cl = remote.require(path.join(fixtures, 'module', 'class.js'));
let base = cl.base;
let derived = cl.derived;
it('can get methods', function() {
assert.equal(base.method(), 'method');
});
it('can get properties', function() {
assert.equal(base.readonly, 'readonly');
});
it('can change properties', function() {
assert.equal(base.value, 'old');
base.value = 'new';
assert.equal(base.value, 'new');
base.value = 'old';
});
it('has unenumerable methods', function() {
assert(!base.hasOwnProperty('method'));
assert(Object.getPrototypeOf(base).hasOwnProperty('method'));
});
it('keeps prototype chain in derived class', function() {
assert.equal(derived.method(), 'method');
assert.equal(derived.readonly, 'readonly');
assert(!derived.hasOwnProperty('method'));
let proto = Object.getPrototypeOf(derived);
assert(!proto.hasOwnProperty('method'));
assert(Object.getPrototypeOf(proto).hasOwnProperty('method'));
});
});
describe('ipc.sender.send', function() {
it('should work when sending an object containing id property', function(done) {
var obj = {

29
spec/fixtures/module/class.js vendored Normal file
View file

@ -0,0 +1,29 @@
'use strict';
let value = 'old';
class BaseClass {
method() {
return 'method';
}
get readonly() {
return 'readonly';
}
get value() {
return value;
}
set value(val) {
value = val;
}
}
class DerivedClass extends BaseClass {
}
module.exports = {
base: new BaseClass,
derived: new DerivedClass,
}