mirror of
https://github.com/SrIzan10/enquire.js.git
synced 2026-05-01 10:45:19 +00:00
132 lines
2.7 KiB
JavaScript
132 lines
2.7 KiB
JavaScript
/*global describe: true, beforeEach: true, it: true, expect: true, jasmine:true, QueryHandler:true */
|
|
|
|
(function() {
|
|
|
|
describe('QueryHandler', function() {
|
|
|
|
'use strict';
|
|
|
|
var options;
|
|
|
|
beforeEach(function() {
|
|
options = jasmine.createSpyObj('options', ['match', 'unmatch', 'setup', 'destroy']);
|
|
});
|
|
|
|
it('is initialised if setup not deferred', function() {
|
|
// Arrange & act
|
|
var handler = new QueryHandler(options);
|
|
|
|
// Assert
|
|
expect(handler.initialised).toBe(true);
|
|
});
|
|
|
|
it('is not initialised if setup deferred', function () {
|
|
// Arrange
|
|
options.deferSetup = true;
|
|
|
|
// Act
|
|
var handler = new QueryHandler(options);
|
|
|
|
// Assert
|
|
expect(handler.initialised).toBeFalsy();
|
|
});
|
|
|
|
it('stores supplied handler', function() {
|
|
// Arrange & act
|
|
var handler = new QueryHandler(options);
|
|
|
|
// Assert
|
|
expect(handler.options).toBe(options);
|
|
});
|
|
|
|
it('calls setup handler and sets to initialised during setup', function() {
|
|
// Arrange
|
|
options.deferSetup = true;
|
|
var handler = new QueryHandler(options);
|
|
|
|
// Act
|
|
handler.setup();
|
|
|
|
// Assert
|
|
expect(options.setup).toHaveBeenCalled();
|
|
expect(handler.initialised).toBe(true);
|
|
});
|
|
|
|
it('will call a setup function followed by on', function() {
|
|
// Arrange
|
|
var handler;
|
|
|
|
options.deferSetup = true;
|
|
handler = new QueryHandler(options);
|
|
|
|
// Act
|
|
handler.on();
|
|
|
|
// Assert
|
|
expect(options.setup).toHaveBeenCalled();
|
|
expect(options.match).toHaveBeenCalled();
|
|
});
|
|
|
|
it('calls match handler when turned on', function() {
|
|
// Arrange
|
|
var handler = new QueryHandler(options);
|
|
|
|
// Act
|
|
handler.on();
|
|
|
|
// Assert
|
|
expect(options.match).toHaveBeenCalled();
|
|
});
|
|
|
|
it('calls unmatch handler when turned off', function() {
|
|
// Arrange
|
|
var handler = new QueryHandler(options);
|
|
|
|
// Act
|
|
handler.off();
|
|
|
|
// Assert
|
|
expect(options.unmatch).toHaveBeenCalled();
|
|
});
|
|
|
|
it('can test for equality', function() {
|
|
// Arrange
|
|
var handler = new QueryHandler(options),
|
|
equalityByObject,
|
|
equalityByFunction;
|
|
|
|
// Act
|
|
equalityByObject = handler.equals(options);
|
|
equalityByFunction = handler.equals(options.match);
|
|
|
|
// Assert
|
|
expect(equalityByObject).toBe(true);
|
|
expect(equalityByFunction).toBe(true);
|
|
});
|
|
|
|
it('calls through to destroy if supplied', function() {
|
|
// Arrange
|
|
var handler = new QueryHandler(options);
|
|
|
|
// Act
|
|
handler.destroy();
|
|
|
|
// Assert
|
|
expect(options.destroy).toHaveBeenCalled();
|
|
});
|
|
|
|
it('calls through to unmatch if destroy not available', function() {
|
|
// Arrange
|
|
var spy = jasmine.createSpyObj('options', ['match', 'unmatch']),
|
|
handler = new QueryHandler(spy);
|
|
|
|
// Act
|
|
handler.destroy();
|
|
|
|
// Assert
|
|
expect(spy.unmatch).toHaveBeenCalled();
|
|
});
|
|
|
|
});
|
|
|
|
}()); |