Skip to content

Commit

Permalink
add ActionController extension
Browse files Browse the repository at this point in the history
  • Loading branch information
mashiro committed Nov 4, 2011
1 parent a3432ed commit e6bf24b
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 0 deletions.
15 changes: 15 additions & 0 deletions lib/kashiwamochi/action_controller_extension.rb
@@ -0,0 +1,15 @@
module Kashiwamochi
module ActionControllerExtension
extend ActiveSupport::Concern

module InstanceMethods

def build_search_query!
q = params.delete(Kashiwamochi.config.search_key)
instance_variable_set("@#{Kashiwamochi.config.search_key}", Kashiwamochi.build(q))
end
alias_method :build_query!, :build_search_query! unless defined?(build_query!)

end
end
end
4 changes: 4 additions & 0 deletions lib/kashiwamochi/railtie.rb
@@ -1,8 +1,12 @@
require 'kashiwamochi/action_controller_extension'
require 'kashiwamochi/action_view_extension'

module Kashiwamochi
class Railtie < Rails::Railtie
initializer 'kashiwamochi.initialize' do
ActiveSupport.on_load(:action_controller) do
include Kashiwamochi::ActionControllerExtension
end
ActiveSupport.on_load(:action_view) do
include Kashiwamochi::ActionViewExtension
end
Expand Down
38 changes: 38 additions & 0 deletions spec/kashiwamochi/action_controller_extension_spec.rb
@@ -0,0 +1,38 @@
require 'spec_helper'
require 'action_controller/railtie'

include Kashiwamochi::ActionControllerExtension

describe Kashiwamochi::ActionControllerExtension do
describe '#build_search_query' do
before do
instance_eval <<-EOS
def params
@params
end
EOS
end
subject do
build_search_query!
@q
end

context 'with query' do
before do
@params = {:q => {:name => 'foo'}}
end

it { should be_an_instance_of Kashiwamochi::Query }
its(:name) { should eq 'foo' }
end

context 'without query' do
before do
@params = {}
end

it { should be_an_instance_of Kashiwamochi::Query }
its(:name) { should be_nil }
end
end
end

0 comments on commit e6bf24b

Please sign in to comment.