sunspot_rails 0.11.5 → 1.0.0

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,117 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'sunspot', 'rails', 'spec_helper')
3
+
4
+ describe 'specs with Sunspot stubbed' do
5
+ disconnect_sunspot
6
+
7
+ before :each do
8
+ @session = Sunspot.session.original_session
9
+ @post = Post.create!
10
+ end
11
+
12
+ it 'should not send index to session' do
13
+ @session.should_not_receive(:index)
14
+ @post.index
15
+ end
16
+
17
+ it 'should not send index! to session' do
18
+ @session.should_not_receive(:index!)
19
+ @post.index!
20
+ end
21
+
22
+ it 'should not send commit to session' do
23
+ @session.should_not_receive(:commit)
24
+ Sunspot.commit
25
+ end
26
+
27
+ it 'should not send remove to session' do
28
+ @session.should_not_receive(:remove)
29
+ @post.remove_from_index
30
+ end
31
+
32
+ it 'should not send remove! to session' do
33
+ @session.should_not_receive(:remove)
34
+ @post.remove_from_index!
35
+ end
36
+
37
+ it 'should not send remove_by_id to session' do
38
+ @session.should_not_receive(:remove_by_id)
39
+ Sunspot.remove_by_id(Post, 1)
40
+ end
41
+
42
+ it 'should not send remove_by_id! to session' do
43
+ @session.should_not_receive(:remove_by_id!)
44
+ Sunspot.remove_by_id!(Post, 1)
45
+ end
46
+
47
+ it 'should not send remove_all to session' do
48
+ @session.should_not_receive(:remove_all)
49
+ Post.remove_all_from_index
50
+ end
51
+
52
+ it 'should not send remove_all! to session' do
53
+ @session.should_not_receive(:remove_all!)
54
+ Post.remove_all_from_index!
55
+ end
56
+
57
+ it 'should return false for dirty?' do
58
+ @session.should_not_receive(:dirty?)
59
+ Sunspot.dirty?.should == false
60
+ end
61
+
62
+ it 'should not send commit_if_dirty to session' do
63
+ @session.should_not_receive(:commit_if_dirty)
64
+ Sunspot.commit_if_dirty
65
+ end
66
+
67
+ it 'should return false for delete_dirty?' do
68
+ @session.should_not_receive(:delete_dirty?)
69
+ Sunspot.delete_dirty?.should == false
70
+ end
71
+
72
+ it 'should not send commit_if_delete_dirty to session' do
73
+ @session.should_not_receive(:commit_if_delete_dirty)
74
+ Sunspot.commit_if_delete_dirty
75
+ end
76
+
77
+ it 'should not execute a search when #search called' do
78
+ @session.should_not_receive(:search)
79
+ Post.search
80
+ end
81
+
82
+ it 'should not execute a search when #search called' do
83
+ @session.should_not_receive(:search)
84
+ Post.search
85
+ end
86
+
87
+ it 'should return a new search' do
88
+ @session.should_not_receive(:new_search)
89
+ Sunspot.new_search(Post).should respond_to(:execute)
90
+ end
91
+
92
+ describe 'stub search' do
93
+ before :each do
94
+ @search = Post.search
95
+ end
96
+
97
+ it 'should return empty results' do
98
+ @search.results.should == []
99
+ end
100
+
101
+ it 'should return empty hits' do
102
+ @search.hits.should == []
103
+ end
104
+
105
+ it 'should return zero total' do
106
+ @search.total.should == 0
107
+ end
108
+
109
+ it 'should return nil for a given facet' do
110
+ @search.facet(:category_id).should be_nil
111
+ end
112
+
113
+ it 'should return nil for a given dynamic facet' do
114
+ @search.dynamic_facet(:custom).should be_nil
115
+ end
116
+ end
117
+ end
metadata CHANGED
@@ -1,83 +1,82 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sunspot_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.5
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Mat Brown
8
13
  - Peer Allan
9
14
  - Michael Moen
10
15
  - Benjamin Krause
16
+ - Adam Salter
17
+ - Brandon Keepers
18
+ - Paul Canavese
11
19
  autorequire:
