require 'spec_helper'

describe DropDownList do
  let(:dropdownlist) { create :drop_down_list, value: value }

  describe '#options' do
    let(:value) do
      <<~EOS
        Cohésion sociale
        Dév.Eco / Emploi
        Cadre de vie / Urb.
        Pilotage / Ingénierie
      EOS
    end

    it { expect(dropdownlist.options).to eq ['', 'Cohésion sociale', 'Dév.Eco / Emploi', 'Cadre de vie / Urb.', 'Pilotage / Ingénierie'] }

    context 'when one value is empty' do
      let(:value) do
        <<~EOS
          Cohésion sociale
          Cadre de vie / Urb.
          Pilotage / Ingénierie
        EOS
      end

      it { expect(dropdownlist.options).to eq ['', 'Cohésion sociale', 'Cadre de vie / Urb.', 'Pilotage / Ingénierie'] }
    end
  end

  describe 'disabled_options' do
    let(:value) do
      <<~EOS
        tip
        --top--
        --troupt--
        ouaich
      EOS
    end

    it { expect(dropdownlist.disabled_options).to match(['--top--', '--troupt--']) }
  end

  describe 'selected_options' do
    let(:dropdownlist) do
      create(:drop_down_list, type_de_champ: type_de_champ)
    end

    context 'when multiple' do
      let(:type_de_champ) { build(:type_de_champ_multiple_drop_down_list) }
      let(:champ) { type_de_champ.champ.build(value: '["1","2"]').decorate }

      it { expect(dropdownlist.selected_options(champ)).to match(['1', '2']) }
    end

    context 'when simple' do
      let(:type_de_champ) { build(:type_de_champ_drop_down_list) }
      let(:champ) { type_de_champ.champ.build(value: '1').decorate }

      it { expect(dropdownlist.selected_options(champ)).to match(['1']) }
    end
  end
end
