elasticsearch-persistence 5.1.0 → 6.0.0.pre
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.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/Gemfile +9 -0
- data/README.md +164 -323
- data/Rakefile +8 -8
- data/elasticsearch-persistence.gemspec +4 -5
- data/lib/elasticsearch/persistence.rb +2 -110
- data/lib/elasticsearch/persistence/repository.rb +212 -53
- data/lib/elasticsearch/persistence/repository/dsl.rb +94 -0
- data/lib/elasticsearch/persistence/repository/find.rb +27 -10
- data/lib/elasticsearch/persistence/repository/response/results.rb +17 -5
- data/lib/elasticsearch/persistence/repository/search.rb +15 -4
- data/lib/elasticsearch/persistence/repository/serialize.rb +65 -7
- data/lib/elasticsearch/persistence/repository/store.rb +38 -44
- data/lib/elasticsearch/persistence/version.rb +1 -1
- data/spec/repository/find_spec.rb +179 -0
- data/spec/repository/response/results_spec.rb +105 -0
- data/spec/repository/search_spec.rb +181 -0
- data/spec/repository/serialize_spec.rb +53 -0
- data/spec/repository/store_spec.rb +327 -0
- data/spec/repository_spec.rb +716 -0
- data/spec/spec_helper.rb +28 -0
- metadata +25 -80
- data/lib/elasticsearch/persistence/client.rb +0 -51
- data/lib/elasticsearch/persistence/model.rb +0 -153
- data/lib/elasticsearch/persistence/model/base.rb +0 -87
- data/lib/elasticsearch/persistence/model/errors.rb +0 -8
- data/lib/elasticsearch/persistence/model/find.rb +0 -180
- data/lib/elasticsearch/persistence/model/rails.rb +0 -47
- data/lib/elasticsearch/persistence/model/store.rb +0 -254
- data/lib/elasticsearch/persistence/model/utils.rb +0 -0
- data/lib/elasticsearch/persistence/repository/class.rb +0 -71
- data/lib/elasticsearch/persistence/repository/naming.rb +0 -115
- data/lib/rails/generators/elasticsearch/model/model_generator.rb +0 -21
- data/lib/rails/generators/elasticsearch/model/templates/model.rb.tt +0 -9
- data/lib/rails/generators/elasticsearch_generator.rb +0 -2
- data/test/integration/model/model_basic_test.rb +0 -238
- data/test/integration/repository/custom_class_test.rb +0 -85
- data/test/integration/repository/customized_class_test.rb +0 -82
- data/test/integration/repository/default_class_test.rb +0 -116
- data/test/integration/repository/virtus_model_test.rb +0 -118
- data/test/test_helper.rb +0 -55
- data/test/unit/model_base_test.rb +0 -72
- data/test/unit/model_find_test.rb +0 -153
- data/test/unit/model_gateway_test.rb +0 -101
- data/test/unit/model_rails_test.rb +0 -112
- data/test/unit/model_store_test.rb +0 -576
- data/test/unit/persistence_test.rb +0 -32
- data/test/unit/repository_class_test.rb +0 -51
- data/test/unit/repository_client_test.rb +0 -32
- data/test/unit/repository_find_test.rb +0 -388
- data/test/unit/repository_indexing_test.rb +0 -37
- data/test/unit/repository_module_test.rb +0 -146
- data/test/unit/repository_naming_test.rb +0 -146
- data/test/unit/repository_response_results_test.rb +0 -98
- data/test/unit/repository_search_test.rb +0 -117
- data/test/unit/repository_serialize_test.rb +0 -57
- data/test/unit/repository_store_test.rb +0 -303
| @@ -1,85 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Elasticsearch
         | 
| 4 | 
            -
              module Persistence
         | 
| 5 | 
            -
                class RepositoryCustomClassIntegrationTest < Elasticsearch::Test::IntegrationTestCase
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                  class ::MyNote
         | 
| 8 | 
            -
                    attr_reader :attributes
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                    def initialize(attributes={})
         | 
| 11 | 
            -
                      @attributes = Hashie::Mash.new(attributes)
         | 
| 12 | 
            -
                    end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    def method_missing(method_name, *arguments, &block)
         | 
| 15 | 
            -
                      attributes.respond_to?(method_name) ? attributes.__send__(method_name, *arguments, &block) : super
         | 
