elasticsearch-model 5.1.0 → 6.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -3
  3. data/Gemfile +5 -0
  4. data/README.md +18 -11
  5. data/Rakefile +27 -36
  6. data/elasticsearch-model.gemspec +6 -6
  7. data/examples/activerecord_custom_analyzer.rb +135 -0
  8. data/examples/activerecord_mapping_completion.rb +3 -18
  9. data/examples/datamapper_article.rb +11 -1
  10. data/gemfiles/3.0.gemfile +6 -1
  11. data/gemfiles/4.0.gemfile +8 -1
  12. data/gemfiles/5.0.gemfile +7 -1
  13. data/gemfiles/6.0.gemfile +18 -0
  14. data/lib/elasticsearch/model/adapters/active_record.rb +8 -24
  15. data/lib/elasticsearch/model/adapters/mongoid.rb +10 -3
  16. data/lib/elasticsearch/model/importing.rb +1 -1
  17. data/lib/elasticsearch/model/indexing.rb +6 -4
  18. data/lib/elasticsearch/model/naming.rb +9 -2
  19. data/lib/elasticsearch/model/response/aggregations.rb +1 -1
  20. data/lib/elasticsearch/model/response/base.rb +3 -2
  21. data/lib/elasticsearch/model/response/pagination/kaminari.rb +109 -0
  22. data/lib/elasticsearch/model/response/pagination/will_paginate.rb +95 -0
  23. data/lib/elasticsearch/model/response/pagination.rb +2 -192
  24. data/lib/elasticsearch/model/response/result.rb +1 -1
  25. data/lib/elasticsearch/model/response/suggestions.rb +1 -1
  26. data/lib/elasticsearch/model/response.rb +11 -10
  27. data/lib/elasticsearch/model/version.rb +1 -1
  28. data/lib/elasticsearch/model.rb +15 -8
  29. data/spec/elasticsearch/model/adapter_spec.rb +119 -0
  30. data/spec/elasticsearch/model/adapters/active_record/associations_spec.rb +334 -0
  31. data/spec/elasticsearch/model/adapters/active_record/basic_spec.rb +340 -0
  32. data/spec/elasticsearch/model/adapters/active_record/dynamic_index_name_spec.rb +18 -0
  33. data/spec/elasticsearch/model/adapters/active_record/import_spec.rb +187 -0
  34. data/spec/elasticsearch/model/adapters/active_record/multi_model_spec.rb +110 -0
  35. data/spec/elasticsearch/model/adapters/active_record/namespaced_model_spec.rb +38 -0
  36. data/spec/elasticsearch/model/adapters/active_record/pagination_spec.rb +315 -0
  37. data/spec/elasticsearch/model/adapters/active_record/parent_child_spec.rb +75 -0
  38. data/spec/elasticsearch/model/adapters/active_record/serialization_spec.rb +61 -0
  39. data/spec/elasticsearch/model/adapters/active_record_spec.rb +207 -0
  40. data/spec/elasticsearch/model/adapters/default_spec.rb +41 -0
  41. data/spec/elasticsearch/model/adapters/mongoid/basic_spec.rb +267 -0
  42. data/spec/elasticsearch/model/adapters/mongoid/multi_model_spec.rb +66 -0
  43. data/spec/elasticsearch/model/adapters/mongoid_spec.rb +235 -0
  44. data/spec/elasticsearch/model/adapters/multiple_spec.rb +125 -0
  45. data/spec/elasticsearch/model/callbacks_spec.rb +33 -0
  46. data/spec/elasticsearch/model/client_spec.rb +66 -0
  47. data/spec/elasticsearch/model/hash_wrapper_spec.rb +12 -0
  48. data/spec/elasticsearch/model/importing_spec.rb +214 -0
  49. data/spec/elasticsearch/model/indexing_spec.rb +918 -0
  50. data/spec/elasticsearch/model/module_spec.rb +101 -0
  51. data/spec/elasticsearch/model/multimodel_spec.rb +55 -0
  52. data/spec/elasticsearch/model/naming_inheritance_spec.rb +184 -0
  53. data/spec/elasticsearch/model/naming_spec.rb +186 -0
  54. data/spec/elasticsearch/model/proxy_spec.rb +107 -0
  55. data/spec/elasticsearch/model/response/aggregations_spec.rb +66 -0
  56. data/spec/elasticsearch/model/response/base_spec.rb +90 -0
  57. data/spec/elasticsearch/model/response/pagination/kaminari_spec.rb +410 -0
  58. data/spec/elasticsearch/model/response/pagination/will_paginate_spec.rb +262 -0
  59. data/spec/elasticsearch/model/response/records_spec.rb +118 -0
  60. data/spec/elasticsearch/model/response/response_spec.rb +131 -0
  61. data/spec/elasticsearch/model/response/result_spec.rb +122 -0
  62. data/spec/elasticsearch/model/response/results_spec.rb +56 -0
  63. data/spec/elasticsearch/model/searching_search_request_spec.rb +112 -0
  64. data/spec/elasticsearch/model/searching_spec.rb +49 -0
  65. data/spec/elasticsearch/model/serializing_spec.rb +22 -0
  66. data/spec/spec_helper.rb +161 -0
  67. data/spec/support/app/answer.rb +33 -0
  68. data/spec/support/app/article.rb +22 -0
  69. data/spec/support/app/article_for_pagination.rb +12 -0
  70. data/spec/support/app/article_with_custom_serialization.rb +13 -0
  71. data/spec/support/app/article_with_dynamic_index_name.rb +15 -0
  72. data/spec/support/app/author.rb +9 -0
  73. data/spec/support/app/authorship.rb +4 -0
  74. data/spec/support/app/category.rb +3 -0
  75. data/spec/support/app/comment.rb +3 -0
  76. data/spec/support/app/episode.rb +11 -0
  77. data/spec/support/app/image.rb +19 -0
  78. data/spec/support/app/import_article.rb +12 -0
  79. data/spec/support/app/mongoid_article.rb +21 -0
  80. data/spec/support/app/namespaced_book.rb +10 -0
  81. data/spec/support/app/parent_and_child_searchable.rb +24 -0
  82. data/spec/support/app/post.rb +14 -0
  83. data/spec/support/app/question.rb +27 -0
  84. data/spec/support/app/searchable.rb +48 -0
  85. data/spec/support/app/series.rb +11 -0
  86. data/spec/support/app.rb +21 -0
  87. data/spec/support/model.json +1 -0
  88. data/{test → spec}/support/model.yml +0 -0
  89. metadata +134 -89
  90. data/test/integration/active_record_associations_parent_child_test.rb +0 -147
  91. data/test/integration/active_record_associations_test.rb +0 -339
  92. data/test/integration/active_record_basic_test.rb +0 -251
  93. data/test/integration/active_record_custom_serialization_test.rb +0 -67
  94. data/test/integration/active_record_import_test.rb +0 -115
  95. data/test/integration/active_record_namespaced_model_test.rb +0 -54
  96. data/test/integration/active_record_pagination_test.rb +0 -149
  97. data/test/integration/dynamic_index_name_test.rb +0 -52
  98. data/test/integration/mongoid_basic_test.rb +0 -176
  99. data/test/integration/multiple_models_test.rb +0 -176
  100. data/test/support/model.json +0 -1
  101. data/test/test_helper.rb +0 -92
  102. data/test/unit/adapter_active_record_test.rb +0 -157
  103. data/test/unit/adapter_default_test.rb +0 -41
  104. data/test/unit/adapter_mongoid_test.rb +0 -104
  105. data/test/unit/adapter_multiple_test.rb +0 -106
  106. data/test/unit/adapter_test.rb +0 -69
  107. data/test/unit/callbacks_test.rb +0 -31
  108. data/test/unit/client_test.rb +0 -27
  109. data/test/unit/hash_wrapper_test.rb +0 -13
  110. data/test/unit/importing_test.rb +0 -203
  111. data/test/unit/indexing_test.rb +0 -687
  112. data/test/unit/module_test.rb +0 -68
  113. data/test/unit/multimodel_test.rb +0 -38
  114. data/test/unit/naming_inheritance_test.rb +0 -94
  115. data/test/unit/naming_test.rb +0 -103
  116. data/test/unit/proxy_test.rb +0 -98
  117. data/test/unit/response_aggregations_test.rb +0 -46
  118. data/test/unit/response_base_test.rb +0 -40
  119. data/test/unit/response_pagination_kaminari_test.rb +0 -433
  120. data/test/unit/response_pagination_will_paginate_test.rb +0 -398
  121. data/test/unit/response_records_test.rb +0 -91
  122. data/test/unit/response_result_test.rb +0 -90
  123. data/test/unit/response_results_test.rb +0 -31
  124. data/test/unit/response_test.rb +0 -104
  125. data/test/unit/searching_search_request_test.rb +0 -78
  126. data/test/unit/searching_test.rb +0 -41
  127. data/test/unit/serializing_test.rb +0 -17
