1.0.3 drop using Reflect, add event emitter to test suite
parent
ae5b5032ba
commit
cf3c23f9e2
|
@ -1 +1,2 @@
|
|||
node_modules
|
||||
*.lock
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@uci-utils/class-merge",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.3",
|
||||
"description": "Function to merge classes when making an extended class",
|
||||
"main": "src/merge.js",
|
||||
"scripts": {
|
||||
|
@ -26,6 +26,7 @@
|
|||
"homepage": "https://github.com/uCOMmandIt/uci-utils/class-merge#readme",
|
||||
"devDependencies": {
|
||||
"chai": "^4.2.0",
|
||||
"chai-eventemitter": "^1.1.1",
|
||||
"esm": "^3.2.25",
|
||||
"mocha": "^7.0.1",
|
||||
"nodemon": "^2.0.2"
|
||||
|
|
|
@ -19,13 +19,14 @@ export default (base, ...mixins) => {
|
|||
|
||||
/* copy properties */
|
||||
let copyProps = (target, source) => {
|
||||
Reflect.ownKeys(source)
|
||||
Object.getOwnPropertyNames(source)
|
||||
.concat(Object.getOwnPropertySymbols(source))
|
||||
.forEach((prop) => {
|
||||
if (typeof prop.match ==='function') {
|
||||
if (prop.match(/^(?:initializer|constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/))
|
||||
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 { 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 () {
|
||||
|
@ -24,7 +28,7 @@ describe('Class Merge', function () {
|
|||
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)
|
||||
rect.z = 1000
|
||||
|
@ -36,6 +40,17 @@ describe('Class Merge', function () {
|
|||
expect(rect.y).to.be.equal(42)
|
||||
expect(rect.z).to.be.equal(1000)
|
||||
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