12
20
  bindir: bin
13
21
  cert_chain: []
14
22
 
15
- date: 2009-12-22 00:00:00 -05:00
23
+ date: 2010-03-04 00:00:00 -05:00
16
24
  default_executable:
17
25
  dependencies:
18
26
  - !ruby/object:Gem::Dependency
19
27
  name: escape
20
- type: :runtime
21
- version_requirement:
22
- version_requirements: !ruby/object:Gem::Requirement
28
+ prerelease: false
29
+ requirement: &id001 !ruby/object:Gem::Requirement
23
30
  requirements:
24
31
  - - ">="
25
32
  - !ruby/object:Gem::Version
33
+ segments:
34
+ - 0
35
+ - 0
36
+ - 4
26
37
  version: 0.0.4
27
- version:
38
+ type: :runtime
39
+ version_requirements: *id001
28
40
  - !ruby/object:Gem::Dependency
29
41
  name: sunspot
30
- type: :runtime
31
- version_requirement:
32
- version_requirements: !ruby/object:Gem::Requirement
42
+ prerelease: false
43
+ requirement: &id002 !ruby/object:Gem::Requirement
33
44
  requirements:
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 0.10.6
37
- - - <=
45
+ - - "="
38
46
  - !ruby/object:Gem::Version
39
- version: 0.10.8
40
- version:
47
+ segments:
48
+ - 1
49
+ - 0
50
+ - 0
51
+ version: 1.0.0
52
+ type: :runtime
53
+ version_requirements: *id002
41
54
  - !ruby/object:Gem::Dependency
42
55
  name: rspec
43
- type: :development
44
- version_requirement:
45
- version_requirements: !ruby/object:Gem::Requirement
56
+ prerelease: false
57
+ requirement: &id003 !ruby/object:Gem::Requirement
46
58
  requirements:
47
59
  - - ~>
48
60
  - !ruby/object:Gem::Version
61
+ segments:
62
+ - 1
63
+ - 2
49
64
  version: "1.2"
50
- version:
65
+ type: :development
66
+ version_requirements: *id003
51
67
  - !ruby/object:Gem::Dependency
52
68
  name: rspec-rails
53
- type: :development
54
- version_requirement:
55
- version_requirements: !ruby/object:Gem::Requirement
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
56
71
  requirements:
57
72
  - - ~>
58
73
  - !ruby/object:Gem::Version
74
+ segments:
75
+ - 1
76
+ - 2
59
77
  version: "1.2"
60
- version:
61
- - !ruby/object:Gem::Dependency
62
- name: ruby-debug
63
78
  type: :development
64
- version_requirement:
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: "0.10"
70
- version:
71
- - !ruby/object:Gem::Dependency
72
- name: technicalpickles-jeweler
73
- type: :development
74
- version_requirement:
75
- version_requirements: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - ~>
78
- - !ruby/object:Gem::Version
79
- version: "1.0"
80
- version:
79
+ version_requirements: *id004
81
80
  description: |
82
81
  Sunspot::Rails is an extension to the Sunspot library for Solr search.
83
82
  Sunspot::Rails adds integration between Sunspot and ActiveRecord, including
@@ -99,17 +98,18 @@ files:
99
98
  - README.rdoc
100
99
  - TODO
101
100
  - History.txt
101
+ - VERSION.yml
102
102
  - LICENSE
103
- - lib/sunspot/spec/extension.rb
103
+ - lib/sunspot/rails/spec_helper.rb
104
104
  - lib/sunspot/rails/searchable.rb
105
105
  - lib/sunspot/rails/version.rb
106
+ - lib/sunspot/rails/stub_session_proxy.rb
106
107
  - lib/sunspot/rails/adapters.rb
107
108
  - lib/sunspot/rails/configuration.rb
108
109
  - lib/sunspot/rails/server.rb
109
110
  - lib/sunspot/rails/tasks.rb
110
111
  - lib/sunspot/rails/request_lifecycle.rb