@@ -0,0 +1,21 @@
1
+ require 'active_record'
2
+
3
+ require 'support/app/question'
4
+ require 'support/app/answer'
5
+ require 'support/app/parent_and_child_searchable'
6
+ require 'support/app/article_with_custom_serialization'
7
+ require 'support/app/import_article'
8
+ require 'support/app/namespaced_book'
9
+ require 'support/app/article_for_pagination'
10
+ require 'support/app/article_with_dynamic_index_name'
11
+ require 'support/app/episode'
12
+ require 'support/app/image'
13
+ require 'support/app/series'
14
+ require 'support/app/mongoid_article'
15
+ require 'support/app/article'
16
+ require 'support/app/searchable'
17
+ require 'support/app/category'
18
+ require 'support/app/author'
19
+ require 'support/app/authorship'
20
+ require 'support/app/comment'
21
+ require 'support/app/post'
@@ -0,0 +1 @@
1
+ { "laz": "qux" }
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 6.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karel Minarik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-04 00:00:00.000000000 Z
11
+ date: 2020-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elasticsearch
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5'
19
+ version: '6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5'
26
+ version: '6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.3'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.3'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -336,6 +336,7 @@ files:
336
336
  - elasticsearch-model.gemspec
337
337
  - examples/activerecord_article.rb
