Sha256: 980b71227930b9ddfdbc49367d6d023333b1187bf0cc9de86f8007150cef5bc0

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

RSpec.describe BlacklightRangeLimit::FilterField do
  let(:search_state) { Blacklight::SearchState.new(params, blacklight_config, controller) }

  let(:param_values) { {} }
  let(:params) { ActionController::Parameters.new(param_values) }
  let(:blacklight_config) do
    Blacklight::Configuration.new.configure do |config|
      config.add_facet_field 'some_field', filter_class: described_class
      config.filter_search_state_fields = true
    end
  end
  let(:controller) { double }
  let(:filter) { search_state.filter('some_field') }

  describe '#add' do
    it 'adds a new range parameter' do
      new_state = filter.add(1999..2099)

      expect(new_state.params.dig(:range, 'some_field')).to include begin: 1999, end: 2099
    end
  end

  context 'with some existing data' do
    let(:param_values) { { range: { some_field: { begin: '2013', end: '2022' } } } }

    describe '#add' do
      it 'replaces the existing range' do
        new_state = filter.add(1999..2099)

        expect(new_state.params.dig(:range, 'some_field')).to include begin: 1999, end: 2099
      end
    end

    describe '#remove' do
      it 'removes the existing range' do
        new_state = filter.remove(2013..2022)

        expect(new_state.params.dig(:range, 'some_field')).to be_blank
      end
    end

    describe '#values' do
      it 'converts the parameters to a Range' do
        expect(filter.values).to eq [2013..2022]
      end
    end

    describe '#include?' do
      it 'compares the provided value to the parameter values' do
        expect(filter.include?(2013..2022)).to eq true
        expect(filter.include?(1234..2345)).to eq false
      end
    end

  end

  context 'with array-mangled data' do
    let(:param_values) { { range: { some_field: { begin: { '0' => '2013' }, end: { '0' => '2022' } } } } }

    describe '#values' do
      it 'converts the parameters to a Range' do
        expect(filter.values).to eq [2013..2022]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
blacklight_range_limit-8.2.0 spec/presenters/filter_field_spec.rb