Sha256: 453aa2c859cd53333dcf1c7577553b3354dd517c15b78537164a6134edda7753

Contents?: true

Size: 1.32 KB

Versions: 5

Compression:

Stored size: 1.32 KB

Contents

require 'spec_helper_active_record'

module Trailblazer
  class Finder
    module Adapters
      describe FriendlyId do
        after do
          Product.delete_all
        end

        def finder_class
          Class.new(Trailblazer::Finder) do
            adapters ActiveRecord, FriendlyId

            entity_type { Product }

            filter_by :name
            filter_by :price
          end
        end

        def finder_with_slug(slug = nil, filters = {})
          finder_class.new filter: { id: slug }.merge(filters)
        end

        it 'filters by slug' do
          2.times { |i| Product.create name: "Product #{i}", price: i, slug: "product_#{i}" }
          finder = finder_with_slug 'product_1'
          expect(finder.results.map(&:name)).to eq ['Product 1']
        end

        it 'filters by id' do
          2.times { |i| Product.create name: "Product #{i}", price: i, slug: "product_#{i}" }
          finder = finder_with_slug Product.last.id
          expect(finder.results.map(&:name)).to match_array([Product.last.name])
        end

        it 'returns no records when slug is not found' do
          2.times { |i| Product.create name: "Product #{i}", price: i, slug: "product_#{i}" }
          finder = finder_with_slug 'unknown_1'
          expect(finder.count).to eq 0
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
trailblazer-finder-0.1.4 spec/trailblazer/finder/adapters/friendly_id_spec.rb
trailblazer-finder-0.1.3 spec/trailblazer/finder/adapters/friendly_id_spec.rb
trailblazer-finder-0.1.2 spec/trailblazer/finder/adapters/friendly_id_spec.rb
trailblazer-finder-0.1.1 spec/trailblazer/finder/adapters/friendly_id_spec.rb
trailblazer-finder-0.1.0 spec/trailblazer/finder/adapters/friendly_id_spec.rb