Sha256: 198538c8e04aa03e170cc5c7dc4ab6a8a75fb22903aff68cda4919523503bcb2

Contents?: true

Size: 592 Bytes

Versions: 1

Compression:

Stored size: 592 Bytes

Contents

require 'spec_helper'
require_relative 'fixtures'
require 'sinatra/base'
require 'json'

class SinatraMixin < Sinatra::Base
  class Artist < Sequel::Model
    plugin :json_serializer
    extend Rack::Reducer
    reduces dataset, filters: [
      ->(genre:) { grep(:genre, "%#{genre}%", case_insensitive: true) },
      ->(name:) { grep(:name, "%#{name}%", case_insensitive: true) },
      ->(order:) { order(order.to_sym) }
    ]

  end

  get '/artists' do
    @artists = Artist.reduce(params)
    @artists.all.to_json
  end
end

describe SinatraMixin do
  it_behaves_like Rack::Reducer
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-reducer-0.1.0 spec/sinatra_mixin_spec.rb