111
- - lib/sunspot/rails/util.rb
112
- - lib/sunspot/rails/session_proxy.rb
112
+ - lib/sunspot/rails/solr_logging.rb
113
113
  - lib/sunspot/rails.rb
114
114
  - dev_tasks/gemspec.rake
115
115
  - dev_tasks/todo.rake
@@ -121,19 +121,18 @@ files:
121
121
  - rails/init.rb
122
122
  - spec/spec_helper.rb
123
123
  - spec/session_spec.rb
124
+ - spec/stub_session_proxy_spec.rb
124
125
  - spec/server_spec.rb
125
126
  - spec/configuration_spec.rb
126
127
  - spec/model_lifecycle_spec.rb
127
128
  - spec/schema.rb
128
129
  - spec/model_spec.rb
129
- - spec/sunspot_mocking_spec.rb
130
- - spec/util_spec.rb
131
130
  - spec/request_lifecycle_spec.rb
132
131
  - spec/mock_app/app/controllers/posts_controller.rb
133
132
  - spec/mock_app/app/controllers/application_controller.rb
134
133
  - spec/mock_app/app/controllers/application.rb
134
+ - spec/mock_app/app/models/photo_post.rb
135
135
  - spec/mock_app/app/models/blog.rb
136
- - spec/mock_app/app/models/photo_post_with_auto.rb
137
136
  - spec/mock_app/app/models/post_with_auto.rb
138
137
  - spec/mock_app/app/models/author.rb
139
138
  - spec/mock_app/app/models/post.rb
@@ -161,18 +160,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
160
  requirements:
162
161
  - - ">="
163
162
  - !ruby/object:Gem::Version
163
+ segments:
164
+ - 0
164
165
  version: "0"
165
- version:
166
166
  required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  requirements:
168
168
  - - ">="
169
169
  - !ruby/object:Gem::Version
170
+ segments:
171
+ - 0
170
172
  version: "0"
171
- version:
172
173
  requirements: []
173
174
 
174
175
  rubyforge_project: sunspot
175
- rubygems_version: 1.3.5
176
+ rubygems_version: 1.3.6
176
177
  signing_key:
177
178
  specification_version: 3
178
179
  summary: Rails integration for the Sunspot Solr search library
