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') }) })