hui
1/14/2010 - 10:41 AM

application_controller.rb

  if Rails.env == 'cucumber'
    prepend_before_filter :stub_current_user
    before_filter :cucumber_amf
    
    def stub_current_user
      if cookies[:stub_user_id]
        user = User.find(cookies[:stub_user_id])
        sign_in(user)
      end
    end
    
    def cucumber_amf
      if params[:amf]
        vo = AMF.deserialize_params(params[:amf], :amf_version => 3)
        Rails.logger.debug "vo: #{vo.inspect}"
        if vo 
          if vo.is_a?(Hash)
            vo.delete(:action)
            vo.delete(:controller)
            params.merge! vo
            if vo.values.size == 1 && vo.values[0][:id] && params[:id].blank?
              params[:id] = vo.values[0][:id]
            end
          elsif vo.is_a?(Array)
            if vo.all?{|item| item.is_a?(String)}
              params[:ids] = vo
            elsif vo.all?{|item| item.is_a?(Hash)}
              keys = vo.map { |item| item.keys[0] }
              if keys.uniq.size == 1
                params[keys.first.to_sym] = vo.map{|item| item.values[0] }
              end
            end
          elsif vo.is_a?(String)
            params[:id] = vo
          end
        end
        Rails.logger.debug "params: #{params.inspect}"
      end
    end
  end