gsolr 0.12.2

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,120 @@
1
+ describe GSolr::Message do
2
+
3
+ let(:generator){ GSolr::Message::Generator.new }
4
+
5
+ # call all of the simple methods...
6
+ # make sure the xml string is valid
7
+ # ensure the class is actually Solr::XML
8
+ [:optimize, :rollback, :commit].each do |meth|
9
+ it "#{meth} should generator xml" do
10
+ result = generator.send(meth)
11
+ result.should match(Regexp.escape("<#{meth}/>"))
12
+ end
13
+ end
14
+
15
+ context :add do
16
+
17
+ it 'should yield a Message::Document object when #add is called with a block' do
18
+ documents = [{:id=>1, :name=>'sam', :cat=>['cat 1', 'cat 2']}]
19
+ add_attrs = {:boost=>200.00}
20
+ result = generator.add(documents, add_attrs) do |doc|
21
+ doc.field_by_name(:name).attrs[:boost] = 10
22
+ doc.fields.size.should == 4
23
+ doc.fields_by_name(:cat).size.should == 2
24
+ end
25
+ result.should match(%r(name="cat">cat 1</field>))
26
+ result.should match(%r(name="cat">cat 2</field>))
27
+ result.should match(%r(<add boost="200.0">))
28
+ result.should match(%r(boost="10"))
29
+ result.should match(%r(<field name="id">1</field>))
30
+ end
31
+
32
+ # add a single hash ("doc")
33
+ it 'should create an add from a hash' do
34
+ data = {
35
+ :id=>1,
36
+ :name=>'matt'
37
+ }
38
+ result = generator.add(data)
39
+ result.should match(/<field name="name">matt<\/field>/)
40
+ result.should match(/<field name="id">1<\/field>/)
41
+ end
42
+
43
+ # add an array of hashes
44
+ it 'should create many adds from an array of hashes' do
45
+ data = [
46
+ {
47
+ :id=>1,
48
+ :name=>'matt'
49
+ },
50
+ {
51
+ :id=>2,
52
+ :name=>'sam'
53
+ }
54
+ ]
55
+ message = generator.add(data)
56
+ expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><add><doc><field name=\"id\">1</field><field name=\"name\">matt</field></doc><doc><field name=\"id\">2</field><field name=\"name\">sam</field></doc></add>"
57
+ message.should match(/<field name="name">matt<\/field>/)
58
+ message.should match(/<field name="name">sam<\/field>/)
59
+ end
60
+
61
+ # multiValue field support test, thanks to Fouad Mardini!
62
+ it 'should create multiple fields from array values' do
63
+ data = {
64
+ :id => 1,
65
+ :name => ['matt1', 'matt2']
66
+ }
67
+ result = generator.add(data)
68
+ result.should match(/<field name="name">matt1<\/field>/)
69
+ result.should match(/<field name="name">matt2<\/field>/)
70
+ end
71
+
72
+ it 'should create an add from a single Message::Document' do
73
+ document = GSolr::Message::Document.new
74
+ document.add_field('id', 1)
75
+ document.add_field('name', 'matt', :boost => 2.0)
76
+ result = generator.add(document)
77
+ result.should match(Regexp.escape('<?xml version="1.0" encoding="UTF-8"?>'))
78
+ result.should match(/<field name="id">1<\/field>/)
79
+ result.should match Regexp.escape('boost="2.0"')
80
+ result.should match Regexp.escape('name="name"')
81
+ result.should match Regexp.escape('matt</field>')
82
+ end
83
+
84
+ it 'should create adds from multiple Message::Documents' do
85
+ documents = (1..2).map do |i|
86
+ doc = GSolr::Message::Document.new
87
+ doc.add_field('id', i)
88
+ doc.add_field('name', "matt#{i}")
89
+ doc
90
+ end
91
+ result = generator.add(documents)
92
+ result.should match(/<field name="name">matt1<\/field>/)
93
+ result.should match(/<field name="name">matt2<\/field>/)
94
+ end
95
+
96
+ end
97
+
98
+ context :delete_by_id do
99
+
100
+ it 'should create a doc id delete' do
101
+ generator.delete_by_id(10).should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><id>10</id></delete>"
102
+ end
103
+
104
+ it 'should create many doc id deletes' do
105
+ generator.delete_by_id([1, 2, 3]).should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><id>1</id><id>2</id><id>3</id></delete>"
106
+ end
107
+
108
+ end
109
+
110
+ context :delete_by_query do
111
+ it 'should create a query delete' do
112
+ generator.delete_by_query('status:"LOST"').should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><query>status:\"LOST\"</query></delete>"
113
+ end
114
+
115
+ it 'should create many query deletes' do
116
+ generator.delete_by_query(['status:"LOST"', 'quantity:0']).should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><query>status:\"LOST\"</query><query>quantity:0</query></delete>"
117
+ end
118
+ end
119
+
120
+ end
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'gsolr')
data/tasks/spec.rake ADDED
@@ -0,0 +1,35 @@
1
+ # gem 'rspec'
2
+
3
+ # $stderr.puts `gem list`
4
+
5
+ require 'rspec'
6
+ require 'rspec/core'
7
+ require 'rspec/core/rake_task'
8
+
9
+ namespace :spec do
10
+ namespace :ruby do
11
+ desc 'run api specs through the Ruby implementations'
12
+ task :api do
13
+ puts "Ruby 1.8.7"
14
+ puts `rake spec:api`
15
+ puts "Ruby 1.9"
16
+ puts `rake1.9 spec:api`
17
+ puts "JRuby"
18
+ puts `jruby -S rake spec:api`
19
+ end
20
+ end
21
+
22
+ desc 'run api specs (mock out Solr dependency)'
23
+ Rspec::Core::RakeTask.new(:api) do |spec|
24
+ spec.pattern = "spec/api/**/*_spec.rb"
25
+ spec.verbose = true
26
+ spec.rspec_opts = ['--color']
27
+ end
28
+
29
+ desc 'run integration specs'
30
+ Rspec::Core::RakeTask.new(:integration) do |spec|
31
+ spec.pattern = "spec/integration/**/*_spec.rb"
32
+ spec.verbose = true
33
+ spec.rspec_opts = ['--color']
34
+ end
35
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gsolr
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 12
8
+ - 2
9
+ version: 0.12.2
10
+ platform: ruby
11
+ authors:
12
+ - Scott Gonyea
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-11-07 01:00:00 -07:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: json
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 4
30
+ - 6
31
+ version: 1.4.6
32
+ type: :runtime
33
+ prerelease: false
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *id002
48
+ description: This is a generic solr client, capable of talking to Solr, as well as Riak
49
+ email:
50
+ - me@sgonyea.com
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files: []
56
+
57
+ files:
58
+ - .gitignore
59
+ - Gemfile
60
+ - Gemfile.lock
61
+ - LICENSE
62
+ - README.md
63
+ - Rakefile
64
+ - gsolr.gemspec
65
+ - lib/gsolr.rb
66
+ - lib/gsolr/client.rb
67
+ - lib/gsolr/connection.rb
68
+ - lib/gsolr/connection/net_http.rb
69
+ - lib/gsolr/connection/requestable.rb
70
+ - lib/gsolr/connection/utils.rb
71
+ - lib/gsolr/message.rb
72
+ - lib/gsolr/message/document.rb
73
+ - lib/gsolr/message/field.rb
74
+ - lib/gsolr/message/generator.rb
75
+ - lib/gsolr/version.rb
76
+ - spec/api/client_spec.rb
77
+ - spec/api/connection/net_http_spec.rb
78
+ - spec/api/connection/requestable_spec.rb
79
+ - spec/api/connection/utils_spec.rb
80
+ - spec/api/gsolr_spec.rb
81
+ - spec/api/message_spec.rb
82
+ - spec/spec_helper.rb
83
+ - tasks/spec.rake
84
+ has_rdoc: true
85
+ homepage: http://rubygems.org/gems/gsolr
86
+ licenses: []
87
+
88
+ post_install_message:
89
+ rdoc_options: []
90
+
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ segments:
99
+ - 0
100
+ version: "0"
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ segments:
107
+ - 0
108
+ version: "0"
109
+ requirements: []
110
+
111
+ rubyforge_project: gsolr
112
+ rubygems_version: 1.3.7
113
+ signing_key:
114
+ specification_version: 3
115
+ summary: Generic Solr Client
116
+ test_files:
117
+ - spec/api/client_spec.rb
118
+ - spec/api/connection/net_http_spec.rb
119
+ - spec/api/connection/requestable_spec.rb
120
+ - spec/api/connection/utils_spec.rb
121
+ - spec/api/gsolr_spec.rb
122
+ - spec/api/message_spec.rb
123
+ - spec/spec_helper.rb