| 16 | 
            -
                    end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                    def respond_to?(method_name, include_private=false)
         | 
| 19 | 
            -
                      attributes.respond_to?(method_name) || super
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    def to_hash
         | 
| 23 | 
            -
                      @attributes
         | 
| 24 | 
            -
                    end
         | 
| 25 | 
            -
                  end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                  context "A custom repository class" do
         | 
| 28 | 
            -
                    setup do
         | 
| 29 | 
            -
                      class ::MyNotesRepository
         | 
| 30 | 
            -
                        include Elasticsearch::Persistence::Repository
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                        klass MyNote
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                        settings number_of_shards: 1 do
         | 
| 35 | 
            -
                          mapping do
         | 
| 36 | 
            -
                            indexes :title, analyzer: 'snowball'
         | 
| 37 | 
            -
                          end
         | 
| 38 | 
            -
                        end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                        create_index!
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                        def deserialize(document)
         | 
| 43 | 
            -
                          klass.new document.merge(document['_source'])
         | 
| 44 | 
            -
                        end
         | 
| 45 | 
            -
                      end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                      @repository = MyNotesRepository.new
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                      @repository.client.cluster.health wait_for_status: 'yellow'
         | 
| 50 | 
            -
                    end
         | 
| 51 | 
            -
             | 
| 52 | 
            -
                    should "save the object under a correct index and type" do
         | 
| 53 | 
            -
                      @repository.save MyNote.new(id: '1', title: 'Test')
         | 
| 54 | 
            -
                      result = @repository.find(1)
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                      assert_instance_of MyNote, result
         | 
| 57 | 
            -
                      assert_equal 'Test', result.title
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                      assert_not_nil Elasticsearch::Persistence.client.get index: 'my_notes_repository',
         | 
| 60 | 
            -
                                                                           type: 'my_note',
         | 
| 61 | 
            -
                                                                           id: '1'
         | 
| 62 | 
            -
                    end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
                    should "delete the object" do
         | 
| 65 | 
            -
                      note = MyNote.new id: 1, title: 'Test'
         | 
| 66 | 
            -
                      @repository.save note
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                      assert_not_nil @repository.find(1)
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                      @repository.delete(note)
         | 
| 71 | 
            -
                      assert_raise(Elasticsearch::Persistence::Repository::DocumentNotFound) { @repository.find(1) }
         | 
| 72 | 
            -
                    end
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                    should "retrieve the object via a search query" do
         | 
| 75 | 
            -
                      note = MyNote.new title: 'Testing'
         | 
| 76 | 
            -
                      @repository.save note, refresh: true
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                      results = @repository.search query: { match: { title: 'Test' } }
         | 
| 79 | 
            -
                      assert_equal 'Testing', results.first.title
         | 
| 80 | 
            -
                    end
         | 
| 81 | 
            -
                  end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                end
         | 
| 84 | 
            -
              end
         | 
| 85 | 
            -
            end
         | 
| @@ -1,82 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Elasticsearch
         | 
| 4 | 
            -
              module Persistence
         | 
| 5 | 
            -
                class RepositoryCustomizedClassIntegrationTest < Elasticsearch::Test::IntegrationTestCase
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                  module ::My
         | 
| 8 | 
            -
                    class Note
         | 
| 9 | 
            -
                      attr_reader :attributes
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                      def initialize(attributes={})
         | 
| 12 | 
            -
                        @attributes = attributes
         | 
| 13 | 
            -
                      end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                      def to_hash
         | 
| 16 | 
            -
                        @attributes
         | 
| 17 | 
            -
                      end
         | 
| 18 | 
            -
                    end
         | 
| 19 | 
            -
                  end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                  context "A custom repository class" do
         | 
| 22 | 
            -
                    setup do
         | 
| 23 | 
            -
                      @repository = Elasticsearch::Persistence::Repository.new do
         | 
| 24 | 
            -
                        index 'my_notes'
         | 
| 25 | 
            -
                        type  'my_note'
         | 
| 26 | 
            -
                        klass My::Note
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                        settings number_of_shards: 1 do
         | 
| 29 | 
            -
                          mapping do
         | 
| 30 | 
            -
                            indexes :title, analyzer: 'snowball'
         | 
| 31 | 
            -
                          end
         | 
| 32 | 
            -
                        end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                        create_index!
         | 
