Example #1
0
 it('should not be selected when no explicit `value`, `rawValue` or `selectedIndex` is given', function () {
     var select = new Select({ datasource: datasource });
     select.appendTo(container);
     expect(select.get('selectedIndex')).toBe(1);
     expect(select.getValue()).toBe('2');
     expect(select.getRawValue()).toBe('2');
 });
Example #2
0
 it('should sync `selectedIndex` after `value` is changed', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     select.appendTo(container);
     select.setProperties({ value: '3' });
     expect(select.get('selectedIndex')).toBe(2);
     expect(select.getRawValue()).toBe('3');
 });
Example #3
0
 it('should accept runtime changed of `emptyText', function () {
     var select = new Select({ datasource: datasource, emptyText: 'test' });
     select.appendTo(container);
     select.set('emptyText', 'changed');
     expect(select.main.firstChild.innerHTML).toBe('changed');
     expect(select.main.getElementsByTagName('input')[0].value).toBe('');
 });
Example #4
0
 it('should accept runtime change of `selectedIndex`', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     select.appendTo(container);
     select.setProperties({ selectedIndex: 2 });
     expect(select.get('selectedIndex')).toBe(2);
     expect(select.getRawValue()).toBe('3');
 });
Example #5
0
 it('should select the first item if `datasource` is changed even value is still in sync', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     select.appendTo(container);
     select.setProperties({ datasource: datasource.slice(0, 3) });
     expect(select.get('selectedIndex')).toBe(0);
     expect(select.getRawValue()).toBe('1');
 });
Example #6
0
 it('should select the first item if `selectedIndex` is change in runtime and is given an out-of-range value and no `emptyText` is given', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     select.appendTo(container);
     select.setProperties({ selectedIndex: 10 });
     expect(select.get('selectedIndex')).toBe(0);
     expect(select.getRawValue()).toBe('1');
 });
Example #7
0
 it('should `emptyText` if `selectedIndex` is change in runtime and is given an out-of-range value when `emptyText` is given', function () {
     var select = new Select({ datasource: datasource, value: '2', emptyText: 'test' });
     select.appendTo(container);
     select.setProperties({ selectedIndex: 10 });
     expect(select.get('selectedIndex')).toBe(-1);
     expect(select.getRawValue()).toBe('');
 });
Example #8
0
 it('should not adjust value related properties if `datasource` is change but value is still in sync', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     select.appendTo(container);
     select.setProperties({ datasource: datasource.slice(0, 3) });
     expect(select.get('selectedIndex')).toBe(1);
     expect(select.getRawValue()).toBe('2');
 });
Example #9
0
 it('should adjust value related properties if `rawValue` is change in runtime and is given a non-exist value', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     select.appendTo(container);
     select.setProperties({ rawValue: '10' });
     expect(select.get('selectedIndex')).toBe(0);
     expect(select.getRawValue()).toBe('1');
 });
Example #10
0
 it('should repaint as normal when properties changed', function () {
     var select = new Select({ datasource: datasource, readOnly: true });
     select.appendTo(container);
     select.setProperties({ value: '3' });
     expect(select.getValue()).toBe('3');
     expect(container.getElementsByTagName('span')[0].innerHTML).toBe('c');
 });
Example #11
0
 it('should select `emptyText` if `datasource` is change in runtime which causes value to be unsynced when `emptyText` is given', function () {
     var select = new Select({ datasource: datasource, value: '6', emptyText: 'test' });
     select.appendTo(container);
     select.setProperties({ datasource: datasource.slice(0, 3) });
     expect(select.get('selectedIndex')).toBe(-1);
     expect(select.getRawValue()).toBe('');
 });
Example #12
0
 it('should fire if `datasource` is changed even value is still available as previous', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     var spy = jasmine.createSpy();
     select.on('change', spy);
     select.appendTo(container);
     select.set('datasource', datasource.slice(0, 3));
     expect(spy).toHaveBeenCalled();
 });
Example #13
0
 it('should open a layer with className `ui-select-layer` under `body` when clicked', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     var layer = findLayer();
     expect(layer).toBeDefined();
     expect(layer.className).not.toMatch(/ui-select-layer-hidden/);
 });
Example #14
0
 it('should fire if `selectedIndex` is changed to an out-of-range value', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     var spy = jasmine.createSpy();
     select.on('change', spy);
     select.appendTo(container);
     select.set('selectedIndex', -1);
     expect(spy).toHaveBeenCalled();
 });
Example #15
0
 it('should fire if `rawValue` is changed to a non-exist value', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     var spy = jasmine.createSpy();
     select.on('change', spy);
     select.appendTo(container);
     select.set('rawValue', 'abc');
     expect(spy).toHaveBeenCalled();
 });
