elasticsearch-facetedsearch 0.0.4

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.
@@ -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