Tire gem をテストするための構文を理解しようとしています。
このコントローラー仕様 (scaffold テンプレートのデフォルト) は失敗しています
describe "GET index" do
it "assigns all reports as @reports" do
report = Report.create! valid_attributes
get :index, {}, valid_session
assigns(:reports).should eq([report])
end
end
なぜなら
Failure/Error: assigns(:reports).should eq([report])
TypeError:
can't convert Tire::Results::Collection to Array (Tire::Results::Collection#to_ary gives Tire::Results::Collection)
アクティブなレコード オブジェクトの配列ではなく、Tire の結果コレクションを期待するように仕様を記述する方法は? または、これについてもっと良い方法はありますか?
FWIW-
class ReportsController < ApplicationController
def index
@reports = Report.search(params)
end
...
そしてモデル:
class Report < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
...
def self.search(params)
tire.search(load: true) do
query { string params[:query] } if params[:query].present?
end
end
...