elasticsearch-facetedsearch 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,128 @@
1
+ require 'spec_helper'
2
+
3
+ class DummySortable
4
+ include Elasticsearch::FacetedSearch::Sortable
5
+
6
+ def sorts
7
+ [
8
+ {
9
+ label: "Recent",
10
+ value: "updated",
11
+ search: [
12
+ { published_at: {order: :asc}},
13
+ "_score"
14
+ ],
15
+ default: true
16
+ },
17
+ {
18
+ label: "Relevant",
19
+ value: "relevant",
20
+ search: [ "_score" ],
21
+ default: false
22
+ }
23
+ ]
24
+ end
25
+
26
+ end
27
+
28
+ module Elasticsearch
29
+ module FacetedSearch
30
+ describe Sortable do
31
+ let(:model) { DummySortable.new }
32
+
33
+ describe "#sorts" do
34
+ it "is not an empty array" do
35
+ expect(model.sorts).not_to be_empty
36
+ end
37
+ end
38
+
39
+ describe "#current_sort_for_search" do
40
+ it "returns the search for default value" do
41
+ expect(model).to receive(:search_params).at_least(:once) { {sort: ''} }
42
+ expect(model.current_sort_for_search).to eq([{:published_at=>{:order=>:asc}}, "_score"])
43
+ end
44
+
45
+ it "returns the default sort when random string given" do
46
+ expect(model).to receive(:search_params).at_least(:once) { {sort: 'boom-chacka!'} }
47
+ expect(model.current_sort_for_search).to eq([{:published_at=>{:order=>:asc}}, "_score"])
48
+ end
49
+
50
+ it "returns the selected sort when valid" do
51
+ expect(model).to receive(:search_params).at_least(:once) { {sort: 'relevant'} }
52
+ expect(model.current_sort_for_search).to eq([ "_score" ])
53
+ end
54
+
55
+ it "returns nil if no #current_sort" do
56
+ expect(model).to receive(:current_sort) { false }
57
+ expect(model.current_sort_for_search).to be_nil
58
+ end
59
+ end
60
+
61
+ describe "#current_sort" do
62
+ it "fetches the default if nothing given" do
63
+ expect(model).to receive(:selected_sort_value).at_least(:once) { 'blah' }
64
+ expect(model.send(:current_sort)).to eq(model.send(:default_sort))
65
+ end
66
+
67
+ it "fetches the selected if valid" do
68
+ expect(model).to receive(:selected_sort_value).at_least(:once) { 'relevant' }
69
+ expect(model.send(:current_sort)).to eq(model.sorts.last)
70
+ end
71
+ end
72
+
73
+ describe "#selected_sort_value" do
74
+ it "is private" do
75
+ expect {
76
+ model.selected_sort_value
77
+ }.to raise_error(NoMethodError)
78
+ end
79
+ it "returns the sort from search params" do
80
+ expect(model).to receive(:search_params).at_least(:once) { {sort: 'hi'} }
81
+ expect(model.send(:selected_sort_value)).to eq('hi')
82
+ end
83
+ it "returns a default if no sort param" do
84
+ expect(model).to receive(:search_params).at_least(:once) { {sort: ''} }
85
+ expect(model.send(:selected_sort_value)).to eq('updated')
86
+ end
87
+ end
88
+
89
+ describe "#sort_param" do
90
+ it "is private" do
91
+ expect {
92
+ model.sort_param
93
+ }.to raise_error(NoMethodError)
94
+ end
95
+ it "returns the sort param" do
96
+ expect(model).to receive(:search_params) { {sort: 'hi'} }
97
+ expect(model.send(:sort_param)).to eq('hi')
98
+ end
99
+ it "returns nil if no param exists" do
100
+ expect(model).to receive(:search_params) { {} }
101
+ expect(model.send(:sort_param)).to be_nil
102
+ end
103
+ end
104
+
105
+ describe "#default_sort_value" do
106
+ it "is private" do
107
+ expect {
108
+ model.default_sort_value
109
+ }.to raise_error(NoMethodError)
110
+ end
111
+ it "matches the default config" do
112
+ expect(model.send(:default_sort_value)).to eq('updated')
113
+ end
114
+ end
115
+
116
+ describe "#default_sort" do
117
+ it "is private" do
118
+ expect {
119
+ model.default_sort
120
+ }.to raise_error(NoMethodError)
121
+ end
122
+ it "matches the default config" do
123
+ expect(model.send(:default_sort)).to eq(model.sorts.first)
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,15 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ if ENV['CODECLIMATE_REPO_TOKEN']
5
+ require "codeclimate-test-reporter"
6
+ CodeClimate::TestReporter.start
7
+ end
8
+
9
+ require 'elasticsearch/faceted_search'
10
+ ELASTICSEARCH_INDEX = 'test_dummy_index'
11
+
12
+
13
+ RSpec.configure do |config|
14
+ # some (optional) config here
15
+ end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elasticsearch-facetedsearch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - s.podlecki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: elasticsearch-rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: elasticsearch-model
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.2.8
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.8
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Add faceted searching with ElasticSearch to your Models
98
+ email:
99
+ - s.podlecki@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - CHANGELOG.md
105
+ - README.md
106
+ - Rakefile
107
+ - lib/elasticsearch/faceted_search.rb
108
+ - lib/elasticsearch/faceted_search/facet_base.rb
109
+ - lib/elasticsearch/faceted_search/facet_group.rb
110
+ - lib/elasticsearch/faceted_search/facet_item.rb
111
+ - lib/elasticsearch/faceted_search/pagination.rb
112
+ - lib/elasticsearch/faceted_search/sortable.rb
113
+ - lib/elasticsearch/faceted_search/version.rb
114
+ - spec/lib/elasticsearch/faceted_search/facet_base_spec.rb
115
+ - spec/lib/elasticsearch/faceted_search/facet_group_spec.rb
116
+ - spec/lib/elasticsearch/faceted_search/facet_item_spec.rb
117
+ - spec/lib/elasticsearch/faceted_search/pagination_spec.rb
118
+ - spec/lib/elasticsearch/faceted_search/sortable_spec.rb
119
+ - spec/spec_helper.rb
120
+ homepage: https://github.com/spodlecki/elasticsearch-facetedsearch
121
+ licenses:
122
+ - MIT
123
+ metadata: {}
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubyforge_project:
140
+ rubygems_version: 2.4.8
141
+ signing_key:
142
+ specification_version: 4
143
+ summary: Quickly apply a faceted search using ElasticSearch and Models.
144
+ test_files:
145
+ - spec/lib/elasticsearch/faceted_search/facet_base_spec.rb
146
+ - spec/lib/elasticsearch/faceted_search/facet_group_spec.rb
147
+ - spec/lib/elasticsearch/faceted_search/facet_item_spec.rb
148
+ - spec/lib/elasticsearch/faceted_search/pagination_spec.rb
149
+ - spec/lib/elasticsearch/faceted_search/sortable_spec.rb
150
+ - spec/spec_helper.rb