123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- describe('autocompleteValidator', () => {
- var id = 'testContainer';
- beforeEach(function() {
- this.$container = $(`<div id="${id}"></div>`).appendTo('body');
- });
- afterEach(function() {
- if (this.$container) {
- destroy();
- this.$container.remove();
- }
- });
- describe('allowEmpty', () => {
- it('should validate empty cells positively (by default)', (done) => {
- var onAfterValidate = jasmine.createSpy('onAfterValidate');
- var hot = handsontable({
- data: [
- ['some', 'sample', 'data'],
- ],
- columns: [
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- }
- ],
- afterValidate: onAfterValidate
- });
- setDataAtCell(0, 0, '');
- setTimeout(() => {
- expect(onAfterValidate).toHaveBeenCalledWith(true, '', 0, 0, undefined, undefined);
- done();
- }, 100);
- });
- it('should validate empty cells positively when allowEmpty is set to true', (done) => {
- var onAfterValidate = jasmine.createSpy('onAfterValidate');
- var hot = handsontable({
- data: [
- ['some', 'sample', 'data'],
- ],
- columns: [
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- }
- ],
- allowEmpty: true,
- afterValidate: onAfterValidate
- });
- setDataAtCell(0, 0, '');
- setTimeout(() => {
- expect(onAfterValidate).toHaveBeenCalledWith(true, '', 0, 0, undefined, undefined);
- done();
- }, 100);
- });
- it('should validate empty cells negatively when allowEmpty is set to false', (done) => {
- var onAfterValidate = jasmine.createSpy('onAfterValidate');
- var hot = handsontable({
- data: [
- ['some', 'sample', 'data'],
- ],
- columns: [
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- }
- ],
- allowEmpty: false,
- afterValidate: onAfterValidate
- });
- setDataAtCell(0, 0, '');
- setTimeout(() => {
- expect(onAfterValidate).toHaveBeenCalledWith(false, '', 0, 0, undefined, undefined);
- done();
- }, 100);
- });
- it('should respect the allowEmpty property for a single column', (done) => {
- var onAfterValidate = jasmine.createSpy('onAfterValidate');
- var hot = handsontable({
- data: [
- ['some', 'sample', 'data']
- ],
- columns: [
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true,
- allowEmpty: false
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- }
- ],
- afterValidate: onAfterValidate
- });
- setDataAtCell(0, 0, '');
- setDataAtCell(0, 1, '');
- setDataAtCell(0, 2, '');
- setTimeout(() => {
- expect(onAfterValidate.calls.argsFor(0)).toEqual([true, '', 0, 0, undefined, undefined]);
- expect(onAfterValidate.calls.argsFor(1)).toEqual([false, '', 0, 1, undefined, undefined]);
- expect(onAfterValidate.calls.argsFor(2)).toEqual([true, '', 0, 2, undefined, undefined]);
- done();
- }, 100);
- });
- it('should work for null and undefined values in cells', (done) => {
- var onAfterValidate = jasmine.createSpy('onAfterValidate');
- var hot = handsontable({
- data: [
- ['some', 'sample', 'data']
- ],
- columns: [
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true,
- },
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- }
- ],
- allowEmpty: false,
- afterValidate: onAfterValidate
- });
- setDataAtCell(0, 0, null);
- setDataAtCell(0, 1, void 0);
- setDataAtCell(0, 2, '');
- setTimeout(() => {
- expect(onAfterValidate.calls.argsFor(0)).toEqual([false, null, 0, 0, undefined, undefined]);
- expect(onAfterValidate.calls.argsFor(1)).toEqual([false, void 0, 0, 1, undefined, undefined]);
- expect(onAfterValidate.calls.argsFor(2)).toEqual([false, '', 0, 2, undefined, undefined]);
- done();
- }, 100);
- });
- });
- describe('strict mode', () => {
- it('sshould validate negatively when chars have different size', (done) => {
- var onAfterValidate = jasmine.createSpy('onAfterValidate');
- var hot = handsontable({
- data: [
- ['some', 'sample', 'data'],
- ],
- columns: [
- {
- type: 'autocomplete',
- source: ['some', 'sample', 'data'],
- strict: true
- }
- ],
- afterValidate: onAfterValidate
- });
- setDataAtCell(0, 0, 'Some');
- setTimeout(() => {
- expect(onAfterValidate).toHaveBeenCalledWith(false, 'Some', 0, 0, undefined, undefined);
- done();
- }, 100);
- });
- });
- });
|