gummi 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +6 -2
- data/Guardfile +31 -0
- data/lib/gummi/api.rb +1 -1
- data/lib/gummi/entity.rb +9 -1
- data/lib/gummi/repository/result.rb +7 -1
- data/lib/gummi/version.rb +1 -1
- data/lib/repobahn/entity.rb +1 -1
- data/lib/repobahn/repository.rb +1 -1
- data/spec/lib/gummi/document_spec.rb +12 -12
- data/spec/lib/gummi/entity_spec.rb +40 -0
- data/spec/lib/gummi/repository/result_spec.rb +18 -0
- data/spec/models/person.rb +10 -1
- metadata +9 -8
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.9.3-p484
|
data/Gemfile
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
# Specify your gem's dependencies in gummi.gemspec
|
4
3
|
gemspec
|
5
4
|
|
6
|
-
|
5
|
+
group :development, :test do
|
6
|
+
gem 'codeclimate-test-reporter', group: :test, require: nil
|
7
|
+
gem 'guard-bundler', '2.0.0'
|
8
|
+
gem 'guard-rspec', '4.0.4'
|
9
|
+
gem 'timecop', '0.7.0'
|
10
|
+
end
|
data/Guardfile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard :bundler do
|
5
|
+
watch('Gemfile')
|
6
|
+
# Uncomment next line if your Gemfile contains the `gemspec' command.
|
7
|
+
# watch(/^.+\.gemspec/)
|
8
|
+
end
|
9
|
+
|
10
|
+
guard :rspec, cmd: 'rspec --fail-fast' do
|
11
|
+
watch(%r{^spec/.+_spec\.rb$})
|
12
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
13
|
+
watch('spec/spec_helper.rb') { "spec" }
|
14
|
+
|
15
|
+
# Rails example
|
16
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
17
|
+
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
18
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
19
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
20
|
+
watch('config/routes.rb') { "spec/routing" }
|
21
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
22
|
+
|
23
|
+
# Capybara features specs
|
24
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
25
|
+
|
26
|
+
# Turnip features and steps
|
27
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
28
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
29
|
+
end
|
30
|
+
|
31
|
+
|
data/lib/gummi/api.rb
CHANGED
data/lib/gummi/entity.rb
CHANGED
@@ -2,7 +2,7 @@ module Gummi
|
|
2
2
|
module Repository
|
3
3
|
class Result
|
4
4
|
|
5
|
-
attr_reader :took, :total, :hits
|
5
|
+
attr_reader :took, :total, :hits
|
6
6
|
|
7
7
|
def initialize(db_result, repository, per_page, page)
|
8
8
|
@took = db_result.took
|
@@ -15,6 +15,12 @@ module Gummi
|
|
15
15
|
@page = page
|
16
16
|
end
|
17
17
|
|
18
|
+
def facets
|
19
|
+
@facets.each_with_object({}) do |(name, content), facets|
|
20
|
+
facets[name] = Hash[content["terms"].collect{|term| term.values}]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
18
24
|
def records
|
19
25
|
entities = Array(@repository.to_entity_from_db(@db_records)) if @db_records
|
20
26
|
Leaflet::Collection.new entities, page: @page, total: total, per_page: @per_page
|
data/lib/gummi/version.rb
CHANGED
data/lib/repobahn/entity.rb
CHANGED
data/lib/repobahn/repository.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class GummiDummyDocument
|
4
4
|
include Gummi::Document
|
5
5
|
|
6
6
|
attribute :test, String
|
@@ -9,14 +9,14 @@ end
|
|
9
9
|
describe Gummi::Document do
|
10
10
|
|
11
11
|
context "included" do
|
12
|
-
it "
|
13
|
-
m =
|
12
|
+
it "adds accessors for id and version" do
|
13
|
+
m = GummiDummyDocument.new
|
14
14
|
m.respond_to?(:version).should be_true
|
15
15
|
m.respond_to?(:id).should be_true
|
16
16
|
end
|
17
17
|
|
18
|
-
it "
|
19
|
-
m =
|
18
|
+
it "adds attributes methods" do
|
19
|
+
m = GummiDummyDocument.new(test: 'hello')
|
20
20
|
m.test.should == 'hello'
|
21
21
|
end
|
22
22
|
end
|
@@ -24,7 +24,7 @@ describe Gummi::Document do
|
|
24
24
|
context "attributes" do
|
25
25
|
|
26
26
|
context "date times" do
|
27
|
-
it "
|
27
|
+
it "coerces from elastics strings to real Time" do
|
28
28
|
time = Time.now
|
29
29
|
person = DB::Person.new(born_at: time)
|
30
30
|
person.overwrite
|
@@ -32,7 +32,7 @@ describe Gummi::Document do
|
|
32
32
|
person_from_es.born_at.should be_a Time
|
33
33
|
end
|
34
34
|
|
35
|
-
it "
|
35
|
+
it "always stores time in UTC" do
|
36
36
|
time = Time.now.in_time_zone 'CET'
|
37
37
|
|
38
38
|
person = DB::Person.new(born_at: time)
|
@@ -44,19 +44,19 @@ describe Gummi::Document do
|
|
44
44
|
|
45
45
|
let(:person) { DB::Person.new}
|
46
46
|
|
47
|
-
it "
|
47
|
+
it "adds them to the attributes hash" do
|
48
48
|
person.name = "olof palme"
|
49
49
|
person.attributes[:computed_name].should == 'OLOF PALME'
|
50
50
|
end
|
51
51
|
|
52
|
-
it "
|
52
|
+
it "computes every time" do
|
53
53
|
person.name = "olof palme"
|
54
54
|
person.computed_name.should == person.name.upcase
|
55
55
|
person.name = "carl bildt"
|
56
56
|
person.computed_name.should == person.name.upcase
|
57
57
|
end
|
58
58
|
|
59
|
-
it "
|
59
|
+
it "provides a mapping" do
|
60
60
|
DB::Person.mapping.should include(:computed_name => {:type=>"string"})
|
61
61
|
end
|
62
62
|
end
|
@@ -65,9 +65,9 @@ describe Gummi::Document do
|
|
65
65
|
context 'getting from elastic' do
|
66
66
|
let (:person) { DB::Person.create(name: 'Buzz Lightyear') }
|
67
67
|
|
68
|
-
it "
|
68
|
+
it "returns an instance of the db_model" do
|
69
69
|
person_from_es = DB::Person.get(person.id)
|
70
70
|
person_from_es.should be_a DB::Person
|
71
71
|
end
|
72
72
|
end
|
73
|
-
end
|
73
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gummi::Entity do
|
4
|
+
|
5
|
+
context 'comparison' do
|
6
|
+
let(:car) { Person::Car.new model: 'Blues Mobile' }
|
7
|
+
let (:jake1) { Person.new id: 'abcdef', version: 1, name: 'Jake', born_at: 100.years.ago, car: car }
|
8
|
+
let (:jake2) { Person.new id: 'abcdef', version: 1, name: 'Jake', born_at: 100.years.ago, car: car }
|
9
|
+
let (:jake3) { Person.new id: 'ghijgk', version: 1, name: 'Jake', born_at: 100.years.ago, car: car }
|
10
|
+
let (:jake4) { Person.new id: 'abcdef', version: 1, name: 'John', born_at: 100.years.ago, car: car }
|
11
|
+
let (:jake5) { Person.new id: 'abcdef', version: 2, name: 'Jake', born_at: 100.years.ago, car: car }
|
12
|
+
let (:jake6) { Person.new id: 'abcdef', version: 1, name: 'Jake', born_at: 100.years.ago, car: Person::Car.new(model: 'Blues Mobile') }
|
13
|
+
let (:jake7) { Person.new id: 'abcdef', version: 2, name: 'Jake', born_at: 100.years.ago, car: Person::Car.new(model: 'Police Car') }
|
14
|
+
|
15
|
+
it 'recognizes equal objects' do
|
16
|
+
jake1.should == jake2
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'recognizes different ids' do
|
20
|
+
jake1.should_not == jake3
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'recognizes different attributes' do
|
24
|
+
jake1.should_not == jake4
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'recognizes different versions' do
|
28
|
+
jake1.should_not == jake5
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'recognizes equal submodel instances' do
|
32
|
+
jake1.should == jake6
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'recognizes different submodel attributes' do
|
36
|
+
jake1.should_not == jake7
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gummi::Repository::Result do
|
4
|
+
|
5
|
+
describe "#facets" do
|
6
|
+
it "returns the relevant terms with counts" do
|
7
|
+
db_result = OpenStruct.new(facets: {"categories"=>
|
8
|
+
{"_type"=>"terms",
|
9
|
+
"missing"=>0,
|
10
|
+
"total"=>3,
|
11
|
+
"other"=>0,
|
12
|
+
"terms"=>[{"term"=>"design", "count"=>2}, {"term"=>"silver", "count"=>1}]}})
|
13
|
+
|
14
|
+
result = Gummi::Repository::Result.new(db_result, nil, nil, nil)
|
15
|
+
result.facets.should == {"categories" => {"design" => 2, "silver" => 1}}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/spec/models/person.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gummi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: virtus
|
@@ -179,7 +179,10 @@ extensions: []
|
|
179
179
|
extra_rdoc_files: []
|
180
180
|
files:
|
181
181
|
- .gitignore
|
182
|
+
- .rspec
|
183
|
+
- .ruby-version
|
182
184
|
- Gemfile
|
185
|
+
- Guardfile
|
183
186
|
- LICENSE.txt
|
184
187
|
- README.md
|
185
188
|
- Rakefile
|
@@ -212,6 +215,8 @@ files:
|
|
212
215
|
- lib/repobahn/entity.rb
|
213
216
|
- lib/repobahn/repository.rb
|
214
217
|
- spec/lib/gummi/document_spec.rb
|
218
|
+
- spec/lib/gummi/entity_spec.rb
|
219
|
+
- spec/lib/gummi/repository/result_spec.rb
|
215
220
|
- spec/lib/gummi/repository_spec.rb
|
216
221
|
- spec/models/db/person.rb
|
217
222
|
- spec/models/people.rb
|
@@ -230,18 +235,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
230
235
|
- - ! '>='
|
231
236
|
- !ruby/object:Gem::Version
|
232
237
|
version: '0'
|
233
|
-
segments:
|
234
|
-
- 0
|
235
|
-
hash: 2387628349001688798
|
236
238
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
237
239
|
none: false
|
238
240
|
requirements:
|
239
241
|
- - ! '>='
|
240
242
|
- !ruby/object:Gem::Version
|
241
243
|
version: '0'
|
242
|
-
segments:
|
243
|
-
- 0
|
244
|
-
hash: 2387628349001688798
|
245
244
|
requirements: []
|
246
245
|
rubyforge_project:
|
247
246
|
rubygems_version: 1.8.23
|
@@ -250,6 +249,8 @@ specification_version: 3
|
|
250
249
|
summary: A small wrapper around Elasticsearch
|
251
250
|
test_files:
|
252
251
|
- spec/lib/gummi/document_spec.rb
|
252
|
+
- spec/lib/gummi/entity_spec.rb
|
253
|
+
- spec/lib/gummi/repository/result_spec.rb
|
253
254
|
- spec/lib/gummi/repository_spec.rb
|
254
255
|
- spec/models/db/person.rb
|
255
256
|
- spec/models/people.rb
|