formiojs
Version:
Common js library for client side interaction with <form.io>
206 lines (148 loc) • 7.26 kB
JavaScript
;
var _powerAssert = _interopRequireDefault(require("power-assert"));
var _harness = _interopRequireDefault(require("../../../test/harness"));
var _Day = _interopRequireDefault(require("./Day"));
var _fixtures = require("./fixtures");
var _Panel = _interopRequireDefault(require("../panel/Panel"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('Day Component', function () {
it('Should build a day component', function () {
return _harness.default.testCreate(_Day.default, _fixtures.comp1).then(function (component) {
_harness.default.testElements(component, 'input[type="number"]', 2);
_harness.default.testElements(component, 'select', 1);
});
});
it('Should change the max day when the month changes', function (done) {
_harness.default.testCreate(_Day.default, _fixtures.comp1).then(function (component) {
_harness.default.testElements(component, 'option', 13);
(0, _powerAssert.default)(!!component.refs.year, 'There should be a year'); // Set the year to a non-leap year.
component.refs.year.value = 2017;
component.setSelectValue(component.refs.month, '1');
component.refs.month.dispatchEvent(new Event('input'));
_powerAssert.default.equal(component.refs.day.max, '31');
component.setSelectValue(component.refs.month, '2');
component.refs.month.dispatchEvent(new Event('input'));
_powerAssert.default.equal(component.refs.day.max, '28');
component.setSelectValue(component.refs.month, '3');
component.refs.month.dispatchEvent(new Event('input'));
_powerAssert.default.equal(component.refs.day.max, '31');
component.setSelectValue(component.refs.month, '4');
component.refs.month.dispatchEvent(new Event('input'));
_powerAssert.default.equal(component.refs.day.max, '30'); // Set to a leap year.
component.refs.year.value = 2020;
component.setSelectValue(component.refs.month, '1');
component.refs.month.dispatchEvent(new Event('input'));
_powerAssert.default.equal(component.refs.day.max, '31');
component.setSelectValue(component.refs.month, '2');
component.refs.month.dispatchEvent(new Event('input'));
_powerAssert.default.equal(component.refs.day.max, '29');
component.setSelectValue(component.refs.month, '3');
component.refs.month.dispatchEvent(new Event('input'));
_powerAssert.default.equal(component.refs.day.max, '31');
component.setSelectValue(component.refs.month, '4');
component.refs.month.dispatchEvent(new Event('input'));
_powerAssert.default.equal(component.refs.day.max, '30');
done();
});
});
it('Should put the month select first', function (done) {
_harness.default.testCreate(_Day.default, _fixtures.comp1).then(function (component) {
var inputs = _harness.default.testElements(component, '.form-control', 4);
_powerAssert.default.equal(inputs[0].id, "".concat(component.component.key, "-month"));
_powerAssert.default.equal(inputs[1].id, "".concat(component.component.key, "-day"));
_powerAssert.default.equal(inputs[2].id, "".concat(component.component.key, "-year"));
component.setValue('03/20/2017');
_powerAssert.default.equal(component.getValue(), '03/20/2017');
done();
});
});
it('Should put the day select first on configuration', function (done) {
_fixtures.comp1.dayFirst = true;
_harness.default.testCreate(_Day.default, _fixtures.comp1).then(function (component) {
var inputs = _harness.default.testElements(component, '.form-control', 4);
_powerAssert.default.equal(inputs[0].id, "".concat(component.component.key, "-day"));
_powerAssert.default.equal(inputs[1].id, "".concat(component.component.key, "-month"));
_powerAssert.default.equal(inputs[2].id, "".concat(component.component.key, "-year"));
component.setValue('20/03/2017');
_powerAssert.default.equal(component.getValue(), '20/03/2017');
done();
});
});
it('Should not allow invalid days', function (done) {
_fixtures.comp1.dayFirst = false;
_harness.default.testCreate(_Day.default, _fixtures.comp1).then(function (component) {
component.on('componentError', function (err) {
_powerAssert.default.equal(err.message, 'Date is not a valid day.');
_powerAssert.default.equal(err.component.key, 'date');
done();
});
component.on('componentChange', function () {
component.checkValidity();
});
component.setValue('3/40/2017');
});
});
it('Should ignore invalid months and use zeros as default', function (done) {
_fixtures.comp1.dayFirst = false;
_harness.default.testCreate(_Day.default, _fixtures.comp1).then(function (component) {
component.setValue('15/20/2017');
_powerAssert.default.equal(component.getValue(), '00/20/2017');
done();
});
});
it('Should keep day value when switching months', function (done) {
_harness.default.testCreate(_Day.default, _fixtures.comp1).then(function (component) {
component.setValue('01/05/2018');
_powerAssert.default.equal(component.getValue(), '01/05/2018');
component.on('componentChange', function () {
_powerAssert.default.equal(component.getValue(), '02/05/2018');
done();
});
component.refs.month.value = 2;
component.refs.month.dispatchEvent(new Event('input'));
});
});
it('Should adjust day value when day is great then maxDay of month', function (done) {
_harness.default.testCreate(_Day.default, _fixtures.comp1).then(function (component) {
component.setValue('01/31/2018');
_powerAssert.default.equal(component.getValue(), '01/31/2018');
component.on('componentChange', function () {
_powerAssert.default.equal(component.getValue(), '02/28/2018');
done();
});
component.refs.month.value = 2;
component.refs.month.dispatchEvent(new Event('input'));
});
});
it('Should validate required fields', function (done) {
_harness.default.testCreate(_Day.default, _fixtures.comp2).then(function (component) {
component.pristine = false;
var valid = function valid() {
return component.checkValidity(component.data, true);
};
var tests = {
'12/18/2018': true,
'12/00/0000': false,
'00/18/0000': false,
'00/00/2018': false,
'01/05/2018': true
};
for (var v in tests) {
component.setValue(v);
_powerAssert.default.equal(valid(), tests[v]);
}
done();
});
});
it('should normalize min-max dates on dayFirst', function () {
_harness.default.testCreate(_Day.default, _fixtures.comp3).then(function (component) {
_powerAssert.default.deepEqual(component.normalizeMinMaxDates(), ['04/02/2020', '09/02/2020']);
});
});
it('Should disable day component if parent component is disabled', function (done) {
_harness.default.testCreate(_Panel.default, _fixtures.comp4).then(function (component) {
_harness.default.testElements(component, '[disabled]', 4);
done();
});
});
});