| 35 | 
            -
                      end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                      @repository.client.cluster.health wait_for_status: 'yellow'
         | 
| 38 | 
            -
                    end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                    should "save the object under a correct index and type" do
         | 
| 41 | 
            -
                      @repository.save My::Note.new(id: '1', title: 'Test')
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                      assert_instance_of My::Note, @repository.find(1)
         | 
| 44 | 
            -
                      assert_not_nil Elasticsearch::Persistence.client.get index: 'my_notes', type: 'my_note', id: '1'
         | 
| 45 | 
            -
                    end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                    should "update the document" do
         | 
| 48 | 
            -
                      @repository.save Note.new(id: 1, title: 'Test')
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                      @repository.update 1, doc: { title: 'UPDATED' }
         | 
| 51 | 
            -
                      assert_equal 'UPDATED', @repository.find(1).attributes['title']
         | 
| 52 | 
            -
                    end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                    should "update the document with a script" do
         | 
| 55 | 
            -
                      @repository.save Note.new(id: 1, title: 'Test')
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                      @repository.update 1, script: 'ctx._source.title = "UPDATED"'
         | 
| 58 | 
            -
                      assert_equal 'UPDATED', @repository.find(1).attributes['title']
         | 
| 59 | 
            -
                    end
         | 
| 60 | 
            -
             | 
| 61 | 
            -
                    should "delete the object" do
         | 
| 62 | 
            -
                      note = My::Note.new id: 1, title: 'Test'
         | 
| 63 | 
            -
                      @repository.save note
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                      assert_not_nil @repository.find(1)
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                      @repository.delete(note)
         | 
| 68 | 
            -
                      assert_raise(Elasticsearch::Persistence::Repository::DocumentNotFound) { @repository.find(1) }
         | 
| 69 | 
            -
                    end
         | 
| 70 | 
            -
             | 
| 71 | 
            -
                    should "create the index with correct mapping" do
         | 
| 72 | 
            -
                      note = My::Note.new title: 'Testing'
         | 
| 73 | 
            -
                      @repository.save note, refresh: true
         | 
| 74 | 
            -
             | 
| 75 | 
            -
                      results = @repository.search query: { match: { title: 'Test' } }
         | 
| 76 | 
            -
                      assert_equal 'Testing', results.first.attributes['title']
         | 
| 77 | 
            -
                    end
         | 
| 78 | 
            -
                  end
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                end
         | 
| 81 | 
            -
              end
         | 
| 82 | 
            -
            end
         | 
| @@ -1,116 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Elasticsearch
         | 
| 4 | 
            -
              module Persistence
         | 
| 5 | 
            -
                class RepositoryDefaultClassIntegrationTest < Elasticsearch::Test::IntegrationTestCase
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                  class ::Note
         | 
| 8 | 
            -
                    attr_reader :attributes
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                    def initialize(attributes={})
         | 
| 11 | 
            -
                      @attributes = attributes
         | 
| 12 | 
            -
                    end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    def to_hash
         | 
| 15 | 
            -
                      @attributes
         | 
| 16 | 
            -
                    end
         | 
| 17 | 
            -
                  end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  context "The default repository class" do
         | 
| 20 | 
            -
                    setup do
         | 
| 21 | 
            -
                      @repository = Elasticsearch::Persistence::Repository.new
         | 
| 22 | 
            -
                      @repository.client.cluster.health wait_for_status: 'yellow'
         | 
| 23 | 
            -
                    end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                    should "save the object with a custom ID and find it" do
         | 
| 26 | 
            -
                      @repository.save Note.new(id: '1', title: 'Test')
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                      assert_equal 'Test', @repository.find(1).attributes['title']
         | 
| 29 | 
            -
                    end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                    should "save the object with an auto-generated ID and find it" do
         | 
| 32 | 
            -
                      response = @repository.save Note.new(title: 'Test')
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                      assert_equal 'Test', @repository.find(response['_id']).attributes['title']
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                    should "update the document" do
         | 
| 38 | 
            -
                      @repository.save Note.new(id: 1, title: 'Test')
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                      @repository.update 1, type: 'note', doc: { title: 'UPDATED' }
         | 
| 41 | 
            -
                      assert_equal 'UPDATED', @repository.find(1).attributes['title']
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                    should "update the document with a script" do
         | 
