quandl_cassandra 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/quandl/cassandra/base/attributes.rb +11 -2
- data/lib/quandl/cassandra/base/connection.rb +4 -0
- data/lib/quandl/cassandra/base/persistence.rb +1 -4
- data/lib/quandl/cassandra/version.rb +1 -1
- data/spec/config/cassandra.rb +8 -6
- data/spec/factories/post.rb +13 -0
- data/spec/lib/quandl/cassandra/base/callbacks_spec.rb +32 -0
- data/spec/lib/quandl/cassandra/base/persistence_spec.rb +11 -0
- data/spec/lib/quandl/cassandra/base/scoping_spec.rb +36 -1
- data/spec/spec_helper.rb +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1b7c7cb00077c1c1d39ab0bc9a8141e2c7f7197
|
4
|
+
data.tar.gz: 3fd25aaa7cf8f6105425ecf0ae4d2c0c212afe13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c48d85c066b89c52c3e03b0f0086eb69a5b8d5f99da04208d0f898c4e54e5f5fd6043799eba5dd0dce576df357b4a0c3a27992fa7c306c24edee991a97f6746
|
7
|
+
data.tar.gz: 4a397f15caa8cf38f7c75d8c120f82f1547c408fd4f2c8ae9d74a9966c2c5a1fdea46fb68c6c374ee9b64768bff0c9a5cab55998e29778e88397d4e184b03741
|
@@ -42,10 +42,19 @@ module Attributes
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def initialize(*args)
|
45
|
+
attrs = args.extract_options!
|
45
46
|
@attributes = {}
|
46
|
-
|
47
|
+
# result set attributes?
|
48
|
+
result_set = attrs.delete(:_result_set) if attrs.has_key?(:_result_set)
|
49
|
+
# assign
|
50
|
+
if result_set.present? && result_set.is_a?(Hash)
|
51
|
+
@attributes = result_set.symbolize_keys!
|
52
|
+
self.new_record = false
|
53
|
+
end
|
54
|
+
# assign attributes
|
55
|
+
self.assign_attributes(attrs)
|
47
56
|
end
|
48
|
-
|
57
|
+
|
49
58
|
def inspect
|
50
59
|
"#{self.class.name} " + attributes.inspect
|
51
60
|
end
|
data/spec/config/cassandra.rb
CHANGED
@@ -4,22 +4,24 @@ Quandl::Cassandra.configure do |c|
|
|
4
4
|
c.consistency = :one
|
5
5
|
end
|
6
6
|
|
7
|
-
#
|
7
|
+
# check for keyspace
|
8
8
|
keyspace_exists = Quandl::Cassandra::Base.execute("SELECT * FROM system.schema_keyspaces WHERE keyspace_name = 'quandl_cassandra_test';")
|
9
|
-
Quandl::Cassandra::Base.execute("DROP KEYSPACE quandl_cassandra_test;") if keyspace_exists.present?
|
10
9
|
|
11
|
-
# create keyspace
|
12
|
-
Quandl::Cassandra::Base.execute("CREATE KEYSPACE quandl_cassandra_test WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor':
|
10
|
+
# create keyspace if not exists
|
11
|
+
Quandl::Cassandra::Base.execute("CREATE KEYSPACE quandl_cassandra_test WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 1};") unless keyspace_exists
|
13
12
|
|
14
13
|
# reconnect to keyspace
|
15
14
|
Quandl::Cassandra.configuration.keyspace = 'quandl_cassandra_test'
|
16
15
|
Quandl::Cassandra::Base.reset_connection
|
17
16
|
|
18
17
|
# create posts table
|
19
|
-
|
18
|
+
begin
|
19
|
+
Quandl::Cassandra::Base.execute("CREATE TABLE posts (
|
20
20
|
id uuid PRIMARY KEY,
|
21
21
|
content text,
|
22
22
|
author varchar,
|
23
23
|
updated_at timestamp );")
|
24
|
-
|
24
|
+
rescue
|
25
|
+
end
|
26
|
+
|
25
27
|
class Post < Quandl::Cassandra::Base; end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class PostWithCallbacks < Quandl::Cassandra::Base
|
4
|
+
|
5
|
+
table_name :posts
|
6
|
+
|
7
|
+
after_initialize :set_values
|
8
|
+
|
9
|
+
def set_values
|
10
|
+
self.content = 'always change'
|
11
|
+
self.author = 'only set as default' unless author.present?
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
describe Quandl::Cassandra::Base::Connection do
|
17
|
+
subject{ PostWithCallbacks.new( content: 'should be changed', author: 'should not change' ) }
|
18
|
+
|
19
|
+
its(:content){ should eq 'always change' }
|
20
|
+
its(:author){ should eq 'should not change' }
|
21
|
+
its(:changes){ should eq({"content"=>[nil, "always change"], "author"=>[nil, "should not change"]}) }
|
22
|
+
|
23
|
+
describe ".new_from_query_result" do
|
24
|
+
subject{ PostWithCallbacks.new_from_query_result({ content: 'should be changed', author: 'should not change' }) }
|
25
|
+
|
26
|
+
its(:content){ should eq 'always change' }
|
27
|
+
its(:author){ should eq 'should not change' }
|
28
|
+
its(:changes){ should eq({"content"=>["should be changed", "always change"]}) }
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -13,6 +13,15 @@ describe Quandl::Cassandra::Base::Persistence do
|
|
13
13
|
|
14
14
|
its(:new_record?){ should be_true }
|
15
15
|
|
16
|
+
describe ".new_from_query_result" do
|
17
|
+
subject{ Post.new_from_query_result({ id: id, content: 'blah', author: 'someone' }) }
|
18
|
+
|
19
|
+
its(:changes){ should be_blank }
|
20
|
+
its(:id){ should eq id }
|
21
|
+
its(:content){ should eq 'blah' }
|
22
|
+
its(:author){ should eq 'someone' }
|
23
|
+
end
|
24
|
+
|
16
25
|
describe ".create" do
|
17
26
|
|
18
27
|
let(:post){ Post.create( id: id, content: 'test content', author: "quandl" ) }
|
@@ -27,6 +36,8 @@ describe Quandl::Cassandra::Base::Persistence do
|
|
27
36
|
its(:content){ should eq 'test content' }
|
28
37
|
its(:author){ should eq 'quandl' }
|
29
38
|
its(:new_record?){ should be_false }
|
39
|
+
its(:changes){ should be_blank }
|
40
|
+
its(:changed?){ should be_false }
|
30
41
|
end
|
31
42
|
|
32
43
|
describe ".destroy" do
|
@@ -1,7 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Quandl::Cassandra::Base::Scoping do
|
4
|
-
|
4
|
+
|
5
|
+
before(:all){
|
6
|
+
Post.truncate
|
7
|
+
5.times{ create(:post) }
|
8
|
+
}
|
9
|
+
let(:posts){ Post.all }
|
10
|
+
|
5
11
|
subject{ Post }
|
6
12
|
|
7
13
|
[:where, :select, :limit, :order].each do |name|
|
@@ -12,6 +18,35 @@ describe Quandl::Cassandra::Base::Scoping do
|
|
12
18
|
|
13
19
|
its(:scope_names){ should eq Post.scope.scope_names }
|
14
20
|
|
21
|
+
describe ".all" do
|
22
|
+
|
23
|
+
subject{ posts }
|
24
|
+
its(:count){ should eq 5 }
|
25
|
+
|
26
|
+
describe "#first" do
|
27
|
+
subject{ posts.first }
|
28
|
+
|
29
|
+
its(:changes){ should be_blank }
|
30
|
+
its(:id){ should be_a Cql::Uuid }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe ".where" do
|
35
|
+
|
36
|
+
let(:ids){ posts.collect(&:id)[1..3] }
|
37
|
+
subject{ Post.where(id: ids ) }
|
38
|
+
|
39
|
+
its(:count){ should eq 3 }
|
40
|
+
|
41
|
+
describe "#first" do
|
42
|
+
subject{ posts.first }
|
43
|
+
|
44
|
+
its(:changes){ should be_blank }
|
45
|
+
its(:id){ should be_a Cql::Uuid }
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
15
50
|
describe ".find_or_build" do
|
16
51
|
it "given nil should be a new record" do
|
17
52
|
Post.find_or_build(nil).new_record?.should be_true
|
data/spec/spec_helper.rb
CHANGED
@@ -9,12 +9,12 @@ require 'securerandom'
|
|
9
9
|
|
10
10
|
require "quandl/cassandra"
|
11
11
|
require "quandl/fabricate"
|
12
|
+
require 'rspec/expectations'
|
12
13
|
|
13
14
|
# require config
|
14
15
|
Dir.glob( File.join( File.dirname(__FILE__), 'config/**/*.rb' ) ).each{|f| require(f) }
|
15
16
|
|
16
17
|
# require expectations
|
17
|
-
require 'rspec/expectations'
|
18
18
|
Dir.glob( File.join( File.dirname(__FILE__), 'expectations/**/*.rb' ) ).each{|f| require(f) }
|
19
19
|
|
20
20
|
# require factories
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quandl_cassandra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Blake Hilscher
|
@@ -239,6 +239,8 @@ files:
|
|
239
239
|
- spec/config/logger.rb
|
240
240
|
- spec/expectations/string.rb
|
241
241
|
- spec/expectations/time.rb
|
242
|
+
- spec/factories/post.rb
|
243
|
+
- spec/lib/quandl/cassandra/base/callbacks_spec.rb
|
242
244
|
- spec/lib/quandl/cassandra/base/connection_spec.rb
|
243
245
|
- spec/lib/quandl/cassandra/base/persistence_spec.rb
|
244
246
|
- spec/lib/quandl/cassandra/base/sanitization_spec.rb
|
@@ -274,6 +276,8 @@ test_files:
|
|
274
276
|
- spec/config/logger.rb
|
275
277
|
- spec/expectations/string.rb
|
276
278
|
- spec/expectations/time.rb
|
279
|
+
- spec/factories/post.rb
|
280
|
+
- spec/lib/quandl/cassandra/base/callbacks_spec.rb
|
277
281
|
- spec/lib/quandl/cassandra/base/connection_spec.rb
|
278
282
|
- spec/lib/quandl/cassandra/base/persistence_spec.rb
|
279
283
|
- spec/lib/quandl/cassandra/base/sanitization_spec.rb
|