datastax_rails 2.0.15 → 2.0.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eca5b1ed0b44ff67dffbe1c313ec3327b7011ac0
4
- data.tar.gz: db1abc9e2a7c2577d7d20c8edf2492a81f88a2e2
3
+ metadata.gz: 132b266af9a95c9c39cf2ebd31070736456203a9
4
+ data.tar.gz: 456554a5b9f107ceb7766f8dc8d80b9e842ef53a
5
5
  SHA512:
6
- metadata.gz: 919cf9003af455d8c2311b82801a8b3b2f33ef5fb004721c24128c6d76671207adc8ef2e6e4ea7961f14370bcd16846a53dc669956910757c7fc3b65f534a251
7
- data.tar.gz: 2237e860f52576b248028d589a30773453783ccdf3e7c4bcb5bd688ff2b23064a7eed327805d06067931ecde65e0c7b7381a49df955a2c21a34f52eb8a668d1c
6
+ metadata.gz: f91a8dcaba63be7244c3d58621fab35a9677e7cf1c93e9763f6adf9ef25b203a6883531100c7a357082b60e980435c1f7a276eab0f87ed35758be4701a3debe5
7
+ data.tar.gz: 773c2de70abae6deae8ba0119873c760b61cb14e0992c88e39975446136a82856f1fc177802b23a78e378ece41b075942adef07d5b13f2af891d49967c31f3c1
@@ -467,7 +467,7 @@ module DatastaxRails #:nodoc:
467
467
  # won't get written unless they get marked as changed
468
468
  self.class.columns.each do |c|
469
469
  attr, orig_value = c.name, c.default
470
- @changed_attributes[attr] = orig_value if _field_changed?(attr, orig_value, @attributes[attr])
470
+ @changed_attributes[attr] = nil if _field_changed?(attr, orig_value, @attributes[attr])
471
471
  end
472
472
  end
473
473
 
@@ -1,4 +1,5 @@
1
1
  module DatastaxRails
2
+ # Holds a collection of DatastaxRails::Base objects.
2
3
  class Collection < Array
3
4
  # @!attribute [r] total_entries
4
5
  # @return [Fixnum] the total number of entries that match the search
@@ -11,7 +12,7 @@ module DatastaxRails
11
12
  attr_accessor :total_entries, :per_page, :current_page, :facets, :highlights
12
13
 
13
14
  def inspect
14
- "<DatastaxRails::Collection##{object_id} contents: #{super} last_column_name: #{last_column_name.inspect}>"
15
+ "<DatastaxRails::Collection##{object_id} contents: #{super}>"
15
16
  end
16
17
 
17
18
  def total_pages
@@ -216,7 +216,7 @@ module DatastaxRails
216
216
  end
217
217
 
218
218
  def full_solr_range
219
- if %w(date uuid).include? solr_type
219
+ if %w(date uuid integer int double long float).include? solr_type
220
220
  '[* TO *]'
221
221
  else
222
222
  '[\"\" TO *]'
@@ -1,4 +1,5 @@
1
1
  module DatastaxRails
2
+ # Methods for computing statistics (sum, maximum, minimum, average, and stddev)
2
3
  module StatsMethods
3
4
  STATS_FIELDS = { 'sum' => 'sum', 'maximum' => 'max', 'minimum' => 'min', 'average' => 'mean', 'stddev' => 'stddev' }
4
5
 
@@ -63,7 +64,7 @@ module DatastaxRails
63
64
 
64
65
  def calculate_stats(field)
65
66
  unless @stats[field]
66
- @stats[field] = limit(1).compute_stats(field).stats[field]
67
+ @stats[field] = with_solr.limit(1).compute_stats(field).stats[field]
67
68
  end
68
69
  end
69
70
  end
@@ -2,6 +2,7 @@ require 'rsolr'
2
2
  require 'pp' if ENV['DEBUG_SOLR'] == 'true'
3
3
  # TODO: Move functionality into modules
