este-library-oldschool
Version:
Library for github.com/steida/este.git
294 lines • 10 kB
JavaScript
// Generated by github.com/steida/coffee2closure 900.1.18
suite('este.ui.Resizer', function() {
var Resizer, delegation, delegationFactory, element, fireDelegationMouseOut, fireDelegationMouseOver, handles, handlesFactory, resizer;
Resizer = este.ui.Resizer;
element = null;
delegation = null;
delegationFactory = null;
handles = null;
handlesFactory = null;
resizer = null;
fireDelegationMouseOver = function() {
return goog.events.fireListeners(delegation, 'mouseover', false, {});
};
fireDelegationMouseOut = function() {
return goog.events.fireListeners(delegation, 'mouseout', false, {});
};
setup(function() {
element = document.createElement('div');
element.offsetWidth = 50;
element.offsetHeight = 60;
delegation = {
addEventListener: function() {},
dispose: function() {}
};
delegationFactory = function() {
return delegation;
};
handles = {
vertical: document.createElement('div'),
horizontal: document.createElement('div'),
addEventListener: function() {},
decorate: function() {},
isHandle: function() {},
dispose: function() {
return this.disposed_ = true;
}
};
handlesFactory = function() {
return handles;
};
return resizer = new Resizer(delegationFactory, handlesFactory);
});
suite('Resizer.create', function() {
return test('should create instance', function() {
resizer = Resizer.create();
return assert.instanceOf(resizer, Resizer);
});
});
suite('decorate', function() {
return test('should call delegationFactory with arguments', function(done) {
var targetFilter, targetParentFilter;
targetFilter = function() {};
targetParentFilter = function() {};
delegationFactory = function(p_element, p_eventTypes, p_targetFilter, p_targetParentFilter) {
assert.equal(p_element, element);
assert.deepEqual(p_eventTypes, ['mouseover', 'mouseout']);
assert.equal(p_targetFilter, targetFilter);
assert.equal(p_targetParentFilter, targetParentFilter);
done();
return {
addEventListener: function() {}
};
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.targetFilter = targetFilter;
resizer.targetParentFilter = targetParentFilter;
return resizer.decorate(element);
});
});
suite('enterDocument', function() {
return test('should call delegationFactory', function(done) {
delegationFactory = function() {
done();
return {
addEventListener: function() {}
};
};
resizer = new Resizer(delegationFactory, handlesFactory);
return resizer.enterDocument();
});
});
suite('exitDocument', function() {
return test('should call dispose on delegation', function(done) {
delegation.dispose = function() {
return done();
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.enterDocument();
return resizer.exitDocument();
});
});
suite('delegation mouseover event on decorated resizer', function() {
test('should call handlesFactory', function(done) {
handlesFactory = function() {
done();
return handles;
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
return fireDelegationMouseOver();
});
test('should decorate handles with event delegation target', function(done) {
var target;
target = {};
handles.decorate = function(p_element) {
assert.equal(p_element, target);
return done();
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
return goog.events.fireListeners(delegation, 'mouseover', false, {
target: target
});
});
return test('should dispose yet rendered handles', function(done) {
handles.dispose = function() {
return done();
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
return goog.events.fireListeners(delegation, 'mouseover', false, {});
});
});
suite('delegation mouseout event on decorated resizer', function() {
test('should dispose handles', function(done) {
handles.dispose = function() {
return done();
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
return goog.events.fireListeners(delegation, 'mouseout', false, {});
});
return test('should not dispose handles if relatedTarget is handle', function() {
var called, relatedTarget;
relatedTarget = {};
called = false;
handles.dispose = function() {
return called = true;
};
handles.isHandle = function(el) {
return el === relatedTarget;
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
goog.events.fireListeners(delegation, 'mouseover', false, {});
goog.events.fireListeners(delegation, 'mouseout', false, {
relatedTarget: relatedTarget
});
return assert.isFalse(called);
});
});
suite('dispose', function() {
return test('should dispose handles on decorated resizer', function(done) {
handles.dispose = function() {
return done();
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
goog.events.fireListeners(delegation, 'mouseover', false, {});
return resizer.dispose();
});
});
suite('mouseout on handles', function() {
return test('should dispose handles', function(done) {
handles.dispose = function() {
return done();
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
return goog.events.fireListeners(handles, 'mouseout', false, {});
});
});
suite('handles start event before delegation mouseover', function() {
test('should not dispose handles', function() {
var called;
called = false;
handles.dispose = function() {
return called = true;
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
goog.events.fireListeners(handles, 'start', false, {
element: element
});
fireDelegationMouseOver();
return assert.isFalse(called);
});
return test('should dispose handles after drag end', function() {
var called;
called = false;
handles.dispose = function() {
return called = true;
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
goog.events.fireListeners(handles, 'start', false, {
element: element
});
goog.events.fireListeners(handles, 'end', false, {});
fireDelegationMouseOver();
return assert.isTrue(called);
});
});
suite('handles start event before delegation mouseout', function() {
test('should not dispose handles', function() {
var called;
called = false;
handles.dispose = function() {
return called = true;
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
goog.events.fireListeners(handles, 'start', false, {
element: element
});
fireDelegationMouseOut();
return assert.isFalse(called);
});
return test('should dispose handles after drag end', function() {
var called;
called = false;
handles.dispose = function() {
return called = true;
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
goog.events.fireListeners(handles, 'start', false, {
element: element
});
goog.events.fireListeners(handles, 'end', false, {});
fireDelegationMouseOut();
return assert.isTrue(called);
});
});
return suite('handles drag end event', function() {
test('should dispose handles if e.close is true', function() {
var called;
called = false;
handles.dispose = function() {
return called = true;
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
goog.events.fireListeners(handles, 'start', false, {
element: element
});
goog.events.fireListeners(handles, 'end', false, {
close: true
});
return assert.isTrue(called);
});
test('should not dispose handles if e.close is false', function() {
var called;
called = false;
handles.dispose = function() {
return called = true;
};
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
goog.events.fireListeners(handles, 'start', false, {
element: element
});
goog.events.fireListeners(handles, 'end', false, {
close: false
});
return assert.isFalse(called);
});
return test('should dispatch resizeend event', function(done) {
resizer = new Resizer(delegationFactory, handlesFactory);
resizer.decorate(element);
fireDelegationMouseOver();
goog.events.listen(resizer, 'resizeend', function(e) {
assert.equal(e.element, element);
return done();
});
goog.events.fireListeners(handles, 'start', false, {
element: element
});
return goog.events.fireListeners(handles, 'end', false, {
element: element,
close: false
});
});
});
});