Sha256: 75c59c19b6c3f93574845111119caba9b792550ed40257fff371dc4a11ddced2
Contents?: true
Size: 1.63 KB
Versions: 1
Compression:
Stored size: 1.63 KB
Contents
# frozen_string_literal: true RSpec.describe Pursuit::SimpleSearch do subject(:simple_search) do described_class.new( Product.left_outer_joins(:variations).group(:id) ) do search_attribute :title search_attribute ProductVariation.arel_table[:title] end end describe '#initialize' do it 'is expected to set #relation eq `relation`' do expect(simple_search).to have_attributes(relation: Product.left_outer_joins(:variations).group(:id)) end it 'is expected to evaluate the passed block' do expect(simple_search.attributes).to be_present end end describe '#search_attribute' do subject(:search_attribute) do simple_search.search_attribute(ProductVariation.arel_table[:currency]) end it 'is expected to add the attribute to #attributes' do search_attribute expect(simple_search.attributes).to include(ProductVariation.arel_table[:currency]) end end describe '#parse' do subject(:parse) { simple_search.parse('Shirt') } it 'is expected to equal the ARel node' do expect(parse).to eq( Product.arel_table[:title].matches('%Shirt%').or( ProductVariation.arel_table[:title].matches('%Shirt%') ) ) end end describe '#apply' do subject(:apply) { simple_search.apply('Shirt') } it 'is expected to equal #relation with clauses applied' do expect(apply).to eq( Product.left_outer_joins(:variations).group(:id).where( Product.arel_table[:title].matches('%Shirt%').or( ProductVariation.arel_table[:title].matches('%Shirt%') ) ) ) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pursuit-1.0.1 | spec/lib/pursuit/simple_search_spec.rb |