@@ -1,76 +0,0 @@
1
- module Sunspot
2
- module Rails
3
- class SessionProxy
4
- extend MonitorMixin
5
-
6
- class <<self
7
- def instance
8
- synchronize do
9
- @instance ||=
10
- begin
11
- configuration = Sunspot::Rails::Configuration.new
12
- if configuration.has_master?
13
- new(configuration)
14
- else
15
- session = Sunspot::Session.new
16
- session.config.solr.url = URI::HTTP.build(
17
- :host => configuration.hostname,
18
- :port => configuration.port,
19
- :path => configuration.path
20
- ).to_s
21
- session
22
- end
23
- end
24
- end
25
- end
26
-
27
- def reset!
28
- synchronize do
29
- @instance = nil
30
- end
31
- end
32
-
33
- private :new
34
- end
35
-
36
- delegate :new_search, :search, :to => :read_session
37
- delegate :index, :index!, :commit, :remove, :remove!, :remove_by_id,
38
- :remove_by_id!, :remove_all, :remove_all!, :dirty?, :commit_if_dirty, :batch,
39
- :to => :write_session
40
-
41
- def initialize(configuration)
42
- @configuration = configuration
43
- end
44
-
45
- private
46
-
47
- def read_session
48
- Thread.current[:sunspot_rails_read_session] ||=
49
- begin
50
- session = Sunspot::Session.new
51
- session.config.solr.url = URI::HTTP.build(
52
- :host => @configuration.hostname,
53
- :port => @configuration.port,
54
- :path => @configuration.path
55
- ).to_s
56
- session
57
- end
58
- end
59
-
60
- def write_session
61
- Thread.current[:sunspot_rails_write_session] ||=
62
- if @configuration.has_master?
63
- master_session = Sunspot::Session.new
64
- master_session.config.solr.url = URI::HTTP.build(
65
- :host => configuration.master_hostname,
66
- :port => configuration.master_port,
67
- :path => configuration.master_path
68
- ).to_s
69
- master_session
70
- else
71
- read_session
72
- end
73
- end
74
- end
75
- end
76
- end
@@ -1,30 +0,0 @@
1
- require 'escape'
2
-
3
- module Sunspot #:nodoc:
4
- module Rails #:nodoc:
5
- class Util
6
- class << self
7
- def sunspot_options
8
- @sunspot_options ||= {}
9
- end
10
-
11
- def index_relevant_attribute_changed?( object )
12
- class_key = object.class.to_s.underscore.to_sym
13
- ignore_attributes = sunspot_options_for(object.class)[:ignore_attribute_changes_of] || []
14
- !(object.changes.symbolize_keys.keys - ignore_attributes).blank?
15
- end
16
-
17
- private
18
-
19
- def sunspot_options_for(clazz)
20
- class_key = clazz.to_s.underscore.to_sym
21
- if options = sunspot_options[class_key]
22
- options
23
- elsif superclass = clazz.superclass
24
- sunspot_options_for(superclass)
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,45 +0,0 @@
1
- module Sunspot
2
- module Rails
3
- module Spec
4
- module Extension
5
- def self.included(base)
6
- base.class_eval do
7
- class_inheritable_accessor :sunspot_integration
8
- extend ClassMethods
9
- end
10
- end
11
-
12
- def integrate_sunspot?
13
- self.class.integrate_sunspot?
14
- end
15
-
16
- def mock_sunspot
17
- [ :index, :remove_from_index ].each do |method_name|
18
- Sunspot.stub!(method_name)
19
- end
20
- end
21
-
22
- end
23
-
24
- module ClassMethods
25
- def integrate_sunspot( integrate = true )
26
- self.sunspot_integration = integrate
27
- end
28
-
29
- def integrate_sunspot?
30
- !!self.sunspot_integration
31
- end
32
- end
33
- end
34
- end
35
- end
36
-
37
- module ActiveSupport
38
- class TestCase
39
- before(:each) do
40
- mock_sunspot unless integrate_sunspot?
41
- end
42
-
43
- include Sunspot::Rails::Spec::Extension
44
- end
45
- end
@@ -1,2 +0,0 @@
1
- class PhotoPostWithAuto < PostWithAuto
2
- end
@@ -1,22 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- describe 'Sunspot Spec Integration - integrate sunspot' do
4
- integrate_sunspot
5
-
6
- it "should call sunspot" do
7
- Sunspot::Rails.reset
8
- @post = PostWithAuto.create!
9
- Sunspot.commit
10
- PostWithAuto.search.results.should == [@post]
11
- end
12
- end
13
-
14
- describe 'Sunspot Spec Integration - mock sunspot' do
15
- it "should call sunspot" do
16
- Sunspot.remove_all
17
- Sunspot.commit
18
- @post = PostWithAuto.create!
19
- Sunspot.commit
20
- PostWithAuto.search.results.should_not include(@post)
21
- end
22
- end
data/spec/util_spec.rb DELETED
@@ -1,21 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe 'ActiveRecord mixin and instance methods' do
4
- it "should know about relevant index attributes - relevant attribute changed" do
5
- @post = PostWithAuto.new
6
- @post.should_receive(:changes).and_return(:title => 'new title')
7
- Sunspot::Rails::Util.index_relevant_attribute_changed?(@post).should == true
8
- end
9
-
10
- it "should know about relevant index attributes - no relevant attribute changed" do
11
- @post = PostWithAuto.new
12
- @post.should_receive(:changes).and_return(:updated_at => Date.tomorrow)
13
- Sunspot::Rails::Util.index_relevant_attribute_changed?(@post).should == false
14
- end
15
-
16
- it "should know about relevant index attributes with subclasses" do
17
- @post = PhotoPostWithAuto.new
18
- @post.should_receive(:changes).and_return(:title => 'new_title')
19
- Sunspot::Rails::Util.index_relevant_attribute_changed?(@post).should == true
20
- end
21
- end