Sha256: a17bc8ff0c0ec9b04db6b851739f9c7dd7e08360d9a0306b2a9b608fb9044cf8

Contents?: true

Size: 1.9 KB

Versions: 14

Compression:

Stored size: 1.9 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

RSpec.describe ThinkingSphinx::Configuration::MinimumFields do
  let(:indices) { [index_a, index_b] }
  let(:index_a) { double 'Index A', :model => model_a, :type => 'plain',
    :sources => [double(:fields => [field_a1, field_a2])] }
  let(:index_b) { double 'Index B', :model => model_a, :type => 'rt',
    :fields => [field_b1, field_b2] }
  let(:field_a1) { double :name => 'sphinx_internal_class_name' }
  let(:field_a2) { double :name => 'name' }
  let(:field_b1) { double :name => 'sphinx_internal_class_name' }
  let(:field_b2) { double :name => 'name' }
  let(:model_a)  { double :inheritance_column => 'type',
    :table_exists? => true }
  let(:model_b)  { double :inheritance_column => 'type',
    :table_exists? => true }
  let(:subject)  { ThinkingSphinx::Configuration::MinimumFields.new indices }

  it 'removes the class name fields when no index models have type columns' do
    allow(model_a).to receive(:column_names).and_return(['id', 'name'])
    allow(model_b).to receive(:column_names).and_return(['id', 'name'])

    subject.reconcile

    expect(index_a.sources.first.fields).to eq([field_a2])
    expect(index_b.fields).to eq([field_b2])
  end

  it 'removes the class name fields when models have no tables' do
    allow(model_a).to receive(:table_exists?).and_return(false)
    allow(model_b).to receive(:table_exists?).and_return(false)

    subject.reconcile

    expect(index_a.sources.first.fields).to eq([field_a2])
    expect(index_b.fields).to eq([field_b2])
  end

  it 'keeps the class name fields when one index model has a type column' do
    allow(model_a).to receive(:column_names).and_return(['id', 'name', 'type'])
    allow(model_b).to receive(:column_names).and_return(['id', 'name'])

    subject.reconcile

    expect(index_a.sources.first.fields).to eq([field_a1, field_a2])
    expect(index_b.fields).to eq([field_b1, field_b2])
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
thinking-sphinx-5.4.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-5.3.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-5.2.1 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-5.2.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-5.1.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-5.0.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-4.4.1 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-4.4.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-4.3.2 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-4.3.1 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-4.3.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-4.2.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-4.1.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb
thinking-sphinx-4.0.0 spec/thinking_sphinx/configuration/minimum_fields_spec.rb