Skip to content

Commit

Permalink
added a few basic integration cases
Browse files Browse the repository at this point in the history
  • Loading branch information
dubadub committed Jun 2, 2019
1 parent 7d3609e commit d4be73c
Showing 1 changed file with 27 additions and 3 deletions.
30 changes: 27 additions & 3 deletions spec/active_record_intergration_spec.rb
Expand Up @@ -21,13 +21,37 @@ class Child < ActiveRecord::Base
end
end

it "filters parents" do
class MyFilter < ActionFilter::Base
let(:filter_class) do
Class.new(ActionFilter::Base) do
field :status

field :has_children, if: ->(value) { !!value } do |value|
-> { joins(:children) }
end
end
end

it "doesn't modify query if filter has no values" do
filter = filter_class.new({})

expect(Parent.all.merge(filter).to_sql).to eq("SELECT \"parents\".* FROM \"parents\"")
end

filter = MyFilter.new(status: "pending")
it "adds where statement to query when field defined with default settings" do
filter = filter_class.new(status: "pending")

expect(Parent.all.merge(filter).to_sql).to eq("SELECT \"parents\".* FROM \"parents\" WHERE \"parents\".\"status\" = 'pending'")
end

it "adds condition for children if value is truthy" do
filter = filter_class.new(status: "pending", has_children: true)

expect(Parent.all.merge(filter).to_sql).to eq("SELECT \"parents\".* FROM \"parents\" INNER JOIN \"children\" ON \"children\".\"parent_id\" = \"parents\".\"id\" WHERE \"parents\".\"status\" = 'pending'")
end

it "doesn't adds condition for children if value is falsey" do
filter = filter_class.new(has_children: false)

expect(Parent.all.merge(filter).to_sql).to eq("SELECT \"parents\".* FROM \"parents\"")
end
end

0 comments on commit d4be73c

Please sign in to comment.