Example #16
0
 it('should fire if `datasource` is changed which causes `emptyText` to be selected', function () {
     var select = new Select({ datasource: datasource, value: '2', emptyText: 'test' });
     var spy = jasmine.createSpy();
     select.on('change', spy);
     select.appendTo(container);
     select.set('datasource', datasource.slice(3));
     expect(spy).toHaveBeenCalled();
 });
Example #17
0
 it('should rerender selection layer when called with a new `datasource` object', function () {
     var select = new Select({ datasource: datasource });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     select.updateDatasource(datasource.slice(0, 2));
     var layer = findLayer();
     expect(layer.children.length).toBe(2);
 });
Example #18
0
 it('should select the first item if `datasource` is changed in runtime when no `emptyText` is given', function () {
     var select = new Select({ datasource: datasource, value: '6' });
     select.appendTo(container);
     select.setProperties({ datasource: datasource.slice(0, 3) });
     expect(select.get('selectedIndex')).toBe(0);
     expect(select.getRawValue()).toBe('1');
     expect(select.main.firstChild.innerHTML).toBe('a');
 });
Example #19
0
 it('should not fire if `selectedIndex` is given the same as previous', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     var spy = jasmine.createSpy();
     select.on('change', spy);
     select.appendTo(container);
     select.setProperties({ selectedIndex: 1 });
     expect(spy).not.toHaveBeenCalled();
 });
Example #20
0
 it('should return to normal after enabled again', function () {
     var select = new Select({ datasource: datasource, readOnly: true });
     select.appendTo(container);
     select.enable();
     dispatchEvent(select.main, 'click');
     var layer = findLayer();
     expect(layer).toBeDefined();
 });
Example #21
0
 it('should fire if `selectedIndex` is changed', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     var spy = jasmine.createSpy();
     select.on('change', spy);
     select.appendTo(container);
     select.setProperties({ selectedIndex: 2 });
     expect(spy).toHaveBeenCalled();
 });
Example #22
0
 it('should destroy the layer when disposed', function () {
     var select = new Select({ datasource: datasource });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     select.dispose();
     var layer = findLayer();
     expect(layer).toBe(null);
 });
Example #23
0
 it('should use `name` over `text` if both are given', function () {
     var datasource = [
         { text: 'a', name: 'b', value: '1' }
     ];
     var select = new Select({ datasource: datasource });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     expect(findLayer().children[0].innerText).toBe('b');
 });
Example #24
0
 it('should accept `text` config property and treat it as `name`', function () {
     var datasource = [
         { text: 'a', value: '1' }
     ];
     var select = new Select({ datasource: datasource });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     expect(findLayer().children[0].innerText).toBe('a');
 });
Example #25
0
 it('must hide the layer even if the layer is previous set to visible', function () {
     var select = new Select({ datasource: datasource });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     var layer = findLayer();
     expect(layer.className).not.toMatch(/ui-select-layer-hidden/);
     select.setReadOnly(true);
     expect(layer.className).toMatch(/ui-select-layer-hidden/);
 });
Example #26
0
 it('should not open the layer when clicked', function () {
     var select = new Select({ datasource: datasource, readOnly: true });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     var layer = findLayer();
     if (layer) {
         expect(layer.className).toMatch(/ui-select-layer-hidden/);
     }
 });
Example #27
0
 it('should hide the layer when itself is set to hidden even if the layer is previously shown', function () {
     var select = new Select({ datasource: datasource });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     var layer = findLayer();
     expect(layer.className).not.toMatch(/ui-select-layer-hidden/);
     select.hide();
     expect(layer.className).toMatch(/ui-select-layer-hidden/);
 });
Example #28
0
 it('should hide the layer when item is clicked', function () {
     var select = new Select({ datasource: datasource, value: '2' });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     var layer = findLayer();
     var option = layer.children[2];
     dispatchEvent(option, 'click');
     expect(layer.className).toMatch(/ui-select-layer-hidden/);
 });
Example #29
0
 it('should rerender selection layer when same `datasource` is given', function () {
     var ds = datasource.slice();
     var select = new Select({ datasource: ds });
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     ds.splice(2, 10);
     select.updateDatasource(ds);
     var layer = findLayer();
     expect(layer.children.length).toBe(2);
 });
Example #30
0
 it('should be able to customize item template by changing the `getItemHTML` function', function () {
     var select = new Select({ datasource: datasource });
     select.getItemHTML = function () { return '123'; };
     select.appendTo(container);
     dispatchEvent(select.main, 'click');
     var layer = findLayer();
     for (var i = 0; i < layer.children.length; i++) {
         expect(layer.children[i].innerHTML).toBe('123');
     }
 });