quandl_cassandra_models 0.3.9 → 0.3.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39360a544240f7e75f02fea8cce478d515ab4c8b
4
- data.tar.gz: 1ab7b958e622a92ee3d991d6db2c20711a93c153
3
+ metadata.gz: 1dba8a80af70ec60a10f0214ab262a68aff64dee
4
+ data.tar.gz: b425b1bfaba56bbccda9e859b92eb3635c119770
5
5
  SHA512:
6
- metadata.gz: 128c3f627afa74ea9a5bc29fec16f7009777b0984d0059e415014e8d8f786932855e025f274e476c588ee1a4fd3b0802c8ed51cb9da50c2e5cfd2784830cef9f
7
- data.tar.gz: 1b108b8d76af34e34957daf65a9a3ecb946be96909ebca9d13b41824471ffff7b672ae9d573e40d5a20eedc92b46525e3b9a64c23fe2dbce0d0fcddbb64abb09
6
+ metadata.gz: cc80a451921d95abbf80c0555e816c2338b9b3567b8e1dbff8b75653cfa363eef3c1b6981d4b55c69fb714b9157873c717a3b3e1c4aae638f673357533c040bf
7
+ data.tar.gz: 54eea88045fd66edb7702aff58338283cd599a396b9726a45cb47f2b48d10ed3f721d134cbd21d6ebbb72374b7c4b8932a94f5f7a2e8f62a56f2159a7cd22ce9
data/Guardfile ADDED
@@ -0,0 +1,10 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ group :specs do
5
+ guard :rspec, :cli => '--color --format doc --fail-fast' do
6
+ watch(%r{^spec/.+_spec\.rb$})
7
+ watch(%r{^(lib/.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
8
+ watch('spec/spec_helper.rb') { 'spec' }
9
+ end
10
+ end
data/UPGRADE.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.3.10
2
+
3
+ * Quandl::Cassandra::Models::Column::Read::Offset#required_attributes_present?
4
+ * WIKI-18 #comment Column.find_max_time_by_ids passes spec
5
+ * Add guard, guard-rspec
6
+
7
+
1
8
  ## 0.3.9
2
9
 
3
10
  * bump quandl packages
@@ -1,12 +1,17 @@
1
1
  class Quandl::Cassandra::Models::Column::Read::Offset < Quandl::Cassandra::Models::Column::Read
2
2
 
3
3
  def perform
4
- # apply offset
5
- return unless column_ids.present?
4
+ # skip strategy unless all required attriutes are present
5
+ return unless required_attributes_present?
6
+ # apply strategy
6
7
  apply_offset_with_transform
7
8
  apply_offset
8
9
  end
9
10
 
11
+ def required_attributes_present?
12
+ column_ids.present? && trim_start.is_a?(Date) && trim_end.is_a?(Date)
13
+ end
14
+
10
15
  def apply_offset_with_transform
11
16
  # rdiff_from needs the data from the current to offset
12
17
  if attributes[:row].present? && attributes[:transform] == :rdiff_from
@@ -25,16 +25,16 @@ class Quandl::Cassandra::Models::Column < Quandl::Cassandra::Base
25
25
  def find_max_time_by_ids_and_collapses(ids, collapses, order)
26
26
  # otherwise lookup each column seperately
27
27
  times = []
28
- column_ids.each_with_index do |id, index|
28
+ ids.each_with_index do |id, index|
29
29
  column_collapse = collapses[index]
30
30
  next if column_collapse.blank?
31
- times << limit(1).order("type #{order}, time #{order}").where( id: id, type: collapse ).select(:time, :type).to_a[0]['time']
31
+ times << limit(1).order("type #{order}, time #{order}").where( id: id, type: column_collapse ).select(:time, :type).to_a[0].try(:[], 'time')
32
32
  end
33
33
  times.flatten.max
34
34
  end
35
35
 
36
36
  def find_max_time_by_ids_and_collapse(ids, collapse, order)
37
- limit(1).order("type #{order}, time #{order}").where( id: ids, type: collapse ).select(:time, :type).to_a[0]['time']
37
+ limit(1).order("type #{order}, time #{order}").where( id: ids, type: collapse ).select(:time, :type).to_a[0].try(:[], 'time')
38
38
  end
39
39
 
40
40
  end
@@ -23,8 +23,12 @@ module Quandl::Cassandra::Models::Dataset::Columns
23
23
  end
24
24
  end
25
25
 
26
+ def column_frequencies
27
+ @column_frequencies ||= columns.collect(&:frequency)
28
+ end
29
+
26
30
  def column_units
27
- @column_units ||= columns.collect(&:unit)
31
+ @column_units ||= columns.collect(&:units)
28
32
  end
29
33
 
30
34
  def column_names
@@ -51,6 +55,9 @@ module Quandl::Cassandra::Models::Dataset::Columns
51
55
  def clear_attributes!
52
56
  @columns = nil
53
57
  @column_ids = nil
58
+ @column_frequencies = nil
59
+ @column_names = nil
60
+ @column_units = nil
54
61
  end
55
62
 
56
63
 
@@ -1,7 +1,7 @@
1
1
  module Quandl
2
2
  module Cassandra
3
3
  module Models
4
- VERSION = '0.3.9'
4
+ VERSION = '0.3.10'
5
5
  end
6
6
  end
7
7
  end
@@ -22,6 +22,8 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency "factory_girl_rails"
23
23
  s.add_development_dependency "fivemat", "~> 1.2"
24
24
  s.add_development_dependency "pry"
25
+ s.add_development_dependency "guard"
26
+ s.add_development_dependency "guard-rspec"
25
27
 
26
28
  s.add_runtime_dependency "quandl_cassandra", "~> 1.1"
27
29
 
@@ -6,12 +6,55 @@ describe Quandl::Cassandra::Models::Column do
6
6
  let(:data){ Quandl::Fabricate::Data.rand( rows: 10, columns: 2, nils: false ) }
7
7
  let(:dataset){ Quandl::Cassandra::Models::Dataset.create( id: id, data: data ) }
8
8
 
9
+ let(:column_ids){ dataset.column_ids }
10
+ let(:collapses){ ['source', 'source'] }
11
+ let(:column_order){ :desc }
12
+
9
13
  describe ".read" do
10
14
  before(:each){ Quandl::Cassandra::Models::Column.write( id: id, data: data ); sleep(0.2) }
11
15
 
12
16
  subject{ Quandl::Cassandra::Models::Column.read( id: id ) }
13
17
  its(:count){ should eq 10 }
14
18
  it{ should eq data }
19
+
20
+ context "offset with missing data" do
21
+ before(:each){ dataset.data.scoped.delete_all }
22
+ subject{ Quandl::Cassandra::Models::Column.read( id: id, offset: 20 ) }
23
+ its(:count){ should eq 0 }
24
+ end
25
+
26
+ end
27
+
28
+ describe ".find_max_time_by_ids" do
29
+ let(:data){ Quandl::Fabricate::Data.rand( rows: 2, columns: 2, nils: false ) }
30
+ subject{ Quandl::Cassandra::Models::Column.find_max_time_by_ids(column_ids, collapses, column_order) }
31
+
32
+ it{ should be_a Date }
33
+ it{ should eq dataset.data.scoped.to_table.to_date.first.first }
34
+
35
+ context "asc order" do
36
+ let(:column_order){ :asc }
37
+ it{ should be_a Date }
38
+ it{ should eq dataset.data.scoped.to_table.to_date.last.first }
39
+ end
40
+
41
+ context "invalid collapse" do
42
+ let(:collapses){ ['invalid', 'invalid'] }
43
+ it{ should be_nil }
44
+ end
45
+
46
+ end
47
+
48
+ describe ".find_max_time_by_ids_and_collapses" do
49
+ subject{ Quandl::Cassandra::Models::Column.find_max_time_by_ids_and_collapses(column_ids, collapses, column_order) }
50
+ it{ should be_a Integer }
51
+ it{ should eq dataset.data.scoped.to_table.first.first }
52
+ end
53
+
54
+ describe ".find_max_time_by_ids_and_collapse" do
55
+ subject{ Quandl::Cassandra::Models::Column.find_max_time_by_ids_and_collapse(column_ids, collapses.first, column_order) }
56
+ it{ should be_a Integer }
57
+ it{ should eq dataset.data.scoped.to_table.first.first }
15
58
  end
16
59
 
17
60
  end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Quandl::Cassandra::Models::Dataset::Columns do
5
+
6
+ subject { create(:dataset, data: Quandl::Fabricate::Data.rand( rows: 10, columns: 4, nils: false, frequency: :quarterly ) ) }
7
+
8
+ its(:column_frequencies){ should eq 4.times.collect{'quarterly'} }
9
+ its(:column_units){ should eq 4.times.collect{nil} }
10
+ its(:column_names){ should eq 4.times.collect{nil} }
11
+
12
+ it "should return first column" do
13
+ subject.data.column(1)[0][1].should eq subject.data.scoped.to_table[0][1]
14
+ end
15
+
16
+ it "should return second column" do
17
+ subject.data.column(2)[0][1].should eq subject.data.scoped.to_table[0][2]
18
+ end
19
+
20
+ it "should return third column" do
21
+ subject.data.column(2)[0][1].should eq subject.data.scoped.to_table[0][2]
22
+ end
23
+
24
+ end
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,8 @@ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
2
 
3
3
  QUANDL_LOGGER = true
4
4
 
5
+ require 'guard'
6
+
5
7
  require "rspec"
6
8
  require 'factory_girl'
7
9
  require 'pry'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quandl_cassandra_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Hilscher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-14 00:00:00.000000000 Z
11
+ date: 2013-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard
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
+ - !ruby/object:Gem::Dependency
98
+ name: guard-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: quandl_cassandra
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -103,6 +131,7 @@ extra_rdoc_files: []
103
131
  files:
104
132
  - .gitignore
105
133
  - Gemfile
134
+ - Guardfile
106
135
  - LICENSE
107
136
  - README.md
108
137
  - Rakefile
@@ -149,7 +178,7 @@ files:
149
178
  - spec/lib/quandl/cassandra/models/column_spec.rb
150
179
  - spec/lib/quandl/cassandra/models/data_spec.rb
151
180
  - spec/lib/quandl/cassandra/models/dataset/collapse_spec.rb
152
- - spec/lib/quandl/cassandra/models/dataset/column_spec.rb
181
+ - spec/lib/quandl/cassandra/models/dataset/columns_spec.rb
153
182
  - spec/lib/quandl/cassandra/models/dataset/persistence_spec.rb
154
183
  - spec/lib/quandl/cassandra/models/dataset/row_spec.rb
155
184
  - spec/lib/quandl/cassandra/models/dataset/transform_spec.rb
@@ -198,7 +227,7 @@ test_files:
198
227
  - spec/lib/quandl/cassandra/models/column_spec.rb
199
228
  - spec/lib/quandl/cassandra/models/data_spec.rb
200
229
  - spec/lib/quandl/cassandra/models/dataset/collapse_spec.rb
201
- - spec/lib/quandl/cassandra/models/dataset/column_spec.rb
230
+ - spec/lib/quandl/cassandra/models/dataset/columns_spec.rb
202
231
  - spec/lib/quandl/cassandra/models/dataset/persistence_spec.rb
203
232
  - spec/lib/quandl/cassandra/models/dataset/row_spec.rb
204
233
  - spec/lib/quandl/cassandra/models/dataset/transform_spec.rb
@@ -1,24 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe Quandl::Cassandra::Models::Dataset do
5
-
6
- context "column" do
7
-
8
- subject { create(:dataset) }
9
-
10
- it "should return first column" do
11
- subject.data.column(1)[0][1].should eq subject.data.scoped.to_table[0][1]
12
- end
13
-
14
- it "should return second column" do
15
- subject.data.column(2)[0][1].should eq subject.data.scoped.to_table[0][2]
16
- end
17
-
18
- it "should return third column" do
19
- subject.data.column(2)[0][1].should eq subject.data.scoped.to_table[0][2]
20
- end
21
-
22
- end
23
-
24
- end