HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode/frontend/node_modules/custom-select/src/test/append.js
import test from 'tape';
import customSelect from './../';

let select;
let option;
let actual;
let expected;

test('Instance library and append an option at the end', assert => {
  document.body.innerHTML = '';
  select = document.createElement('select');
  select.innerHTML = `
    <option value="">Select...</option>
    <optgroup label="Moto">
      <option value="suzuki">Suzuki</option>
    </optgroup>
    <optgroup label="Auto">
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </optgroup>`;
  document.body.appendChild(select);

  const customselect = customSelect('select')[0];

  option = document.createElement('option');
  option.value = 'mustang';
  option.text = 'Mustang';

  customselect.append([option]);

  assert.test('... and the last option has the correct value', q => {
    actual = select.options[4].value;
    expected = 'mustang';
    q.deepEqual(actual, expected,
      'should return mustang');
    q.end();
  });

  assert.test('... and the last custom option has the correct text', q => {
    actual = select.parentNode.children[2].children[3].textContent;
    expected = 'Mustang';
    q.deepEqual(actual, expected,
      'should return Mustang');
    q.end();
  });


  assert.test('... and the added custom option is selectable', q => {
    select.parentNode.customSelect.open = true;
    select.parentNode.children[2].children[3].click();

    actual = select.parentNode.children[2].children[3].classList.contains('is-selected');
    q.true(actual,
      'should return true');
    q.end();
  });

  assert.test('... and the value becomes the added options value', q => {
    actual = select.value;
    expected = 'mustang';
    q.equal(actual, expected,
      'should return mustang');
    q.end();
  });
  assert.end();
});

test('Insert an option at the end of a specified custom optgroup', assert => {
  const optGroupTarget = select.parentNode.children[2].children[2];

  option = document.createElement('option');
  option.value = 'tesla';
  option.text = 'Tesla';

  assert.throws(() => select.parentNode.customSelect.append(option, optGroupTarget), TypeError,
    'should throw TypeError');
  assert.end();
});

test('Insert an option at the end of a specified original optgroup', assert => {
  const optGroupTarget = select.children[2];

  option = document.createElement('option');
  option.value = 'mazda';
  option.text = 'Mazda';

  select.customSelect.append(option, optGroupTarget);

  actual = select.parentNode.children[2].children[2].children[2].textContent;
  expected = 'Mazda';
  assert.equal(actual, expected,
    'should return Mazda');

  assert.end();
});

test('Insert two selected options', assert => {
  var option1;
  var option2;

  option1 = document.createElement('option');
  option1.value = 'man';
  option1.text = 'MAN';
  option1.selected = true;

  option2 = document.createElement('option');
  option2.value = 'tata';
  option2.text = 'Tata';
  option2.setAttribute('selected', 'selected');

  select.customSelect.append([option1, option2]);

  actual = select.value;
  expected = 'tata';
  assert.equal(actual, expected,
    'should return tata');
  assert.end();
});

test('... and the correct custom option is-selected', assert => {
  actual = select.customSelect.panel
    .getElementsByClassName(select.customSelect.pluginOptions.isSelectedClass)[0].dataset.value;
  expected = 'tata';
  assert.equal(actual, expected,
    'should return tata');
  assert.end();
});

test('Insert an optgroup at the end', assert => {
  const optgroup = document.createElement('optgroup');
  optgroup.setAttribute('label', 'Bike');

  option = document.createElement('option');
  option.value = 'mountain bike';
  option.text = 'Mountain bike';

  optgroup.appendChild(option);

  select.parentNode.customSelect.append(optgroup);

  actual = select.customSelect.panel.children[6].dataset.label;
  expected = 'Bike';
  assert.equal(actual, expected,
    'should return Bike');
  assert.end();
});

test('Use a string as a the node parameter', assert => {
  assert.throws(() => { select.parentNode.customSelect.append('a string'); }, TypeError,
    'should throw TypeError');
  assert.end();
});

test('Use an object as a the target parameter', assert => {
  option = document.createElement('option');
  option.value = 'skateboard';
  option.text = 'Skateboard';

  assert.throws(() => { select.parentNode.customSelect.append(option, { foo: 'foo' }); }, TypeError,
    'should throw TypeError');
  assert.end();
});

test('Use an option not contained in the select as a the target parameter', assert => {
  var invalidTarget = document.createElement('optgroup');
  assert.throws(() => { select.parentNode.customSelect.append(option, invalidTarget); }, TypeError,
    'should throw TypeError');
  assert.end();
});

test('Use an invalid argument', assert => {
  assert.throws(() => { select.parentNode.customSelect.append(new RegExp()); }, TypeError,
    'should throw TypeError');
  assert.end();
});

test('Use an undefined argument', assert => {
  assert.throws(() => { select.parentNode.customSelect.append(); }, TypeError,
    'should throw TypeError');
  assert.end();
});

test('Use an empty array as an argument', assert => {
  expected = [];
  actual = select.parentNode.customSelect.append(expected);
  assert.deepEqual(actual, expected,
    'should return the same empty array');
  assert.end();
});