338
338
  - examples/activerecord_associations.rb
339
+ - examples/activerecord_custom_analyzer.rb
339
340
  - examples/activerecord_mapping_completion.rb
340
341
  - examples/activerecord_mapping_edge_ngram.rb
341
342
  - examples/couchbase_article.rb
@@ -346,6 +347,7 @@ files:
346
347
  - gemfiles/3.0.gemfile
347
348
  - gemfiles/4.0.gemfile
348
349
  - gemfiles/5.0.gemfile
350
+ - gemfiles/6.0.gemfile
349
351
  - lib/elasticsearch/model.rb
350
352
  - lib/elasticsearch/model/adapter.rb
351
353
  - lib/elasticsearch/model/adapters/active_record.rb
@@ -365,6 +367,8 @@ files:
365
367
  - lib/elasticsearch/model/response/aggregations.rb
366
368
  - lib/elasticsearch/model/response/base.rb
367
369
  - lib/elasticsearch/model/response/pagination.rb
370
+ - lib/elasticsearch/model/response/pagination/kaminari.rb
371
+ - lib/elasticsearch/model/response/pagination/will_paginate.rb
368
372
  - lib/elasticsearch/model/response/records.rb
369
373
  - lib/elasticsearch/model/response/result.rb
370
374
  - lib/elasticsearch/model/response/results.rb
@@ -372,45 +376,66 @@ files:
372
376
  - lib/elasticsearch/model/searching.rb
373
377
  - lib/elasticsearch/model/serializing.rb
374
378
  - lib/elasticsearch/model/version.rb