| 45 | 
            -
                      @repository.save Note.new(id: 1, title: 'Test')
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                      @repository.update 1, type: 'note', script: 'ctx._source.title = "UPDATED"'
         | 
| 48 | 
            -
                      assert_equal 'UPDATED', @repository.find(1).attributes['title']
         | 
| 49 | 
            -
                    end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                    should "save the document with an upsert" do
         | 
| 52 | 
            -
                      @repository.update 1, type: 'note', script: 'ctx._source.clicks += 1', upsert: { clicks: 1 }
         | 
| 53 | 
            -
                      assert_equal 1, @repository.find(1).attributes['clicks']
         | 
| 54 | 
            -
                    end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                    should "delete an object" do
         | 
| 57 | 
            -
                      note = Note.new(id: '1', title: 'Test')
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                      @repository.save(note)
         | 
| 60 | 
            -
                      assert_not_nil @repository.find(1)
         | 
| 61 | 
            -
                      @repository.delete(note)
         | 
| 62 | 
            -
                      assert_raise(Elasticsearch::Persistence::Repository::DocumentNotFound) { @repository.find(1) }
         | 
| 63 | 
            -
                    end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                    should "find multiple objects" do
         | 
| 66 | 
            -
                      (1..5).each { |i| @repository.save Note.new(id: i, title: "Test #{i}") }
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                      assert_equal 5, @repository.find(1, 2, 3, 4, 5).size
         | 
| 69 | 
            -
                      assert_equal 5, @repository.find([1, 2, 3, 4, 5]).size
         | 
| 70 | 
            -
                    end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                    should "pass options to save and find" do
         | 
| 73 | 
            -
                      note = Note.new(id: '1', title: 'Test')
         | 
| 74 | 
            -
                      @repository.save note, routing: 'ABC'
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                      @repository.client.cluster.health level: 'indices', wait_for_status: 'yellow'
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                      assert_raise Elasticsearch::Persistence::Repository::DocumentNotFound do
         | 
| 79 | 
            -
                        @repository.find(1, routing: 'DEF')
         | 
| 80 | 
            -
                      end
         | 
| 81 | 
            -
             | 
| 82 | 
            -
                      assert_nothing_raised do
         | 
| 83 | 
            -
                        note = @repository.find(1, routing: 'ABC')
         | 
| 84 | 
            -
                        assert_instance_of Note, note
         | 
| 85 | 
            -
                      end
         | 
| 86 | 
            -
                    end
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                    should "find notes with full text search" do
         | 
| 89 | 
            -
                      @repository.save Note.new(title: 'Test')
         | 
| 90 | 
            -
                      @repository.save Note.new(title: 'Test Test')
         | 
| 91 | 
            -
                      @repository.save Note.new(title: 'Crust')
         | 
| 92 | 
            -
                      @repository.client.indices.refresh index: @repository.index_name
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                      results = @repository.search 'test'
         | 
| 95 | 
            -
                      assert_equal 2, results.size
         | 
| 96 | 
            -
             | 
| 97 | 
            -
                      results = @repository.search query: { match: { title: 'Test' } }
         | 
| 98 | 
            -
                      assert_equal 2, results.size
         | 
| 99 | 
            -
                    end
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                    should "count notes" do
         | 
| 102 | 
            -
                      @repository.save Note.new(title: 'Test')
         | 
| 103 | 
            -
                      @repository.client.indices.refresh index: @repository.index_name
         | 
| 104 | 
            -
                      assert_equal 1, @repository.count
         | 
| 105 | 
            -
                    end
         | 
| 106 | 
            -
             | 
| 107 | 
            -
                    should "save and find a plain hash" do
         | 
| 108 | 
            -
                      @repository.save id: 1, title: 'Hash'
         | 
| 109 | 
            -
                      result = @repository.find(1)
         | 
| 110 | 
            -
                      assert_equal 'Hash', result['_source']['title']
         | 
| 111 | 
            -
                    end
         | 
| 112 | 
            -
                  end
         | 
| 113 | 
            -
             | 
| 114 | 
            -
                end
         | 
| 115 | 
            -
              end
         | 
| 116 | 
            -
            end
         | 
| @@ -1,118 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'virtus'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module Elasticsearch
         | 
| 6 | 
            -
              module Persistence
         | 