4
4
  module DatastaxRails
5
+ # = DatastaxRails Relation
5
6
  class Relation # rubocop:disable Style/ClassLength
6
7
  MULTI_VALUE_METHODS = %i(order where where_not fulltext greater_than less_than select stats field_facet
7
8
  range_facet slow_order)
@@ -493,7 +494,7 @@ module DatastaxRails
493
494
  @stats_values.flatten.each do |sv|
494
495
  params['stats.field'] = sv
495
496
  end
496
- @params['stats.facet'] = @group_value
497
+ params['stats.facet'] = @group_value
497
498
  end
498
499
  solr_response = nil
499
500
  if @group_value
@@ -1,4 +1,4 @@
1
1
  # rubocop:disable Style/Documentation
2
2
  module DatastaxRails
3
- VERSION = '2.0.15'
3
+ VERSION = '2.0.16'
4
4
  end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe DatastaxRails::Base do
4
+ context 'attribute methods' do
5
+ context 'default values' do
6
+ subject { Default.new }
7
+
8
+ its(:str) { is_expected.to eq('string') }
9
+ its(:bool) { is_expected.to be(true) }
10
+ its(:bool2) { is_expected.to be(false) }
11
+ its(:bool3) { is_expected.to be_nil }
12
+ its(:changed_attributes) { is_expected.to include('str') }
13
+ its(:changed_attributes) { is_expected.to include('bool') }
14
+ its(:changed_attributes) { is_expected.to include('bool2') }
15
+ its(:changed_attributes) { is_expected.not_to include('bool3') }
16
+
17
+ context 'setting the attribute to the default' do
18
+ before { subject.bool = true }
19
+
20
+ its(:bool) { is_expected.to be(true) }
21
+ its(:changed_attributes) { is_expected.to include('bool') }
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+
3
+ describe DatastaxRails::Relation do
4
+ context 'stats methods' do
5
+ before(:all) do
6
+ DatastaxRails::Base.recorded_classes = {}
7
+ Hobby.create(name: 'Knitting', complexity: 1.0)
8
+ Hobby.create(name: 'Walking', complexity: 2.0)
9
+ Hobby.create(name: 'Skydiving', complexity: 10.0)
10
+ Hobby.create(name: 'Flying', complexity: 50.0)
11
+ Hobby.commit_solr
12
+ end
13
+
14
+ after(:all) { Hobby.truncate }
15
+
16
+ subject { Hobby }
17
+
18
+ context('#sum') do
19
+ subject { super().sum(:complexity) }
20
+ it { is_expected.to eq(63.0) }
21
+ end
22
+
23
+ context('#average') do
24
+ subject { super().average(:complexity) }
25
+ it { is_expected.to eq(15.75) }
26
+ end
27
+
28
+ context('#maximum') do
29
+ subject { super().maximum(:complexity) }
30
+ it { is_expected.to eq(50.0) }
31
+ end
32
+
33
+ context('#minimum') do
34
+ subject { super().minimum(:complexity) }
35
+ it { is_expected.to eq(1.0) }
36
+ end
37
+
38
+ context('#stddev') do
39
+ subject { super().stddev(:complexity) }
40
+ it { is_expected.to be_within(0.001).of(23.185) }
41
+ end
42
+
43
+ context('grouped') do
44
+ subject { super().group(:name) }
45
+
46
+ context('#sum') do
47
+ subject { super().grouped_sum(:complexity) }
48
+ it { is_expected.to eq('knitting' => 1.0, 'walking' => 2.0, 'skydiving' => 10.0, 'flying' => 50.0) }
49
+ end
50
+
51
+ context('#average') do
52
+ subject { super().grouped_average(:complexity) }
53
+ it { is_expected.to eq('knitting' => 1.0, 'walking' => 2.0, 'skydiving' => 10.0, 'flying' => 50.0) }
54
+ end
55
+
56
+ context('#maximum') do
57
+ subject { super().grouped_maximum(:complexity) }
58
+ it { is_expected.to eq('knitting' => 1.0, 'walking' => 2.0, 'skydiving' => 10.0, 'flying' => 50.0) }
59
+ end
60
+
61
+ context('#minimum') do
62
+ subject { super().grouped_minimum(:complexity) }
63
+ it { is_expected.to eq('knitting' => 1.0, 'walking' => 2.0, 'skydiving' => 10.0, 'flying' => 50.0) }
64
+ end
65
+
66
+ context('#stddev') do
67
+ subject { super().grouped_stddev(:complexity) }
68
+ it { is_expected.to eq('knitting' => 0.0, 'walking' => 0.0, 'skydiving' => 0.0, 'flying' => 0.0) }
69
+ end
70
+ end
71
+ end
72
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  # configure Rails Envinronment
2
2
  ENV['RAILS_ENV'] = 'test'
