gsolr 0.12.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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