Sha256: d6fc4ea1b54a646fdbe6edea53f219815206b46235aa4664596d5611375d8640

Contents?: true

Size: 1.94 KB

Versions: 1

Compression:

Stored size: 1.94 KB

Contents

require 'spec_helper'

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

			scope :men_tag, ->(date) { created_at date }
			scope :and_mens do
				and! { tags "men"}
			end

		end

	end

	class NewProduct < Product
		load_definition_from Product

		define_cloudsearch do
			field :searchable_text, 		query: { weight: 4 }
			field :name, as: :text1
		end
	end

	# Example Query
	query = Product.cloudsearch.query("children panasonic")
	.and {
		or!(boost: 2) {
			# tags.not start_with "flash_deal"
			tags.not.start_with "flash_deal"
			# tags.near"sales"
			# tags start_with("flash_deal"), near("sales")
		}
		or!.not {
			currency "CAD", "EUR"
		}
		and! {
			price r.gte(100).lt(200)
		}
	}.created_at(Date.today).description("wasup")

	# binding.pry

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
CloudSesame-0.2.0 spec/cloud_sesame_spec.rb