whisper.cat/weboasis/stocks/assets/vendor/air-datepicker-master/tests/specs/events.js
2023-10-05 23:28:32 +11:00

200 lines
5.7 KiB
JavaScript

describe('Events', function () {
var assert = chai.assert,
expect = chai.expect,
destroy = true,
$span,
$altInput,
$input, dp;
before(function () {
$input = $('<input>').appendTo('#container');
$span = $('<span>').appendTo('#container');
$altInput = $('<input class="alt-field">').appendTo('#container');
});
afterEach(function () {
if (dp && destroy) {
dp.destroy();
dp = '';
}
destroy = true;
});
after(function () {
$input.remove();
$span.remove();
$altInput.remove();
});
describe('onSelect', function () {
it('should add callback when user selects date', function () {
var date = new Date(2016,0,13);
dp = $input.datepicker({
onSelect: function (fd, d, inst) {
expect(fd).to.be.equal('13.01.2016');
expect(d).to.be.instanceof(Date);
expect(inst).to.be.instanceof($.fn.datepicker.Constructor);
}
}).data('datepicker');
dp.selectDate(date);
});
it('should receive array of dates when "multipleDates" set to true', function () {
var date = new Date(2016,0,22),
date2 = new Date(2016,0,23),
dates = [];
dp = $input.datepicker({
multipleDates: true,
onSelect: function (fd, d, inst) {
dates = d;
}
}).data('datepicker');
dp.selectDate(date);
dp.selectDate(date2);
expect(dates).to.have.length(2)
})
it('should receive array of dates when "range" set to true', function () {
var date = new Date(2016,0,22),
date2 = new Date(2016,0,23),
dates = [];
dp = $input.datepicker({
range: true,
onSelect: function (fd, d, inst) {
dates = d;
}
}).data('datepicker');
dp.selectDate(date);
dp.selectDate(date2);
expect(dates).to.have.length(2)
})
});
describe('onShow', function () {
it('should add callback when datepicker is showing', function () {
var test = '';
dp = $input.datepicker({
onShow: function (dp, completed) {
if (!completed) {
test = dp;
}
}
}).data('datepicker');
dp.show();
expect(test).to.be.equal(dp);
})
});
describe('onHide', function () {
it('should add callback when datepicker is hiding (after transition completed)', function () {
var test = '';
dp = $input.datepicker({
onHide: function (dp, completed) {
if (!completed) {
test = dp;
}
}
}).data('datepicker');
dp.show();
dp.hide();
expect(test).to.be.equal(dp);
});
});
describe('onRenderCell', function () {
it('should add callback when cell is rendered', function () {
dp = $input.datepicker({
onRenderCell: function (d, type) {
expect(d).to.be.instanceOf(Date);
expect(type).to.be.equal('day');
}
}).data('datepicker');
})
});
describe('onChangeView', function () {
it('should add callback when view is changed', function () {
var _view;
dp = $input.datepicker({
onChangeView: function (view) {
_view = view;
}
}).data('datepicker');
dp.view = 'months';
expect(_view).to.be.equal('months')
})
});
describe('onChangeMonth', function () {
it('should add callback when month is changed', function () {
var _month, _year;
dp = $input.datepicker({
startDate: new Date(2016, 0, 22),
onChangeMonth: function (month, year) {
_month = month;
_year = year;
}
}).data('datepicker');
$('.datepicker--nav-action[data-action="next"]',dp.$datepicker).click();
expect(_month).to.be.equal(1);
expect(_year).to.be.equal(2016)
})
});
describe('onChangeYear', function () {
it('should add callback when year is changed', function () {
var _year;
dp = $input.datepicker({
startDate: new Date(2016, 0, 22),
view: 'months',
onChangeYear: function (year) {
_year = year;
}
}).data('datepicker');
$('.datepicker--nav-action[data-action="next"]',dp.$datepicker).click();
expect(_year).to.be.equal(2017)
})
});
describe('onChangeDecade', function () {
it('should add callback when decade is changed', function () {
var _decade;
dp = $input.datepicker({
startDate: new Date(2016, 0, 22),
view: 'years',
onChangeDecade: function (decade) {
_decade = decade;
}
}).data('datepicker');
$('.datepicker--nav-action[data-action="next"]',dp.$datepicker).click();
expect(_decade).to.have.length(2);
expect(_decade[0]).to.be.equal(2020);
expect(_decade[1]).to.be.equal(2029);
})
});
});