mebla 1.0.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,73 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Mebla" do
4
+ describe "searching" do
5
+ before(:each) do
6
+ Mebla.context.rebuild_index
7
+ MongoidAlpha.create! :name => "Testing index", :value => 1, :cost => 2.0
8
+ end
9
+
10
+ it "should search and return the only relevant result" do
11
+ results=MongoidAlpha.search do
12
+ query { string "name: Testing index" }
13
+ end
14
+
15
+ results.count.should == 1
16
+ end
17
+
18
+ it "should search and return the only relevant result, and cast it into the correct class type" do
19
+ results=MongoidAlpha.search do
20
+ query { string "name: Testing index" }
21
+ end
22
+
23
+ results.first.class.should == MongoidAlpha
24
+ end
25
+
26
+ describe "multiple types" do
27
+ before(:each) do
28
+ MongoidBeta.create! :name => "Testing index"
29
+ end
30
+
31
+ it "should search and return all results of all class types" do
32
+ results=Mebla.search do
33
+ query { string "name: Testing index" }
34
+ end
35
+
36
+ results.count.should == 2
37
+ (results.each.collect{|e| e.class} & [MongoidAlpha, MongoidBeta]).should =~ [MongoidAlpha, MongoidBeta]
38
+ end
39
+
40
+ it "should search and return only results from the searched class type" do
41
+ results=MongoidAlpha.search do
42
+ query { string "name: Testing index" }
43
+ end
44
+
45
+ results.count.should == 1
46
+ results.first.class.should == MongoidAlpha
47
+ end
48
+ end
49
+
50
+ describe "embedded documents" do
51
+ before(:each) do
52
+ beta = MongoidBeta.create! :name => "Embedor parent"
53
+ beta.mongoid_gammas.create :name => "Embedded", :value => 1
54
+ end
55
+
56
+ it "should search and return the only relevant result" do
57
+ results=MongoidGamma.search do
58
+ query { string "name: Embedded" }
59
+ end
60
+
61
+ results.count.should == 1
62
+ end
63
+
64
+ it "should search and return the only relevant result, and cast it into the correct class type" do
65
+ results=MongoidGamma.search do
66
+ query { string "name: Embedded" }
67
+ end
68
+
69
+ results.first.class.should == MongoidGamma
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,45 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Mebla" do
4
+ describe "synchronization" do
5
+ before(:each) do
6
+ Mebla.context.rebuild_index
7
+ MongoidAlpha.create! :name => "Testing index", :value => 1, :cost => 2.0
8
+ end
9
+
10
+ it "should index new documents automatically" do
11
+ mdocument = MongoidAlpha.first
12
+ lambda {Mebla.context.slingshot_index.retrieve(:mongoid_alpha, mdocument.id.to_s)}.should_not raise_error
13
+ end
14
+
15
+ it "should remove deleted documents from index automatically" do
16
+ mdocument = MongoidAlpha.first
17
+ doc_id = mdocument.id.to_s
18
+ mdocument.destroy
19
+
20
+ lambda {MongoidAlpha.slingshot_index.retrieve(:mongoid_alpha, doc_id)}.should raise_error
21
+ end
22
+
23
+ it "should update the index automatically when a document is updated" do
24
+ udocument = MongoidAlpha.first
25
+ udocument.update_attributes(:cost => 3.1)
26
+
27
+ result = Mebla.context.slingshot_index.retrieve(:mongoid_alpha, udocument.id.to_s)
28
+ result[:cost].should == 3.1
29
+ end
30
+ end
31
+
32
+ describe "embedded documents" do
33
+ before(:each) do
34
+ beta = MongoidBeta.create! :name => "Embedor parent"
35
+ beta.mongoid_gammas.create :name => "Embedded", :value => 1
36
+ end
37
+
38
+ it "should index embedded documents automatically and link to the parent" do
39
+ mdocument = MongoidBeta.first.mongoid_gammas.first
40
+ lambda {
41
+ Slingshot::Configuration.client.get "#{Mebla::Configuration.instance.url}/#{Mebla.context.slingshot_index_name}/mongoid_gamma/#{mdocument.id.to_s}?routing=#{mdocument.mongoid_beta.id.to_s}"
42
+ }.should_not raise_error
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ class MeblaHelper
2
+ attr_accessor :host, :username, :password
3
+
4
+ def initialize
5
+ @host = "localhost"
6
+ @username = ""
7
+ @password = ""
8
+
9
+ Mebla.configure do |config|
10
+ index = "mebla"
11
+ host = "localhost"
12
+ port = 9200
13
+ end
14
+
15
+ if File.exist?("spec/fixtures/mongoid.yml")
16
+ config = YAML.load(File.open("spec/fixtures/mongoid.yml"))
17
+ @host = config["host"]
18
+ @username = config["username"]
19
+ @password = config["password"]
20
+ end
21
+ end
22
+
23
+ def setup_mongoid
24
+ Mongoid.configure do |config|
25
+ name = "mebla"
26
+ host = @host
27
+ username = @username
28
+ password = @password
29
+ config.allow_dynamic_fields = false
30
+ config.master = Mongo::Connection.new.db(name)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Mebla" do
4
+ describe "loading" do
5
+ !(defined?(Mongoid).nil?).should == true
6
+ !(defined?(Slingshot).nil?).should == true
7
+ !(defined?(Configuration).nil?).should == true
8
+ !(defined?(Context).nil?).should == true
9
+ !(defined?(LogSubscriber).nil?).should == true
10
+ !(defined?(ResultSet).nil?).should == true
11
+ !(defined?(Errors).nil?).should == true
12
+ !(defined?(Mongoid::Mebla).nil?).should == true
13
+ end
14
+
15
+ describe "configuration" do
16
+ it "should hold the correct data" do
17
+ Mebla::Configuration.instance.index.should == "mebla"
18
+ Mebla::Configuration.instance.host.should == "localhost"
19
+ Mebla::Configuration.instance.port.should == 9200
20
+ Mebla::Configuration.instance.logger.nil?.should == false
21
+ end
22
+
23
+ it "url should return a valid url based on the host and port" do
24
+ Mebla::Configuration.instance.url.should == "http://localhost:9200"
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,50 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'mebla'
5
+ require 'bundler'
6
+
7
+ Bundler.require :default, :development
8
+
9
+ require "#{File.dirname(__FILE__)}/mebla_helper"
10
+ require "#{File.dirname(__FILE__)}/../lib/mebla"
11
+
12
+ # Requires supporting files with custom matchers and macros, etc,
13
+ # in ./support/ and its subdirectories.
14
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
15
+
16
+ RSpec.configure do |config|
17
+ require 'database_cleaner'
18
+
19
+ mebla = MeblaHelper.new
20
+ mebla.setup_mongoid
21
+
22
+ require "#{File.dirname(__FILE__)}/fixtures/models"
23
+
24
+ config.before(:all) do
25
+ %w(tmp tmp/config tmp/log).each do |path|
26
+ FileUtils.mkdir_p "#{Dir.pwd}/#{path}"
27
+ end
28
+ end
29
+
30
+ config.after(:all) do
31
+ FileUtils.rm_r "#{Dir.pwd}/tmp" rescue nil
32
+ end
33
+
34
+ config.before(:suite) do
35
+ DatabaseCleaner.strategy = :truncation
36
+ DatabaseCleaner.orm = "mongoid"
37
+ end
38
+
39
+ config.before(:each) do
40
+ DatabaseCleaner.clean
41
+ end
42
+
43
+ config.before(:suite) do
44
+ Mebla.context.create_index
45
+ end
46
+
47
+ config.after(:suite) do
48
+ Mebla.context.drop_index
49
+ end
50
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |configuration|
2
+ configuration.include Mongoid::Matchers
3
+ end
@@ -0,0 +1,13 @@
1
+ module Rails
2
+ def self.root
3
+ File.join(Dir.pwd, 'tmp')
4
+ end
5
+
6
+ def self.env
7
+ @@environment ||= 'development'
8
+ end
9
+
10
+ def self.env=(env)
11
+ @@environment = env
12
+ end
13
+ end