3
+ require 'simplecov'
4
+ SimpleCov.start do
5
+ add_filter 'spec/'
6
+ end
7
+
3
8
  require File.expand_path('../dummy/config/environment.rb', __FILE__)
4
9
 
5
10
  require 'rspec/rails'
@@ -86,6 +86,16 @@ class Hobby < DatastaxRails::Base
86
86
  timestamps
87
87
  end
88
88
 
89
+ class Default < DatastaxRails::Base
90
+ self.column_family = 'defaults'
91
+
92
+ uuid :id
93
+ string :str, default: 'string'
94
+ boolean :bool, default: true
95
+ boolean :bool2, default: false
96
+ boolean :bool3
97
+ end
98
+
89
99
  class CoreMetadata < DatastaxRails::DynamicModel
90
100
  self.grouping = 'core'
91
101
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datastax_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.15
4
+ version: 2.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason M. Kusar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-22 00:00:00.000000000 Z
11
+ date: 2014-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -270,6 +270,7 @@ files:
270
270
  - spec/datastax_rails/associations/collection_association_spec.rb
271
271
  - spec/datastax_rails/associations/has_many_association_spec.rb
272
272
  - spec/datastax_rails/associations_spec.rb
273
+ - spec/datastax_rails/attribute_methods/typecasting_spec.rb
273
274
  - spec/datastax_rails/attribute_methods_spec.rb
274
275
  - spec/datastax_rails/base_spec.rb
275
276
  - spec/datastax_rails/callbacks_spec.rb
@@ -288,6 +289,7 @@ files:
288
289
  - spec/datastax_rails/relation/modification_methods_spec.rb
289
290
  - spec/datastax_rails/relation/search_methods_spec.rb
290
291
  - spec/datastax_rails/relation/spawn_methods_spec.rb
292
+ - spec/datastax_rails/relation/stats_methods_spec.rb
291
293
  - spec/datastax_rails/relation_spec.rb
292
294
  - spec/datastax_rails/schema/migrator_spec.rb
293
295
  - spec/datastax_rails/schema/solr_spec.rb
@@ -386,11 +388,13 @@ test_files:
386
388
  - spec/datastax_rails/schema/migrator_spec.rb
387
389
  - spec/datastax_rails/schema/solr_spec.rb
388
390
  - spec/datastax_rails/validations/uniqueness_spec.rb
391
+ - spec/datastax_rails/attribute_methods/typecasting_spec.rb
389
392
  - spec/datastax_rails/cql/delete_spec.rb
390
393
  - spec/datastax_rails/cql/update_spec.rb
391
394
  - spec/datastax_rails/cql/base_spec.rb
392
395
  - spec/datastax_rails/cql/select_spec.rb
393
396
  - spec/datastax_rails/persistence_spec.rb
397
+ - spec/datastax_rails/relation/stats_methods_spec.rb
394
398
  - spec/datastax_rails/relation/spawn_methods_spec.rb
395
399
  - spec/datastax_rails/relation/facet_methods_spec.rb
396
400
  - spec/datastax_rails/relation/finder_methods_spec.rb