375
- - test/integration/active_record_associations_parent_child_test.rb
376
- - test/integration/active_record_associations_test.rb
377
- - test/integration/active_record_basic_test.rb
378
- - test/integration/active_record_custom_serialization_test.rb
379
- - test/integration/active_record_import_test.rb
380
- - test/integration/active_record_namespaced_model_test.rb
381
- - test/integration/active_record_pagination_test.rb
382
- - test/integration/dynamic_index_name_test.rb
383
- - test/integration/mongoid_basic_test.rb
384
- - test/integration/multiple_models_test.rb
385
- - test/support/model.json
386
- - test/support/model.yml
387
- - test/test_helper.rb
388
- - test/unit/adapter_active_record_test.rb
389
- - test/unit/adapter_default_test.rb
390
- - test/unit/adapter_mongoid_test.rb
391
- - test/unit/adapter_multiple_test.rb
392
- - test/unit/adapter_test.rb
393
- - test/unit/callbacks_test.rb
394
- - test/unit/client_test.rb
395
- - test/unit/hash_wrapper_test.rb
396
- - test/unit/importing_test.rb
397
- - test/unit/indexing_test.rb
398
- - test/unit/module_test.rb
399
- - test/unit/multimodel_test.rb
400
- - test/unit/naming_inheritance_test.rb
401
- - test/unit/naming_test.rb
402
- - test/unit/proxy_test.rb
403
- - test/unit/response_aggregations_test.rb
404
- - test/unit/response_base_test.rb
405
- - test/unit/response_pagination_kaminari_test.rb
406
- - test/unit/response_pagination_will_paginate_test.rb
407
- - test/unit/response_records_test.rb
408
- - test/unit/response_result_test.rb
409
- - test/unit/response_results_test.rb
410
- - test/unit/response_test.rb
411
- - test/unit/searching_search_request_test.rb
412
- - test/unit/searching_test.rb
413
- - test/unit/serializing_test.rb
379
+ - spec/elasticsearch/model/adapter_spec.rb
380
+ - spec/elasticsearch/model/adapters/active_record/associations_spec.rb
381
+ - spec/elasticsearch/model/adapters/active_record/basic_spec.rb
382
+ - spec/elasticsearch/model/adapters/active_record/dynamic_index_name_spec.rb
383
+ - spec/elasticsearch/model/adapters/active_record/import_spec.rb
384
+ - spec/elasticsearch/model/adapters/active_record/multi_model_spec.rb
385
+ - spec/elasticsearch/model/adapters/active_record/namespaced_model_spec.rb
386
+ - spec/elasticsearch/model/adapters/active_record/pagination_spec.rb
387
+ - spec/elasticsearch/model/adapters/active_record/parent_child_spec.rb
388
+ - spec/elasticsearch/model/adapters/active_record/serialization_spec.rb
389
+ - spec/elasticsearch/model/adapters/active_record_spec.rb
390
+ - spec/elasticsearch/model/adapters/default_spec.rb
391
+ - spec/elasticsearch/model/adapters/mongoid/basic_spec.rb
392
+ - spec/elasticsearch/model/adapters/mongoid/multi_model_spec.rb
393
+ - spec/elasticsearch/model/adapters/mongoid_spec.rb
394
+ - spec/elasticsearch/model/adapters/multiple_spec.rb
395
+ - spec/elasticsearch/model/callbacks_spec.rb
396
+ - spec/elasticsearch/model/client_spec.rb
397
+ - spec/elasticsearch/model/hash_wrapper_spec.rb
398
+ - spec/elasticsearch/model/importing_spec.rb
399
+ - spec/elasticsearch/model/indexing_spec.rb
400
+ - spec/elasticsearch/model/module_spec.rb
401
+ - spec/elasticsearch/model/multimodel_spec.rb
402
+ - spec/elasticsearch/model/naming_inheritance_spec.rb
403
+ - spec/elasticsearch/model/naming_spec.rb
404
+ - spec/elasticsearch/model/proxy_spec.rb
405
+ - spec/elasticsearch/model/response/aggregations_spec.rb
406
+ - spec/elasticsearch/model/response/base_spec.rb
407
+ - spec/elasticsearch/model/response/pagination/kaminari_spec.rb
408
+ - spec/elasticsearch/model/response/pagination/will_paginate_spec.rb
409
+ - spec/elasticsearch/model/response/records_spec.rb
410
+ - spec/elasticsearch/model/response/response_spec.rb
411
+ - spec/elasticsearch/model/response/result_spec.rb
412
+ - spec/elasticsearch/model/response/results_spec.rb
413
+ - spec/elasticsearch/model/searching_search_request_spec.rb
414
+ - spec/elasticsearch/model/searching_spec.rb
415
+ - spec/elasticsearch/model/serializing_spec.rb
416
+ - spec/spec_helper.rb
417
+ - spec/support/app.rb
418
+ - spec/support/app/answer.rb
419
+ - spec/support/app/article.rb
420
+ - spec/support/app/article_for_pagination.rb
421
+ - spec/support/app/article_with_custom_serialization.rb
422
+ - spec/support/app/article_with_dynamic_index_name.rb
423
+ - spec/support/app/author.rb
424
+ - spec/support/app/authorship.rb
425
+ - spec/support/app/category.rb
426
+ - spec/support/app/comment.rb
427
+ - spec/support/app/episode.rb
428
+ - spec/support/app/image.rb
429
+ - spec/support/app/import_article.rb
430
+ - spec/support/app/mongoid_article.rb
431
+ - spec/support/app/namespaced_book.rb
432
+ - spec/support/app/parent_and_child_searchable.rb
433
+ - spec/support/app/post.rb
434
+ - spec/support/app/question.rb
435
+ - spec/support/app/searchable.rb
436
+ - spec/support/app/series.rb
437
+ - spec/support/model.json
438
+ - spec/support/model.yml
414
439
  homepage: https://github.com/elasticsearch/elasticsearch-rails/