| 7 | 
            -
                class RepositoryWithVirtusIntegrationTest < Elasticsearch::Test::IntegrationTestCase
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  class ::Page
         | 
| 10 | 
            -
                    include Virtus.model
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                    attribute :id,        String, writer: :private
         | 
| 13 | 
            -
                    attribute :title,     String
         | 
| 14 | 
            -
                    attribute :views,     Integer, default: 0
         | 
| 15 | 
            -
                    attribute :published, Boolean, default: false
         | 
| 16 | 
            -
                    attribute :slug,      String,  default: lambda { |page, attr| page.title.downcase.gsub(' ', '-') }
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                    def set_id(id)
         | 
| 19 | 
            -
                      self.id = id
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  context "The repository with a Virtus model" do
         | 
| 24 | 
            -
                    setup do
         | 
| 25 | 
            -
                      @repository = Elasticsearch::Persistence::Repository.new do
         | 
| 26 | 
            -
                        index :pages
         | 
| 27 | 
            -
                        klass Page
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                        def deserialize(document)
         | 
| 30 | 
            -
                          page = klass.new document['_source']
         | 
| 31 | 
            -
                          page.set_id document['_id']
         | 
| 32 | 
            -
                          page
         | 
| 33 | 
            -
                        end
         | 
| 34 | 
            -
                      end
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                    should "save and find the object" do
         | 
| 38 | 
            -
                      page = Page.new title: 'Test Page'
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                      response = @repository.save page
         | 
| 41 | 
            -
                      id = response['_id']
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                      result = @repository.find(id)
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                      assert_instance_of Page,  result
         | 
| 46 | 
            -
                      assert_equal 'Test Page', result.title
         | 
| 47 | 
            -
                      assert_equal 0,           result.views
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                      assert_not_nil Elasticsearch::Persistence.client.get index: 'pages',
         | 
| 50 | 
            -
                                                                           type: 'page',
         | 
| 51 | 
            -
                                                                           id: id
         | 
| 52 | 
            -
                    end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                    should "update the object with a partial document" do
         | 
| 55 | 
            -
                      response = @repository.save Page.new(title: 'Test')
         | 
| 56 | 
            -
                      id = response['_id']
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                      page = @repository.find(id)
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                      assert_equal 'Test', page.title
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                      @repository.update page.id, doc: { title: 'UPDATE' }
         | 
| 63 | 
            -
             | 
| 64 | 
            -
                      page = @repository.find(id)
         | 
| 65 | 
            -
                      assert_equal 'UPDATE', page.title
         | 
| 66 | 
            -
                    end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                    should "update the object with a Hash" do
         | 
| 69 | 
            -
                      response = @repository.save Page.new(title: 'Test')
         | 
| 70 | 
            -
                      id = response['_id']
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                      page = @repository.find(id)
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                      assert_equal 'Test', page.title
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                      @repository.update id: page.id, title: 'UPDATE'
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                      page = @repository.find(id)
         | 
| 79 | 
            -
                      assert_equal 'UPDATE', page.title
         | 
| 80 | 
            -
                    end
         | 
| 81 | 
            -
             | 
| 82 | 
            -
                    should "update the object with a script" do
         | 
| 83 | 
            -
                      response = @repository.save Page.new(title: 'Test Page')
         | 
| 84 | 
            -
                      id = response['_id']
         | 
| 85 | 
            -
             | 
| 86 | 
            -
                      page = @repository.find(id)
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                      assert_not_nil page.id
         | 
| 89 | 
            -
                      assert_equal 0, page.views
         | 
| 90 | 
            -
             | 
| 91 | 
            -
                      @repository.update page.id, script: 'ctx._source.views += 1'
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                      page = @repository.find(id)
         | 
| 94 | 
            -
                      assert_equal 1, page.views
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                      @repository.update id: page.id, script: 'ctx._source.views += 1'
         | 
| 97 | 
            -
             | 
| 98 | 
            -
                      page = @repository.find(id)
         | 
| 99 | 
            -
                      assert_equal 2, page.views
         | 
| 100 | 
            -
                    end
         | 
| 101 | 
            -
             | 
| 102 | 
            -
                    should "update the object with a script and params" do
         | 
| 103 | 
            -
                      response = @repository.save Page.new(title: 'Test Page')
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                      @repository.update id: response['_id'],
         | 
