cassandra_datum 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,101 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+ require 'factory_girl'
13
+
14
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
15
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
16
+
17
+ require 'cassandra_datum'
18
+ require 'cassandra_datum/test_helper'
19
+
20
+ ::CASSANDRA_CLIENT = Cassandra.new('BackupifyMetadata_test', %w[localhost:9160])
21
+
22
+ class Test::Unit::TestCase
23
+ include CassandraDatum::TestHelper
24
+ end
25
+
26
+ class MockCassandraDatum < CassandraDatum::Base
27
+
28
+ attribute! :row_id
29
+ attribute! :document_id
30
+ attribute! :timestamp, :type => DateTime
31
+ attribute :payload
32
+
33
+ validates_presence_of :timestamp
34
+
35
+ # Just to test before_save callback
36
+ before_save do |datum|
37
+ @@before_save_counts ||= {}
38
+ @@before_save_counts[datum].present? ? @@before_save_counts[datum] += 1 : @@before_save_counts[datum] = 1
39
+ end
40
+
41
+ def self.before_save_counts
42
+ @@before_save_counts
43
+ end
44
+
45
+ def self.reset_before_save_counts!
46
+ @@before_save_counts = {}
47
+ end
48
+ end
49
+
50
+ class OverrideColumnFamilyDatum < CassandraDatum::Base
51
+ column_family 'MockCassandraData'
52
+
53
+ attribute :payload
54
+ end
55
+
56
+ class PolymorphicCassandraDatum < MockCassandraDatum
57
+ attribute :type, :type => String
58
+ end
59
+
60
+ class DatumWithArrayAndHash < MockCassandraDatum
61
+ attribute :type, :type => String
62
+
63
+ attribute :a_hash, :type => Hash
64
+ attribute :an_array, :type => Array
65
+ end
66
+
67
+ require 'active_record'
68
+
69
+ class MockCassandraDatumObserver < ActiveRecord::Observer
70
+ observe :mock_cassandra_datum
71
+
72
+ def before_save(datum)
73
+ @@before_save_counts ||= {}
74
+ @@before_save_counts[datum].present? ? @@before_save_counts[datum] += 1 : @@before_save_counts[datum] = 1
75
+ end
76
+
77
+ def self.before_save_counts
78
+ @@before_save_counts
79
+ end
80
+
81
+ def self.reset_before_save_counts!
82
+ @@before_save_counts = {}
83
+ end
84
+
85
+ end
86
+
87
+ FactoryGirl.define do
88
+ factory :mock_cassandra_datum, :aliases => [:cassandra_datum] do
89
+ row_id { SecureRandom.hex(8) }
90
+ document_id { SecureRandom.hex(8) }
91
+ timestamp { Time.now }
92
+ sequence(:payload) { |n| "data payload #{n}" }
93
+ end
94
+
95
+ factory :polymorphic_cassandra_datum, :class => PolymorphicCassandraDatum, :parent => :cassandra_datum do
96
+ end
97
+
98
+ factory :datum_with_array_and_hash, :class => DatumWithArrayAndHash, :parent => :cassandra_datum do
99
+ end
100
+
101
+ end
metadata ADDED
@@ -0,0 +1,194 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cassandra_datum
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.9
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jason Haruska
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ type: :runtime
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.5
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: 2.3.5
29
+ prerelease: false
30
+ - !ruby/object:Gem::Dependency
31
+ name: activemodel
32
+ type: :runtime
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: 2.3.5
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 2.3.5
45
+ prerelease: false
46
+ - !ruby/object:Gem::Dependency
47
+ name: activerecord
48
+ type: :runtime
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 2.3.5
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: 2.3.5
61
+ prerelease: false
62
+ - !ruby/object:Gem::Dependency
63
+ name: cassandra
64
+ type: :runtime
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ prerelease: false
78
+ - !ruby/object:Gem::Dependency
79
+ name: active_attr
80
+ type: :runtime
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ prerelease: false
94
+ - !ruby/object:Gem::Dependency
95
+ name: exception_helper
96
+ type: :runtime
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ version_requirements: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ prerelease: false
110
+ - !ruby/object:Gem::Dependency
111
+ name: shoulda
112
+ type: :development
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ prerelease: false
126
+ - !ruby/object:Gem::Dependency
127
+ name: factory_girl
128
+ type: :development
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ prerelease: false
142
+ description: Cassandra backed ORM
143
+ email:
144
+ - jason@backupify.com
145
+ executables: []
146
+ extensions: []
147
+ extra_rdoc_files: []
148
+ files:
149
+ - .gitignore
150
+ - Gemfile
151
+ - Gemfile.lock
152
+ - LICENSE.txt
153
+ - README.rdoc
154
+ - Rakefile
155
+ - cassandra_datum.gemspec
156
+ - lib/cassandra_datum.rb
157
+ - lib/cassandra_datum/base.rb
158
+ - lib/cassandra_datum/railtie.rb
159
+ - lib/cassandra_datum/tasks.rb
160
+ - lib/cassandra_datum/test_helper.rb
161
+ - lib/cassandra_datum/version.rb
162
+ - test/base_test.rb
163
+ - test/helper.rb
164
+ homepage: http://github.com/backupify/cassandra_datum
165
+ licenses:
166
+ - MIT
167
+ post_install_message:
168
+ rdoc_options: []
169
+ require_paths:
170
+ - lib
171
+ required_ruby_version: !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - ! '>='
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ segments:
178
+ - 0
179
+ hash: -282891552847771728
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ none: false
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubyforge_project:
188
+ rubygems_version: 1.8.23
189
+ signing_key:
190
+ specification_version: 3
191
+ summary: An active record like object base that is backed by Cassandra
192
+ test_files:
193
+ - test/base_test.rb
194
+ - test/helper.rb