# require 'spec_helper'
# require 'ruby-prof'
# require 'benchmark'

# describe CloudSesame do

# 	# AWS initializer
# 	# =======================================================
# 	require 'yaml'
# 	YAML.load_file('aws.yml').each do |key, value|
# 		ENV["AWS_#{ key }"] = value
# 	end

# 	# Domain Initializer /config/initializers/cloudsearch.rb
# 	# =======================================================
# 	require 'cloud_sesame'

# 	CloudSesame::Domain::Client.configure do |config|
# 		config.access_key = ENV['AWS_ACCESS_KEY_ID']
# 		config.secret_key = ENV['AWS_SECRET_ACCESS_KEY']
# 	end

# 	# Usage Example
# 	# =======================================================
# 	class Product
# 		include CloudSesame

# 		define_cloudsearch do
# 			# Product CloudSesame Config
# 			config.endpoint = ENV['AWS_ENDPOINT']
# 			config.region 	= ENV['AWS_REGION']

# 			default_size 100

# 			define_sloppiness 3

# 			define_fuzziness do
# 				max_fuzziness 3
# 				min_char_size 6
# 				fuzzy_percent 0.17
# 			end

# 			field :searchable_text, 		query: { weight: 2 }
# 			field :description, 				query: true
# 			field :tags

# 			field :affiliate_advertiser_ext_id, facet: { size: 50 }
# 			field :currency, 						facet: true
# 			field :discount_percentage, facet: { buckets: %w([10,100] [25,100] [50,100] [70,100]), method: 'interval' }
# 			field :manufacturer_name, 	facet: { size: 50 }
# 			field :price, 							facet: { buckets: %w([0,25] [25,50] [50,100] [100,200] [200,}), method: 'interval' }
# 			field :category_string, 		facet: { sort: 'bucket', size: 10_000 }
# 			field :created_at,					default: -> { gt Date.today }

# 			scope :shoes_by_brand, ->(brand = nil) { query("shoes").and { manufacturer_name brand }  if brand }
# 			scope :and_mens do
# 				and! { tags "men"}
# 			end

# 		end

# 	end


# 	n = 10_000
#   q = nil
# 	result = RubyProf.profile do
# 	  n.times do
# 			q = Product.cloudsearch.query("black   jacket").sort(price: :asc).page(1).size(1000).and {
# 					or! {
# 						tags "1", "2"
# 						and! {
# 							tags.not "3", "4"
# 						}
# 						and!.not {
# 							tags.start_with "5", "6"
# 							tags.not.start_with "7"
# 							tags.not.near "8"
# 							tags start_with("9"), near("10")
# 							tags term "11"
# 							tags phrase "12"
# 						}
# 						or!.not {
# 							price 25..100
# 							price 100...200
# 							price gte(200).lt(300)
# 							price gte(300)
# 						}
# 						or! {
# 							created_at Date.today - 7
# 							created_at gte(Date.today)
# 							created_at gte(Date.today).lt(Date.today + 3)
# 						}
# 					}
# 				}
#         a = q.applied_filters

# 	  end
# 	end
# 	printer = RubyProf::FlatPrinter.new(result)
# 	printer.print(STDOUT, {})

# 	binding.pry

#   # class TestClass
#   #   def initialize
#   #     @name = "scott"
#   #   end
#   #   def greeting
#   #     "hello world!"
#   #   end
#   #   def test_method
#   #     local = :test
#   #     q = Product.cloudsearch.and {
#   #       binding.pry
#   #     }
#   #   end
#   # end

#   # test = TestClass.new
#   # test.test_method
# end