1.0.3 drop using Reflect, add event emitter to test suite
parent
ae5b5032ba
commit
cf3c23f9e2
|
@ -1 +1,2 @@
|
||||||
node_modules
|
node_modules
|
||||||
|
*.lock
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@uci-utils/class-merge",
|
"name": "@uci-utils/class-merge",
|
||||||
"version": "1.0.1",
|
"version": "1.0.3",
|
||||||
"description": "Function to merge classes when making an extended class",
|
"description": "Function to merge classes when making an extended class",
|
||||||
"main": "src/merge.js",
|
"main": "src/merge.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -26,6 +26,7 @@
|
||||||
"homepage": "https://github.com/uCOMmandIt/uci-utils/class-merge#readme",
|
"homepage": "https://github.com/uCOMmandIt/uci-utils/class-merge#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"chai": "^4.2.0",
|
"chai": "^4.2.0",
|
||||||
|
"chai-eventemitter": "^1.1.1",
|
||||||
"esm": "^3.2.25",
|
"esm": "^3.2.25",
|
||||||
"mocha": "^7.0.1",
|
"mocha": "^7.0.1",
|
||||||
"nodemon": "^2.0.2"
|
"nodemon": "^2.0.2"
|
||||||
|
|
|
@ -19,13 +19,14 @@ export default (base, ...mixins) => {
|
||||||
|
|
||||||
/* copy properties */
|
/* copy properties */
|
||||||
let copyProps = (target, source) => {
|
let copyProps = (target, source) => {
|
||||||
Reflect.ownKeys(source)
|
Object.getOwnPropertyNames(source)
|
||||||
|
.concat(Object.getOwnPropertySymbols(source))
|
||||||
.forEach((prop) => {
|
.forEach((prop) => {
|
||||||
if (typeof prop.match ==='function') {
|
if (typeof prop.match ==='function') {
|
||||||
if (prop.match(/^(?:initializer|constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/))
|
if (prop.match(/^(?:initializer|constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Reflect.set(target,prop,Reflect.getOwnPropertyDescriptor(source, prop))
|
Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
import merge from '../src/merge.js'
|
import merge from '../src/merge.js'
|
||||||
import { expect } from 'chai'
|
import chai, { expect } from 'chai'
|
||||||
|
import eventemitter from 'chai-eventemitter'
|
||||||
|
import { EventEmitter as Emitter } from 'events'
|
||||||
|
|
||||||
|
chai.use(eventemitter)
|
||||||
|
|
||||||
|
|
||||||
describe('Class Merge', function () {
|
describe('Class Merge', function () {
|
||||||
|
@ -24,7 +28,7 @@ describe('Class Merge', function () {
|
||||||
set y (v) { this._y = v }
|
set y (v) { this._y = v }
|
||||||
}
|
}
|
||||||
|
|
||||||
var Rectangle = class Rectangle extends merge(Shape, Colored, ZCoord) {}
|
var Rectangle = class Rectangle extends merge(Shape, Colored, ZCoord, Emitter) {}
|
||||||
|
|
||||||
var rect = new Rectangle(7, 42)
|
var rect = new Rectangle(7, 42)
|
||||||
rect.z = 1000
|
rect.z = 1000
|
||||||
|
@ -36,6 +40,17 @@ describe('Class Merge', function () {
|
||||||
expect(rect.y).to.be.equal(42)
|
expect(rect.y).to.be.equal(42)
|
||||||
expect(rect.z).to.be.equal(1000)
|
expect(rect.z).to.be.equal(1000)
|
||||||
expect(rect.color).to.be.equal('red')
|
expect(rect.color).to.be.equal('red')
|
||||||
})
|
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should handle more complex mixin', function () {
|
||||||
|
// rect.on('test',(data)=>expect(data).to.be.equal('some data'))
|
||||||
|
// rect.emit('test','some data')
|
||||||
|
expect(function(){ rect.emit('test', 'some data') }).to.emitFrom(rect, 'test', 'some data')
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue