simple_solr 0.6.0 → 0.7.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.
- data/.travis.yml +0 -1
 - data/CHANGELOG.rdoc +7 -0
 - data/Gemfile +2 -0
 - data/README.rdoc +30 -8
 - data/lib/simple_solr.rb +1 -5
 - data/lib/simple_solr/search.rb +18 -7
 - data/lib/simple_solr/update.rb +1 -0
 - data/lib/simple_solr/version.rb +1 -1
 - data/simple_solr.gemspec +2 -0
 - data/spec/fixtures/apple.xml +20 -0
 - data/spec/fixtures/result.xml +46 -0
 - data/spec/simple_solr/search_spec.rb +19 -17
 - data/spec/simple_solr/update_spec.rb +25 -9
 - data/spec/support/fakeweb.rb +3 -0
 - metadata +38 -10
 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.rdoc
    CHANGED
    
    | 
         @@ -1,3 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            == 0.7.0 (Sep 29, 2011)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            - Only test on 1.9.2
         
     | 
| 
      
 4 
     | 
    
         
            +
            - Use fakeweb to mock the webserver response
         
     | 
| 
      
 5 
     | 
    
         
            +
            - Use Nokogiri to parse the response instead of relying on automatic hashing
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       1 
8 
     | 
    
         
             
            == 0.6.0 (Aug 18, 2011)
         
     | 
| 
       2 
9 
     | 
    
         | 
| 
       3 
10 
     | 
    
         
             
            - Return the parsed response from httparty for search results
         
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -130,10 +130,25 @@ Use the +simple_search+ class method on your model: 
     | 
|
| 
       130 
130 
     | 
    
         | 
| 
       131 
131 
     | 
    
         
             
              Document.simple_search 'apple'
         
     | 
| 
       132 
132 
     | 
    
         | 
| 
       133 
     | 
    
         
            -
            This will make a trip to Solr and return the results as a  
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
      
 133 
     | 
    
         
            +
            This will make a trip to Solr and return the results as a Nokogiri XML
         
     | 
| 
      
 134 
     | 
    
         
            +
            Document. A slightly more convenient method to return only the matching
         
     | 
| 
      
 135 
     | 
    
         
            +
            documents is present as well:
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
              Document.simple_search_docs 'apple'
         
     | 
| 
      
 138 
     | 
    
         
            +
              
         
     | 
| 
      
 139 
     | 
    
         
            +
            gives you a Nodeset which you can query further. You will need either
         
     | 
| 
      
 140 
     | 
    
         
            +
            XPath or CSS selectors to drill down to the results you want. Given this
         
     | 
| 
      
 141 
     | 
    
         
            +
            individual +doc+ result:
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
              <doc><str name="title">Woezel en Pip</str></doc>
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
            the contents of the title tag can be fetched like this:
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
              results = Document.simple_search_docs 'apple'
         
     | 
| 
      
 148 
     | 
    
         
            +
              results.first.at_css('str[name=title]').contents   # => Woezel en Pip
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            === Search parameters
         
     | 
| 
       137 
152 
     | 
    
         | 
| 
       138 
153 
     | 
    
         
             
            You can add parameters, for example if you want to limit results using +fq+:
         
     | 
| 
       139 
154 
     | 
    
         | 
| 
         @@ -143,7 +158,10 @@ See the Solr documentation[http://wiki.apache.org/solr/CommonQueryParameters] fo 
     | 
|
| 
       143 
158 
     | 
    
         
             
            of common query parameters. Just remember that the +q+ parameter will be set already,
         
     | 
| 
       144 
159 
     | 
    
         
             
            although it can be overriden by the parameters you provide.
         
     | 
| 
       145 
160 
     | 
    
         | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
            === Response example
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
            The raw response from Solr will look something like this:
         
     | 
| 
       147 
165 
     | 
    
         | 
| 
       148 
166 
     | 
    
         
             
              <?xml version="1.0" encoding="UTF-8"?>
         
     | 
| 
       149 
167 
     | 
    
         
             
              <response>
         
     | 
| 
         @@ -166,8 +184,7 @@ The response from Solr will look something like this: 
     | 
|
| 
       166 
184 
     | 
    
         
             
                </lst>
         
     | 
| 
       167 
185 
     | 
    
         
             
              </response>
         
     | 
| 
       168 
186 
     | 
    
         | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
     | 
    
         
            -
            webserver config/response headers if that does not happen.
         
     | 
| 
      
 187 
     | 
    
         
            +
            where every +doc+ is a matching document found in the index.
         
     | 
| 
       171 
188 
     | 
    
         | 
| 
       172 
189 
     | 
    
         | 
| 
       173 
190 
     | 
    
         
             
            == Working in batches
         
     | 
| 
         @@ -184,10 +201,15 @@ Same for deleting documents: 
     | 
|
| 
       184 
201 
     | 
    
         
             
                document.delete_from_solr
         
     | 
| 
       185 
202 
     | 
    
         
             
              end
         
     | 
| 
       186 
203 
     | 
    
         | 
| 
       187 
     | 
    
         
            -
            Just remember to not  
     | 
| 
      
 204 
     | 
    
         
            +
            Just remember to not change the +id+ field since you added the model, since
         
     | 
| 
       188 
205 
     | 
    
         
             
            this key is used to delete documents from Solr.
         
     | 
| 
       189 
206 
     | 
    
         | 
| 
       190 
207 
     | 
    
         | 
| 
      
 208 
     | 
    
         
            +
            == Supported Ruby version
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
      
 210 
     | 
    
         
            +
            This gem is only tested on Ruby 1.9.2. It will probably work on other versions as well.
         
     | 
| 
      
 211 
     | 
    
         
            +
             
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
       191 
213 
     | 
    
         
             
            == Helping out
         
     | 
| 
       192 
214 
     | 
    
         | 
| 
       193 
215 
     | 
    
         
             
            Interested in working on SimpleSolr? Please see DEVELOPMENT.rdoc.
         
     | 
    
        data/lib/simple_solr.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'active_record'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'nokogiri'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'httparty'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require 'builder'
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
         @@ -9,7 +10,6 @@ require "simple_solr/version" 
     | 
|
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
            if defined?(ActiveRecord::Base)
         
     | 
| 
       11 
12 
     | 
    
         
             
              ActiveRecord::Base.send :include, SimpleSolr::Update
         
     | 
| 
       12 
     | 
    
         
            -
              ActiveRecord::Base.extend SimpleSolr::Search
         
     | 
| 
       13 
13 
     | 
    
         
             
            end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            module SimpleSolr
         
     | 
| 
         @@ -17,9 +17,5 @@ module SimpleSolr 
     | 
|
| 
       17 
17 
     | 
    
         
             
                def configuration
         
     | 
| 
       18 
18 
     | 
    
         
             
                  @configuration ||= SimpleSolr::Configuration.new
         
     | 
| 
       19 
19 
     | 
    
         
             
                end
         
     | 
| 
       20 
     | 
    
         
            -
                
         
     | 
| 
       21 
     | 
    
         
            -
                def search(query, params)
         
     | 
| 
       22 
     | 
    
         
            -
                  SimpleSolr::Search.simple_search(query, params)
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
20 
     | 
    
         
             
              end
         
     | 
| 
       25 
21 
     | 
    
         
             
            end
         
     | 
    
        data/lib/simple_solr/search.rb
    CHANGED
    
    | 
         @@ -5,15 +5,26 @@ module SimpleSolr 
     | 
|
| 
       5 
5 
     | 
    
         
             
                #
         
     | 
| 
       6 
6 
     | 
    
         
             
                #   Product.simple_search 'delicious', :fq => "category:fruit"
         
     | 
| 
       7 
7 
     | 
    
         
             
                #
         
     | 
| 
       8 
     | 
    
         
            -
                # Returns a  
     | 
| 
       9 
     | 
    
         
            -
                #
         
     | 
| 
       10 
     | 
    
         
            -
                # {
         
     | 
| 
       11 
     | 
    
         
            -
                #   "lst" => [{"int"=>["0", "18"], "name"=>"responseHeader"},{"name"=>"highlighting"}],
         
     | 
| 
       12 
     | 
    
         
            -
                #   "result" => {"name"=>"response", "numFound"=>"0", "start"=>"0", "maxScore"=>"0.0"}
         
     | 
| 
       13 
     | 
    
         
            -
                # }
         
     | 
| 
      
 8 
     | 
    
         
            +
                # Returns a Nokogiri::XML::Document.
         
     | 
| 
       14 
9 
     | 
    
         
             
                def simple_search(query, params={})
         
     | 
| 
       15 
10 
     | 
    
         
             
                  query = {:q => query}
         
     | 
| 
       16 
     | 
    
         
            -
                  get(SimpleSolr.configuration.uri + "/select", :query => query.merge(params)) 
     | 
| 
      
 11 
     | 
    
         
            +
                  response = get(SimpleSolr.configuration.uri + "/select", :query => query.merge(params))
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Nokogiri::XML(response.body)
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                # Returns all +doc+ elements, aka matching documents, from the search results in an array.
         
     | 
| 
      
 16 
     | 
    
         
            +
                # To dig deeper, use css selectors to find the elements you need.
         
     | 
| 
      
 17 
     | 
    
         
            +
                #
         
     | 
| 
      
 18 
     | 
    
         
            +
                #   <doc><str name="title">Woezel en Pip</str></doc>
         
     | 
| 
      
 19 
     | 
    
         
            +
                #
         
     | 
| 
      
 20 
     | 
    
         
            +
                # the contents of the title tag can be fetched like this:
         
     | 
| 
      
 21 
     | 
    
         
            +
                #
         
     | 
| 
      
 22 
     | 
    
         
            +
                #   results = Document.simple_search_docs('apple')
         
     | 
| 
      
 23 
     | 
    
         
            +
                #   results.first.at_css('str[name=title]').contents   # => Woezel en Pip
         
     | 
| 
      
 24 
     | 
    
         
            +
                #
         
     | 
| 
      
 25 
     | 
    
         
            +
                # I told you it was close to the metal! Refer to the Nokogiro docs for more information.
         
     | 
| 
      
 26 
     | 
    
         
            +
                def simple_search_docs(query, params={})
         
     | 
| 
      
 27 
     | 
    
         
            +
                  simple_search(query, params).css('doc')
         
     | 
| 
       17 
28 
     | 
    
         
             
                end
         
     | 
| 
       18 
29 
     | 
    
         
             
              end
         
     | 
| 
       19 
30 
     | 
    
         
             
            end
         
     | 
    
        data/lib/simple_solr/update.rb
    CHANGED
    
    
    
        data/lib/simple_solr/version.rb
    CHANGED
    
    
    
        data/simple_solr.gemspec
    CHANGED
    
    | 
         @@ -17,8 +17,10 @@ Gem::Specification.new do |s| 
     | 
|
| 
       17 
17 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
              s.add_development_dependency "rspec", ">= 2"
         
     | 
| 
      
 20 
     | 
    
         
            +
              s.add_development_dependency "fakeweb"
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
              s.add_runtime_dependency "activerecord"
         
     | 
| 
      
 23 
     | 
    
         
            +
              s.add_runtime_dependency "nokogiri"
         
     | 
| 
       22 
24 
     | 
    
         
             
              s.add_runtime_dependency "httparty"
         
     | 
| 
       23 
25 
     | 
    
         
             
              s.add_runtime_dependency "builder"
         
     | 
| 
       24 
26 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <?xml version="1.0" encoding="UTF-8"?>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <response>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <lst name="responseHeader">
         
     | 
| 
      
 4 
     | 
    
         
            +
                <int name="status">0</int>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <int name="QTime">3</int>
         
     | 
| 
      
 6 
     | 
    
         
            +
              </lst>
         
     | 
| 
      
 7 
     | 
    
         
            +
              <result name="response" numFound="1" start="0" maxScore="13.722203">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <doc>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <float name="score">13.722203</float>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <date name="date_creation">2011-01-06T23:02:33Z</date>
         
     | 
| 
      
 11 
     | 
    
         
            +
                  <str name="id">969</str>
         
     | 
| 
      
 12 
     | 
    
         
            +
                  <str name="publisher">Widgets, Inc</str>
         
     | 
| 
      
 13 
     | 
    
         
            +
                  <str name="title">Golden Delicious</str>
         
     | 
| 
      
 14 
     | 
    
         
            +
                  <str name="category">Apples</str>
         
     | 
| 
      
 15 
     | 
    
         
            +
                </doc>
         
     | 
| 
      
 16 
     | 
    
         
            +
              </result>
         
     | 
| 
      
 17 
     | 
    
         
            +
              <lst name="highlighting">
         
     | 
| 
      
 18 
     | 
    
         
            +
                <lst name="969"/>
         
     | 
| 
      
 19 
     | 
    
         
            +
              </lst>
         
     | 
| 
      
 20 
     | 
    
         
            +
            </response>
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <?xml version="1.0" encoding="UTF-8"?>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <response>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <lst name="responseHeader">
         
     | 
| 
      
 4 
     | 
    
         
            +
                <int name="status">0</int>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <int name="QTime">3</int>
         
     | 
| 
      
 6 
     | 
    
         
            +
              </lst>
         
     | 
| 
      
 7 
     | 
    
         
            +
              <result name="response" numFound="1" start="0" maxScore="3.2594316">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <doc>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <float name="score">3.2594316</float>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <str name="brand_site">www.zappelin.nl</str>
         
     | 
| 
      
 11 
     | 
    
         
            +
                  <str name="brand_title">Z@ppelin</str>
         
     | 
| 
      
 12 
     | 
    
         
            +
                  <arr name="contenttype">
         
     | 
| 
      
 13 
     | 
    
         
            +
                    <str>text</str>
         
     | 
| 
      
 14 
     | 
    
         
            +
                  </arr>
         
     | 
| 
      
 15 
     | 
    
         
            +
                  <date name="date_creation">2010-12-26T23:02:48Z</date>
         
     | 
| 
      
 16 
     | 
    
         
            +
                  <date name="date_offline">2021-08-23T10:44:46Z</date>
         
     | 
| 
      
 17 
     | 
    
         
            +
                  <date name="date_online">2010-12-26T23:02:00Z</date>
         
     | 
| 
      
 18 
     | 
    
         
            +
                  <date name="date_updated">2011-01-26T16:21:56Z</date>
         
     | 
| 
      
 19 
     | 
    
         
            +
                  <str name="deeplink">http://www.zappelin.nl/series/962-woezel-en-pip</str>
         
     | 
| 
      
 20 
     | 
    
         
            +
                  <str name="id">http://www.zappelin.nl/series/962-woezel-en-pip</str>
         
     | 
| 
      
 21 
     | 
    
         
            +
                  <arr name="keywords">
         
     | 
| 
      
 22 
     | 
    
         
            +
                    <str/>
         
     | 
| 
      
 23 
     | 
    
         
            +
                  </arr>
         
     | 
| 
      
 24 
     | 
    
         
            +
                  <str name="publisher">NPO</str>
         
     | 
| 
      
 25 
     | 
    
         
            +
                  <str name="shared">true</str>
         
     | 
| 
      
 26 
     | 
    
         
            +
                  <str name="summary"><p>Woezel en Pip zijn de nieuwsgierige hondjes die bedacht zijn door Guusje Nederhorst.</p></str>
         
     | 
| 
      
 27 
     | 
    
         
            +
                  <arr name="thumbnails">
         
     | 
| 
      
 28 
     | 
    
         
            +
                    <str>/attachments/contents/000/002/743/uploads/thumbnail/woezel_pip.jpg</str>
         
     | 
| 
      
 29 
     | 
    
         
            +
                  </arr>
         
     | 
| 
      
 30 
     | 
    
         
            +
                  <str name="title">Woezel en Pip</str>
         
     | 
| 
      
 31 
     | 
    
         
            +
                </doc>
         
     | 
| 
      
 32 
     | 
    
         
            +
              </result>
         
     | 
| 
      
 33 
     | 
    
         
            +
              <lst name="highlighting">
         
     | 
| 
      
 34 
     | 
    
         
            +
                <lst name="http://www.zappelin.nl/series/962-woezel-en-pip">
         
     | 
| 
      
 35 
     | 
    
         
            +
                  <arr name="title">
         
     | 
| 
      
 36 
     | 
    
         
            +
                    <str><em>Woezel</em> en Pip </str>
         
     | 
| 
      
 37 
     | 
    
         
            +
                  </arr>
         
     | 
| 
      
 38 
     | 
    
         
            +
                  <arr name="deeplink">
         
     | 
| 
      
 39 
     | 
    
         
            +
                    <str>s/962-<em>woezel</em>-en-pip </str>
         
     | 
| 
      
 40 
     | 
    
         
            +
                  </arr>
         
     | 
| 
      
 41 
     | 
    
         
            +
                  <arr name="summary">
         
     | 
| 
      
 42 
     | 
    
         
            +
                    <str><p><em>Woezel</em> en Pip zijn de nieuwsgierige hondjes die bedacht zijn door Guusje Nederhorst.</p> </str>
         
     | 
| 
      
 43 
     | 
    
         
            +
                  </arr>
         
     | 
| 
      
 44 
     | 
    
         
            +
                </lst>
         
     | 
| 
      
 45 
     | 
    
         
            +
              </lst>
         
     | 
| 
      
 46 
     | 
    
         
            +
            </response>
         
     | 
| 
         @@ -1,30 +1,32 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            fixture = File.dirname(__FILE__) + "/../fixtures/result.xml"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            FakeWeb.register_uri(:get,
         
     | 
| 
      
 6 
     | 
    
         
            +
              "http://test.local:8983/solr/select?q=bonanza",
         
     | 
| 
      
 7 
     | 
    
         
            +
              :body => File.read(fixture),
         
     | 
| 
      
 8 
     | 
    
         
            +
              :content_type => "application/xml"
         
     | 
| 
      
 9 
     | 
    
         
            +
            )
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       3 
11 
     | 
    
         
             
            describe SimpleSolr::Search do
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              let(:httparty) { stub("httparty", :parsed_response => {'response' => response})}
         
     | 
| 
       6 
     | 
    
         
            -
              
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       7 
13 
     | 
    
         
             
              describe SimpleDocument do
         
     | 
| 
       8 
     | 
    
         
            -
                before do
         
     | 
| 
       9 
     | 
    
         
            -
                  SimpleDocument.stub(:get).and_return(httparty)
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
14 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                it " 
     | 
| 
       13 
     | 
    
         
            -
                  SimpleDocument.should  
     | 
| 
      
 15 
     | 
    
         
            +
                it "returns a Nokogiri::XML::Document" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  SimpleDocument.simple_search('bonanza').should be_a(Nokogiri::XML::Document)
         
     | 
| 
       14 
17 
     | 
    
         
             
                end
         
     | 
| 
       15 
18 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                it " 
     | 
| 
       17 
     | 
    
         
            -
                  SimpleDocument. 
     | 
| 
       18 
     | 
    
         
            -
                  SimpleDocument.simple_search 'bonanza'
         
     | 
| 
      
 19 
     | 
    
         
            +
                it "returns one document" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  SimpleDocument.simple_search('bonanza').css('doc').length.should eq 1
         
     | 
| 
       19 
21 
     | 
    
         
             
                end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                it " 
     | 
| 
       22 
     | 
    
         
            -
                  SimpleDocument. 
     | 
| 
       23 
     | 
    
         
            -
                  SimpleDocument.simple_search 'bonanza', :fq => "brand_site:www.example.com"
         
     | 
| 
      
 22 
     | 
    
         
            +
                
         
     | 
| 
      
 23 
     | 
    
         
            +
                it "returns one simple search result" do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  SimpleDocument.simple_search_docs('bonanza').length.should eq 1
         
     | 
| 
       24 
25 
     | 
    
         
             
                end
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                it "returns  
     | 
| 
       27 
     | 
    
         
            -
                  SimpleDocument. 
     | 
| 
      
 27 
     | 
    
         
            +
                it "returns title" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  SimpleDocument.simple_search_docs('bonanza').first.at_css('str[name=title]').content.should eq "Woezel en Pip"
         
     | 
| 
       28 
29 
     | 
    
         
             
                end
         
     | 
| 
       29 
30 
     | 
    
         
             
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       30 
32 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,6 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe SimpleSolr::Update do
         
     | 
| 
      
 4 
     | 
    
         
            +
              before do
         
     | 
| 
      
 5 
     | 
    
         
            +
                SparseDocument.stub(:post) # prevent calls going out over the wire
         
     | 
| 
      
 6 
     | 
    
         
            +
              end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       4 
8 
     | 
    
         
             
              describe SparseDocument do
         
     | 
| 
       5 
9 
     | 
    
         
             
                it "stores just the id field" do
         
     | 
| 
       6 
10 
     | 
    
         
             
                  SparseDocument.simple_solr_fields.should eq({:id => nil})
         
     | 
| 
         @@ -8,6 +12,10 @@ describe SimpleSolr::Update do 
     | 
|
| 
       8 
12 
     | 
    
         
             
              end
         
     | 
| 
       9 
13 
     | 
    
         | 
| 
       10 
14 
     | 
    
         
             
              describe SimpleDocument do
         
     | 
| 
      
 15 
     | 
    
         
            +
                before do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  SimpleDocument.stub(:post) # prevent calls going out over the wire
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       11 
19 
     | 
    
         
             
                it "provides simple_solr class method" do
         
     | 
| 
       12 
20 
     | 
    
         
             
                  SimpleDocument.should respond_to(:simple_solr)
         
     | 
| 
       13 
21 
     | 
    
         
             
                end
         
     | 
| 
         @@ -17,20 +25,24 @@ describe SimpleSolr::Update do 
     | 
|
| 
       17 
25 
     | 
    
         
             
                end
         
     | 
| 
       18 
26 
     | 
    
         | 
| 
       19 
27 
     | 
    
         
             
                context "save" do
         
     | 
| 
       20 
     | 
    
         
            -
                   
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 28 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 29 
     | 
    
         
            +
                    @document = SimpleDocument.create! :title => 'Omg Ponies'
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                  
         
     | 
| 
       22 
32 
     | 
    
         
             
                  it "posts to solr" do
         
     | 
| 
       23 
     | 
    
         
            -
                    SimpleDocument.should_receive(:post).with("http://test.local:8983/solr/update?commit=true", :body => "<add><doc><field name=\"id\">#{document.id}</field><field name=\"title\">Omg Ponies</field></doc></add>")
         
     | 
| 
      
 33 
     | 
    
         
            +
                    SimpleDocument.should_receive(:post).with("http://test.local:8983/solr/update?commit=true", :body => "<add><doc><field name=\"id\">#{@document.id}</field><field name=\"title\">Omg Ponies</field></doc></add>")
         
     | 
| 
      
 34 
     | 
    
         
            +
                    @document.save
         
     | 
| 
       24 
35 
     | 
    
         
             
                  end
         
     | 
| 
       25 
36 
     | 
    
         
             
                end
         
     | 
| 
       26 
37 
     | 
    
         | 
| 
       27 
38 
     | 
    
         
             
                context "destroy" do
         
     | 
| 
       28 
     | 
    
         
            -
                   
     | 
| 
      
 39 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 40 
     | 
    
         
            +
                    @document = SimpleDocument.create! :title => 'Omg Ponies'
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
       29 
42 
     | 
    
         | 
| 
       30 
43 
     | 
    
         
             
                  it "posts to solr" do
         
     | 
| 
       31 
     | 
    
         
            -
                    SimpleDocument.should_receive(:post).with("http://test.local:8983/solr/update?commit=true", :body => "< 
     | 
| 
       32 
     | 
    
         
            -
                     
     | 
| 
       33 
     | 
    
         
            -
                    document.destroy
         
     | 
| 
      
 44 
     | 
    
         
            +
                    SimpleDocument.should_receive(:post).with("http://test.local:8983/solr/update?commit=true", :body => "<delete><id>#{@document.id}</id></delete>")
         
     | 
| 
      
 45 
     | 
    
         
            +
                    @document.destroy
         
     | 
| 
       34 
46 
     | 
    
         
             
                  end
         
     | 
| 
       35 
47 
     | 
    
         
             
                end
         
     | 
| 
       36 
48 
     | 
    
         | 
| 
         @@ -48,10 +60,14 @@ describe SimpleSolr::Update do 
     | 
|
| 
       48 
60 
     | 
    
         
             
              end
         
     | 
| 
       49 
61 
     | 
    
         | 
| 
       50 
62 
     | 
    
         
             
              describe FullDocument do
         
     | 
| 
       51 
     | 
    
         
            -
                 
     | 
| 
      
 63 
     | 
    
         
            +
                before do
         
     | 
| 
      
 64 
     | 
    
         
            +
                  FullDocument.stub(:post) # prevent calls going out over the wire
         
     | 
| 
      
 65 
     | 
    
         
            +
                  @document = FullDocument.create! :title => "Rainbows", :created_at => '2011-08-18 13:32:00'.to_time
         
     | 
| 
      
 66 
     | 
    
         
            +
                end
         
     | 
| 
       52 
67 
     | 
    
         | 
| 
       53 
68 
     | 
    
         
             
                it "posts to solr after save" do
         
     | 
| 
       54 
     | 
    
         
            -
                  FullDocument.should_receive(:post).with("http://test.local:8983/solr?commit=true", :body => "<add><doc><field name=\"id\">full-document-#{document.id}</field><field name=\"title\">Rainbows</field><field name=\"date_creation\">#{document.created_at}</field><field name=\"shared\">false</field><field name=\"body\"></field></doc></add>")
         
     | 
| 
      
 69 
     | 
    
         
            +
                  FullDocument.should_receive(:post).with("http://test.local:8983/solr/update?commit=true", :body => "<add><doc><field name=\"id\">full-document-#{@document.id}</field><field name=\"title\">Rainbows</field><field name=\"date_creation\">#{@document.created_at}</field><field name=\"shared\">false</field><field name=\"body\"></field></doc></add>")
         
     | 
| 
      
 70 
     | 
    
         
            +
                  @document.save
         
     | 
| 
       55 
71 
     | 
    
         
             
                end
         
     | 
| 
       56 
72 
     | 
    
         
             
              end
         
     | 
| 
       57 
73 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: simple_solr
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.7.0
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,11 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2011- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2011-09-29 00:00:00.000000000Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: rspec
         
     | 
| 
       16 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &2156008520 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -21,10 +21,32 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: '2'
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :development
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *2156008520
         
     | 
| 
      
 25 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 26 
     | 
    
         
            +
              name: fakeweb
         
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &2156007520 !ruby/object:Gem::Requirement
         
     | 
| 
      
 28 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 29 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 30 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 31 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 33 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 34 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *2156007520
         
     | 
| 
       25 
36 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
37 
     | 
    
         
             
              name: activerecord
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &2156006480 !ruby/object:Gem::Requirement
         
     | 
| 
      
 39 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 40 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 41 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 42 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 43 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 44 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 45 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 46 
     | 
    
         
            +
              version_requirements: *2156006480
         
     | 
| 
      
 47 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 48 
     | 
    
         
            +
              name: nokogiri
         
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: &2156005900 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
50 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
52 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,10 +54,10 @@ dependencies: 
     | 
|
| 
       32 
54 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       33 
55 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       34 
56 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 57 
     | 
    
         
            +
              version_requirements: *2156005900
         
     | 
| 
       36 
58 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
59 
     | 
    
         
             
              name: httparty
         
     | 
| 
       38 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 60 
     | 
    
         
            +
              requirement: &2156004760 !ruby/object:Gem::Requirement
         
     | 
| 
       39 
61 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
62 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
63 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -43,10 +65,10 @@ dependencies: 
     | 
|
| 
       43 
65 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       44 
66 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       45 
67 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 68 
     | 
    
         
            +
              version_requirements: *2156004760
         
     | 
| 
       47 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
70 
     | 
    
         
             
              name: builder
         
     | 
| 
       49 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 71 
     | 
    
         
            +
              requirement: &2156003620 !ruby/object:Gem::Requirement
         
     | 
| 
       50 
72 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
73 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
74 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -54,7 +76,7 @@ dependencies: 
     | 
|
| 
       54 
76 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       55 
77 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       56 
78 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 79 
     | 
    
         
            +
              version_requirements: *2156003620
         
     | 
| 
       58 
80 
     | 
    
         
             
            description: Solr client for Ruby on Rails with as few features as possible.
         
     | 
| 
       59 
81 
     | 
    
         
             
            email:
         
     | 
| 
       60 
82 
     | 
    
         
             
            - joost@spacebabies.nl
         
     | 
| 
         @@ -80,12 +102,15 @@ files: 
     | 
|
| 
       80 
102 
     | 
    
         
             
            - spec/config/simple_solr.yml
         
     | 
| 
       81 
103 
     | 
    
         
             
            - spec/db/models.rb
         
     | 
| 
       82 
104 
     | 
    
         
             
            - spec/db/schema.rb
         
     | 
| 
      
 105 
     | 
    
         
            +
            - spec/fixtures/apple.xml
         
     | 
| 
      
 106 
     | 
    
         
            +
            - spec/fixtures/result.xml
         
     | 
| 
       83 
107 
     | 
    
         
             
            - spec/simple_solr/configuration_spec.rb
         
     | 
| 
       84 
108 
     | 
    
         
             
            - spec/simple_solr/search_spec.rb
         
     | 
| 
       85 
109 
     | 
    
         
             
            - spec/simple_solr/update_spec.rb
         
     | 
| 
       86 
110 
     | 
    
         
             
            - spec/simple_solr_spec.rb
         
     | 
| 
       87 
111 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       88 
112 
     | 
    
         
             
            - spec/support/database.rb
         
     | 
| 
      
 113 
     | 
    
         
            +
            - spec/support/fakeweb.rb
         
     | 
| 
       89 
114 
     | 
    
         
             
            - spec/support/rails.rb
         
     | 
| 
       90 
115 
     | 
    
         
             
            homepage: https://github.com/tilsammans/simple_solr
         
     | 
| 
       91 
116 
     | 
    
         
             
            licenses: []
         
     | 
| 
         @@ -116,10 +141,13 @@ test_files: 
     | 
|
| 
       116 
141 
     | 
    
         
             
            - spec/config/simple_solr.yml
         
     | 
| 
       117 
142 
     | 
    
         
             
            - spec/db/models.rb
         
     | 
| 
       118 
143 
     | 
    
         
             
            - spec/db/schema.rb
         
     | 
| 
      
 144 
     | 
    
         
            +
            - spec/fixtures/apple.xml
         
     | 
| 
      
 145 
     | 
    
         
            +
            - spec/fixtures/result.xml
         
     | 
| 
       119 
146 
     | 
    
         
             
            - spec/simple_solr/configuration_spec.rb
         
     | 
| 
       120 
147 
     | 
    
         
             
            - spec/simple_solr/search_spec.rb
         
     | 
| 
       121 
148 
     | 
    
         
             
            - spec/simple_solr/update_spec.rb
         
     | 
| 
       122 
149 
     | 
    
         
             
            - spec/simple_solr_spec.rb
         
     | 
| 
       123 
150 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       124 
151 
     | 
    
         
             
            - spec/support/database.rb
         
     | 
| 
      
 152 
     | 
    
         
            +
            - spec/support/fakeweb.rb
         
     | 
| 
       125 
153 
     | 
    
         
             
            - spec/support/rails.rb
         
     |