uci-utils-class-merge/test/merge.js

57 lines
1.4 KiB
JavaScript

import merge from '../src/merge.js'
import chai, { expect } from 'chai'
import eventemitter from 'chai-eventemitter'
import { EventEmitter as Emitter } from 'events'
chai.use(eventemitter)
describe('Class Merge', function () {
class Colored {
initializer () { this._color = 'white' }
get color () { return this._color }
set color (v) { this._color = v }
}
class ZCoord {
initializer () { this._z = 0 }
get z () { return this._z }
set z (v) { this._z = v }
}
class Shape {
constructor (x, y) { this._x = x; this._y = y }
get x () { return this._x }
set x (v) { this._x = v }
get y () { return this._y }
set y (v) { this._y = v }
}
var Rectangle = class Rectangle extends merge(Shape, Colored, ZCoord, Emitter) {}
var rect = new Rectangle(7, 42)
rect.z = 1000
rect.color = 'red'
it('Should merge three classes', function () {
expect(rect.x).to.be.equal(7)
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')
})
})