415
440
  licenses:
416
441
  - Apache 2
@@ -424,55 +449,75 @@ required_ruby_version: !ruby/object:Gem::Requirement
424
449
  requirements:
425
450
  - - ">="
426
451
  - !ruby/object:Gem::Version
427
- version: 1.9.3
452
+ version: '2.2'
428
453
  required_rubygems_version: !ruby/object:Gem::Requirement
429
454
  requirements:
430
455
  - - ">="
431
456
  - !ruby/object:Gem::Version
432
457
  version: '0'
433
458
  requirements: []
434
- rubyforge_project:
435
- rubygems_version: 2.7.6
459
+ rubygems_version: 3.1.2
436
460
  signing_key:
437
461
  specification_version: 4
438
462
  summary: ActiveModel/Record integrations for Elasticsearch.
439
463
  test_files:
440
- - test/integration/active_record_associations_parent_child_test.rb
441
- - test/integration/active_record_associations_test.rb
442
- - test/integration/active_record_basic_test.rb
443
- - test/integration/active_record_custom_serialization_test.rb
444
- - test/integration/active_record_import_test.rb
445
- - test/integration/active_record_namespaced_model_test.rb
446
- - test/integration/active_record_pagination_test.rb
447
- - test/integration/dynamic_index_name_test.rb
448
- - test/integration/mongoid_basic_test.rb
449
- - test/integration/multiple_models_test.rb
450
- - test/support/model.json
451
- - test/support/model.yml
452
- - test/test_helper.rb
453
- - test/unit/adapter_active_record_test.rb
454
- - test/unit/adapter_default_test.rb
455
- - test/unit/adapter_mongoid_test.rb
456
- - test/unit/adapter_multiple_test.rb
457
- - test/unit/adapter_test.rb
458
- - test/unit/callbacks_test.rb
459
- - test/unit/client_test.rb
460
- - test/unit/hash_wrapper_test.rb
461
- - test/unit/importing_test.rb
462
- - test/unit/indexing_test.rb
463
- - test/unit/module_test.rb
464
- - test/unit/multimodel_test.rb
465
- - test/unit/naming_inheritance_test.rb
466
- - test/unit/naming_test.rb
467
- - test/unit/proxy_test.rb
468
- - test/unit/response_aggregations_test.rb
469
- - test/unit/response_base_test.rb
470
- - test/unit/response_pagination_kaminari_test.rb
471
- - test/unit/response_pagination_will_paginate_test.rb
472
- - test/unit/response_records_test.rb
473
- - test/unit/response_result_test.rb
474
- - test/unit/response_results_test.rb
475
- - test/unit/response_test.rb
476
- - test/unit/searching_search_request_test.rb
477
- - test/unit/searching_test.rb
478
- - test/unit/serializing_test.rb
464
+ - spec/elasticsearch/model/adapter_spec.rb
465
+ - spec/elasticsearch/model/adapters/active_record/associations_spec.rb
466
+ - spec/elasticsearch/model/adapters/active_record/basic_spec.rb
467
+ - spec/elasticsearch/model/adapters/active_record/dynamic_index_name_spec.rb
468
+ - spec/elasticsearch/model/adapters/active_record/import_spec.rb
469
+ - spec/elasticsearch/model/adapters/active_record/multi_model_spec.rb
470
+ - spec/elasticsearch/model/adapters/active_record/namespaced_model_spec.rb
471
+ - spec/elasticsearch/model/adapters/active_record/pagination_spec.rb
472
+ - spec/elasticsearch/model/adapters/active_record/parent_child_spec.rb
473
+ - spec/elasticsearch/model/adapters/active_record/serialization_spec.rb
474
+ - spec/elasticsearch/model/adapters/active_record_spec.rb
475
+ - spec/elasticsearch/model/adapters/default_spec.rb
476
+ - spec/elasticsearch/model/adapters/mongoid/basic_spec.rb
477
+ - spec/elasticsearch/model/adapters/mongoid/multi_model_spec.rb
478
+ - spec/elasticsearch/model/adapters/mongoid_spec.rb
479
+ - spec/elasticsearch/model/adapters/multiple_spec.rb
480
+ - spec/elasticsearch/model/callbacks_spec.rb
481
+ - spec/elasticsearch/model/client_spec.rb
482
+ - spec/elasticsearch/model/hash_wrapper_spec.rb
483
+ - spec/elasticsearch/model/importing_spec.rb
484
+ - spec/elasticsearch/model/indexing_spec.rb
485
+ - spec/elasticsearch/model/module_spec.rb
486
+ - spec/elasticsearch/model/multimodel_spec.rb
487
+ - spec/elasticsearch/model/naming_inheritance_spec.rb
488
+ - spec/elasticsearch/model/naming_spec.rb
489
+ - spec/elasticsearch/model/proxy_spec.rb
490
+ - spec/elasticsearch/model/response/aggregations_spec.rb
491
+ - spec/elasticsearch/model/response/base_spec.rb
492
+ - spec/elasticsearch/model/response/pagination/kaminari_spec.rb
493
+ - spec/elasticsearch/model/response/pagination/will_paginate_spec.rb
494
+ - spec/elasticsearch/model/response/records_spec.rb
495
+ - spec/elasticsearch/model/response/response_spec.rb
496
+ - spec/elasticsearch/model/response/result_spec.rb
497
+ - spec/elasticsearch/model/response/results_spec.rb
498
+ - spec/elasticsearch/model/searching_search_request_spec.rb
499
+ - spec/elasticsearch/model/searching_spec.rb
500
+ - spec/elasticsearch/model/serializing_spec.rb
501
+ - spec/spec_helper.rb
502
+ - spec/support/app.rb
503
+ - spec/support/app/answer.rb
504
+ - spec/support/app/article.rb
505
+ - spec/support/app/article_for_pagination.rb
506
+ - spec/support/app/article_with_custom_serialization.rb
507
+ - spec/support/app/article_with_dynamic_index_name.rb
508
+ - spec/support/app/author.rb
509
+ - spec/support/app/authorship.rb
510
+ - spec/support/app/category.rb
511
+ - spec/support/app/comment.rb
512
+ - spec/support/app/episode.rb
513
+ - spec/support/app/image.rb
514
+ - spec/support/app/import_article.rb
515
+ - spec/support/app/mongoid_article.rb
516
+ - spec/support/app/namespaced_book.rb
517
+ - spec/support/app/parent_and_child_searchable.rb
518
+ - spec/support/app/post.rb
519
+ - spec/support/app/question.rb
520
+ - spec/support/app/searchable.rb
521
+ - spec/support/app/series.rb
522
+ - spec/support/model.json
523
+ - spec/support/model.yml
@@ -1,147 +0,0 @@
1
- require 'test_helper'
2
- require 'active_record'
3
-
4
- # Needed for ActiveRecord 3.x ?
5
- ActiveRecord::Base.establish_connection( :adapter => 'sqlite3', :database => ":memory:" ) unless ActiveRecord::Base.connected?
6
-
7
- ::ActiveRecord::Base.raise_in_transactional_callbacks = true if ::ActiveRecord::Base.respond_to?(:raise_in_transactional_callbacks) && ::ActiveRecord::VERSION::MAJOR.to_s < '5'
8
-
9
- class Question < ActiveRecord::Base
10
- include Elasticsearch::Model
11
-
12
- has_many :answers, dependent: :destroy
13
-
14
- index_name 'questions_and_answers'
15
-
16
- mapping do
17
- indexes :title
18
- indexes :text
19
- indexes :author
20
- end
21
-
22
- after_commit lambda { __elasticsearch__.index_document }, on: :create
23
- after_commit lambda { __elasticsearch__.update_document }, on: :update
24
- after_commit lambda { __elasticsearch__.delete_document }, on: :destroy
25
- end
26
-
27
- class Answer < ActiveRecord::Base
28
- include Elasticsearch::Model
29
-
30
- belongs_to :question
31
-
32
- index_name 'questions_and_answers'
33
-
34
- mapping _parent: { type: 'question' }, _routing: { required: true } do
35
- indexes :text
36
- indexes :author
37
- end
38
-
39
- after_commit lambda { __elasticsearch__.index_document(parent: question_id) }, on: :create
40
- after_commit lambda { __elasticsearch__.update_document(parent: question_id) }, on: :update
41
- after_commit lambda { __elasticsearch__.delete_document(parent: question_id) }, on: :destroy
42
- end
43
-
44
- module ParentChildSearchable
45
- INDEX_NAME = 'questions_and_answers'
46
-
47
- def create_index!(options={})
48
- client = Question.__elasticsearch__.client
49
- client.indices.delete index: INDEX_NAME rescue nil if options[:force]
50
-
51
- settings = Question.settings.to_hash.merge Answer.settings.to_hash
52
- mappings = Question.mappings.to_hash.merge Answer.mappings.to_hash
53
-
54
- client.indices.create index: INDEX_NAME,
55
- body: {
56
- settings: settings.to_hash,
57
- mappings: mappings.to_hash }
58
- end
59
-
60
- extend self
61
- end
62
-
63
- module Elasticsearch
64
- module Model
65
- class ActiveRecordAssociationsParentChildIntegrationTest < Elasticsearch::Test::IntegrationTestCase
66
-
67
- context "ActiveRecord associations with parent/child modelling" do
68
- setup do
69
- ActiveRecord::Schema.define(version: 1) do
70
- create_table :questions do |t|
71
- t.string :title
72
- t.text :text
73
- t.string :author
74
- t.timestamps null: false
75
- end
76
-
77
- create_table :answers do |t|
78
- t.text :text
79
- t.string :author
80
- t.references :question
81
- t.timestamps null: false
82
- end
83
-
84
- add_index(:answers, :question_id) unless index_exists?(:answers, :question_id)
85
- end
86
-
87
- Question.delete_all
88
- ParentChildSearchable.create_index! force: true
89
-
90
- q_1 = Question.create! title: 'First Question', author: 'John'
91
- q_2 = Question.create! title: 'Second Question', author: 'Jody'
92
-
93
- q_1.answers.create! text: 'Lorem Ipsum', author: 'Adam'
94
- q_1.answers.create! text: 'Dolor Sit', author: 'Ryan'
95
-
96
- q_2.answers.create! text: 'Amet Et', author: 'John'
97
-
98
- Question.__elasticsearch__.refresh_index!
99
- end
100
-
101
- should "find questions by matching answers" do
102
- response = Question.search(
103
- { query: {
104
- has_child: {
105
- type: 'answer',
106
- query: {
107
- match: {
108
- author: 'john'
109
- }
110
- }
111
- }
112
- }
113
- })
114
-
115
- assert_equal 'Second Question', response.records.first.title
116
- end
117
-
118
- should "find answers for matching questions" do
119
- response = Answer.search(
120
- { query: {
121
- has_parent: {
122
- parent_type: 'question',
123
- query: {
124
- match: {
125
- author: 'john'
126
- }
127
- }
128
- }
129
- }
130
- })
131
-
132
- assert_same_elements ['Adam', 'Ryan'], response.records.map(&:author)
133
- end
134
-
135
- should "delete answers when the question is deleted" do
136
- Question.where(title: 'First Question').each(&:destroy)
137
- Question.__elasticsearch__.refresh_index!
138
-
139
- response = Answer.search query: { match_all: {} }
140
-
141
- assert_equal 1, response.results.total
142
- end
143
- end
144
-
145
- end
146
- end
147
- end