| 106 | 
            -
                                         script: {
         | 
| 107 | 
            -
                                          inline: 'ctx._source.views += params.count',
         | 
| 108 | 
            -
                                          params: { count: 3 }
         | 
| 109 | 
            -
                                         }
         | 
| 110 | 
            -
             | 
| 111 | 
            -
                      page = @repository.find(response['_id'])
         | 
| 112 | 
            -
                      assert_equal 3, page.views
         | 
| 113 | 
            -
                    end
         | 
| 114 | 
            -
                  end
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                end
         | 
| 117 | 
            -
              end
         | 
| 118 | 
            -
            end
         | 
    
        data/test/test_helper.rb
    DELETED
    
    | @@ -1,55 +0,0 @@ | |
| 1 | 
            -
            RUBY_1_8 = defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            exit(0) if RUBY_1_8
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            $LOAD_PATH.unshift File.expand_path('../../../elasticsearch-model/lib', __FILE__) if File.exists? File.expand_path('../../../elasticsearch-model/lib', __FILE__)
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            require 'simplecov' and SimpleCov.start { add_filter "/test|test_/" } if ENV["COVERAGE"]
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            # Register `at_exit` handler for integration tests shutdown.
         | 
| 10 | 
            -
            # MUST be called before requiring `test/unit`.
         | 
| 11 | 
            -
            at_exit { Elasticsearch::Test::IntegrationTestCase.__run_at_exit_hooks } if ENV['SERVER']
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            if defined?(RUBY_VERSION) && RUBY_VERSION > '2.2'
         | 
| 14 | 
            -
              require 'test-unit'
         | 
| 15 | 
            -
              require 'mocha/test_unit'
         | 
| 16 | 
            -
            else
         | 
| 17 | 
            -
              require 'minitest/autorun'
         | 
| 18 | 
            -
              require 'mocha/mini_test'
         | 
| 19 | 
            -
            end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
            require 'shoulda-context'
         | 
| 22 | 
            -
             | 
| 23 | 
            -
            require 'turn' unless ENV["TM_FILEPATH"] || ENV["NOTURN"] || defined?(RUBY_VERSION) && RUBY_VERSION > '2.2'
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            require 'ansi'
         | 
| 26 | 
            -
            require 'oj'
         | 
| 27 | 
            -
             | 
| 28 | 
            -
            require 'elasticsearch/extensions/test/cluster'
         | 
| 29 | 
            -
            require 'elasticsearch/extensions/test/startup_shutdown'
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            require 'elasticsearch/persistence'
         | 
| 32 | 
            -
             | 
| 33 | 
            -
            module Elasticsearch
         | 
| 34 | 
            -
              module Test
         | 
| 35 | 
            -
                class IntegrationTestCase < ::Test::Unit::TestCase
         | 
| 36 | 
            -
                  extend Elasticsearch::Extensions::Test::StartupShutdown
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                  startup  { Elasticsearch::Extensions::Test::Cluster.start(nodes: 1) if ENV['SERVER'] and not Elasticsearch::Extensions::Test::Cluster.running? }
         | 
| 39 | 
            -
                  shutdown { Elasticsearch::Extensions::Test::Cluster.stop if ENV['SERVER'] && started? }
         | 
| 40 | 
            -
                  context "IntegrationTest" do; should "noop on Ruby 1.8" do; end; end if RUBY_1_8
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                  def setup
         | 
| 43 | 
            -
                    tracer = ::Logger.new(STDERR)
         | 
| 44 | 
            -
                    tracer.formatter = lambda { |s, d, p, m| "#{m.gsub(/^.*$/) { |n| '   ' + n }.ansi(:faint)}\n" }
         | 
| 45 | 
            -
                    Elasticsearch::Persistence.client = Elasticsearch::Client.new \
         | 
| 46 | 
            -
                                                          host: "localhost:#{(ENV['TEST_CLUSTER_PORT'] || 9250)}",
         | 
| 47 | 
            -
                                                          tracer: (ENV['QUIET'] ? nil : tracer)
         | 
| 48 | 
            -
                  end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                  def teardown
         | 
| 51 | 
            -
                    Elasticsearch::Persistence.client.indices.delete index: '_all'
         | 
| 52 | 
            -
                  end
         | 
| 53 | 
            -
                end
         | 
| 54 | 
            -
              end
         | 
| 55 | 
            -
            end
         |