Sha256: 973d0c9db6f31ce027cf7a8cde7d5d98642de2fb57ab448f91263e58947ffffc

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

class Zendesk2::Client
  class Real
    alias search_organization search
  end # Real

  class Mock
    def search_organization(query, params={})
      terms = Hash[query.split(" ").map { |t| t.split(":") }]
      terms.delete("type") # context already provided

      collection = self.data[:organizations].values

      # organization name is fuzzy matched
      if organization_name = terms.delete("name")
        terms.merge!("name" => "*#{organization_name}*")
      end

      compiled_terms = terms.inject({}) do |r,(term, raw_condition)|
        condition = if raw_condition.include?("*")
                      Regexp.compile(raw_condition.gsub("*", ".*"), Regexp::IGNORECASE)
                    else
                      raw_condition
                    end
        r.merge(term => condition)
      end

      results = collection.select do |v|
        compiled_terms.all? do |term, condition|
          condition.is_a?(Regexp) ? condition.match(v[term.to_s]) : v[term.to_s].to_s == condition.to_s
        end
      end

      page(params, :organizations, "/search.json", "results", resources: results, query: {query: query})
    end
  end # Mock
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zendesk2-1.4.2 lib/zendesk2/client/requests/search_organization.rb