gotime-cassandra_object 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/Gemfile.lock +1 -1
  2. data/gotime-cassandra_object.gemspec +1 -1
  3. data/lib/cassandra_object.rb +1 -2
  4. data/lib/cassandra_object/associations.rb +3 -4
  5. data/lib/cassandra_object/associations/one_to_many.rb +2 -10
  6. data/lib/cassandra_object/associations/one_to_one.rb +1 -1
  7. data/lib/cassandra_object/base.rb +20 -4
  8. data/lib/cassandra_object/consistency.rb +21 -20
  9. data/lib/cassandra_object/cursor.rb +6 -7
  10. data/lib/cassandra_object/finder_methods.rb +4 -10
  11. data/lib/cassandra_object/identity.rb +8 -26
  12. data/lib/cassandra_object/persistence.rb +5 -30
  13. data/lib/cassandra_object/{validation.rb → validations.rb} +6 -8
  14. data/{test-old → test}/active_model_test.rb +2 -2
  15. data/test/base_test.rb +10 -0
  16. data/test/consistency_test.rb +20 -0
  17. data/test/identity_test.rb +6 -1
  18. data/test/validations_test.rb +15 -0
  19. metadata +15 -34
  20. data/lib/cassandra_object/primary_key.rb +0 -12
  21. data/test-old/base_test.rb +0 -4
  22. data/test-old/basic_scenarios_test.rb +0 -243
  23. data/test-old/callbacks_test.rb +0 -19
  24. data/test-old/config/cassandra.in.sh +0 -53
  25. data/test-old/config/log4j.properties +0 -38
  26. data/test-old/config/storage-conf.xml +0 -221
  27. data/test-old/connection.rb +0 -25
  28. data/test-old/cursor_test.rb +0 -66
  29. data/test-old/dirty_test.rb +0 -34
  30. data/test-old/fixture_models.rb +0 -90
  31. data/test-old/identity/natural_key_factory_test.rb +0 -94
  32. data/test-old/index_test.rb +0 -69
  33. data/test-old/legacy/test_helper.rb +0 -18
  34. data/test-old/migration_test.rb +0 -21
  35. data/test-old/one_to_many_associations_test.rb +0 -163
  36. data/test-old/test_case.rb +0 -28
  37. data/test-old/test_helper.rb +0 -16
  38. data/test-old/time_test.rb +0 -32
  39. data/test-old/types_test.rb +0 -252
  40. data/test-old/validation_test.rb +0 -25
  41. data/test-old/z_mock_test.rb +0 -36
  42. data/test/primary_key_test.rb +0 -9
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ class CassandraObject::ConsistencyTest < CassandraObject::TestCase
4
+ class TestModel < CassandraObject::Base
5
+ end
6
+
7
+ test 'consistency_levels' do
8
+ assert_equal [:one, :quorum, :all].to_set, TestModel.consistency_levels.to_set
9
+ end
10
+
11
+ test 'thrift_write_consistency' do
12
+ TestModel.write_consistency = :all
13
+ assert_equal Cassandra::Consistency::ALL, TestModel.thrift_write_consistency
14
+ end
15
+
16
+ test 'thrift_read_consistency' do
17
+ TestModel.read_consistency = :all
18
+ assert_equal Cassandra::Consistency::ALL, TestModel.thrift_read_consistency
19
+ end
20
+ end
@@ -2,7 +2,6 @@ require 'test_helper'
2
2
 
3
3
  class CassandraObject::IdentityTest < CassandraObject::TestCase
4
4
  test 'parse_key' do
5
- # p "Issue.parse_key('bb4cbbbc-b7c7-11e0-9ca2-732604ff41fe') = #{Issue.parse_key('bb4cbbbc-b7c7-11e0-9ca2-732604ff41fe').class}"
6
5
  assert_kind_of(
7
6
  CassandraObject::Identity::UUIDKeyFactory::UUID,
8
7
  Issue.parse_key('bb4cbbbc-b7c7-11e0-9ca2-732604ff41fe')
@@ -11,6 +10,12 @@ class CassandraObject::IdentityTest < CassandraObject::TestCase
11
10
  assert_nil Issue.parse_key('fail')
12
11
  end
13
12
 
13
+ test 'id' do
14
+ issue = Issue.create
15
+
16
+ assert_equal issue.key.to_s, issue.id
17
+ end
18
+
14
19
  test 'equality of new records' do
15
20
  assert_not_equal Issue.new, Issue.new
16
21
  end
@@ -0,0 +1,15 @@
1
+ require 'test_helper'
2
+
3
+ class CassandraObject::ValidationsTest < CassandraObject::TestCase
4
+ test 'create!' do
5
+ begin
6
+ Issue.validates(:description, presence: true)
7
+
8
+ Issue.create!(description: 'lol')
9
+
10
+ assert_raise(CassandraObject::RecordInvalid) { Issue.create!(description: '') }
11
+ ensure
12
+ Issue.reset_callbacks(:validate)
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gotime-cassandra_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-07-26 00:00:00.000000000Z
13
+ date: 2011-07-27 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &2152763200 !ruby/object:Gem::Requirement
17
+ requirement: &2165601520 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '3.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2152763200
25
+ version_requirements: *2165601520
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: cassandra
28
- requirement: &2152762740 !ruby/object:Gem::Requirement
28
+ requirement: &2165601060 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.11.3
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2152762740
36
+ version_requirements: *2165601060
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bundler
39
- requirement: &2152762280 !ruby/object:Gem::Requirement
39
+ requirement: &2165600600 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: 1.0.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2152762280
47
+ version_requirements: *2165600600
48
48
  description: Cassandra ActiveModel
49
49
  email: gems@gotime.com
50
50
  executables: []
@@ -91,7 +91,6 @@ files:
91
91
  - lib/cassandra_object/migrations/migration.rb
92
92
  - lib/cassandra_object/mocking.rb
93
93
  - lib/cassandra_object/persistence.rb
94
- - lib/cassandra_object/primary_key.rb
95
94
  - lib/cassandra_object/railtie.rb
96
95
  - lib/cassandra_object/schema.rb
97
96
  - lib/cassandra_object/schema/migration.rb
@@ -115,36 +114,15 @@ files:
115
114
  - lib/cassandra_object/types/time_type.rb
116
115
  - lib/cassandra_object/types/time_with_zone_type.rb
117
116
  - lib/cassandra_object/types/utf8_string_type.rb
118
- - lib/cassandra_object/validation.rb
119
- - test-old/active_model_test.rb
120
- - test-old/base_test.rb
121
- - test-old/basic_scenarios_test.rb
122
- - test-old/callbacks_test.rb
123
- - test-old/config/cassandra.in.sh
124
- - test-old/config/log4j.properties
125
- - test-old/config/storage-conf.xml
126
- - test-old/connection.rb
127
- - test-old/cursor_test.rb
128
- - test-old/dirty_test.rb
129
- - test-old/fixture_models.rb
130
- - test-old/identity/natural_key_factory_test.rb
131
- - test-old/index_test.rb
132
- - test-old/legacy/test_helper.rb
133
- - test-old/migration_test.rb
134
- - test-old/one_to_many_associations_test.rb
135
- - test-old/test_case.rb
136
- - test-old/test_helper.rb
137
- - test-old/time_test.rb
138
- - test-old/types_test.rb
139
- - test-old/validation_test.rb
140
- - test-old/z_mock_test.rb
117
+ - lib/cassandra_object/validations.rb
118
+ - test/active_model_test.rb
141
119
  - test/base_test.rb
142
120
  - test/batches_test.rb
143
121
  - test/connection_test.rb
122
+ - test/consistency_test.rb
144
123
  - test/finder_methods_test.rb
145
124
  - test/identity_test.rb
146
125
  - test/persistence_test.rb
147
- - test/primary_key_test.rb
148
126
  - test/test_helper.rb
149
127
  - test/timestamps_test.rb
150
128
  - test/types/array_type_test.rb
@@ -157,6 +135,7 @@ files:
157
135
  - test/types/string_type_test.rb
158
136
  - test/types/time_type_test.rb
159
137
  - test/types/utf8_string_type_test.rb
138
+ - test/validations_test.rb
160
139
  homepage: http://github.com/gotime/cassandra_object
161
140
  licenses: []
162
141
  post_install_message:
@@ -182,13 +161,14 @@ signing_key:
182
161
  specification_version: 3
183
162
  summary: Cassandra ActiveModel
184
163
  test_files:
164
+ - test/active_model_test.rb
185
165
  - test/base_test.rb
186
166
  - test/batches_test.rb
187
167
  - test/connection_test.rb
168
+ - test/consistency_test.rb
188
169
  - test/finder_methods_test.rb
189
170
  - test/identity_test.rb
190
171
  - test/persistence_test.rb
191
- - test/primary_key_test.rb
192
172
  - test/test_helper.rb
193
173
  - test/timestamps_test.rb
194
174
  - test/types/array_type_test.rb
@@ -201,3 +181,4 @@ test_files:
201
181
  - test/types/string_type_test.rb
202
182
  - test/types/time_type_test.rb
203
183
  - test/types/utf8_string_type_test.rb
184
+ - test/validations_test.rb
@@ -1,12 +0,0 @@
1
- module CassandraObject
2
- module PrimaryKey
3
- def id
4
- key.to_s
5
- end
6
-
7
- def id=(key)
8
- self.key = self.class.parse_key(key)
9
- id
10
- end
11
- end
12
- end
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- class BaseTest < CassandraObjectTestCase
4
- end
@@ -1,243 +0,0 @@
1
- require 'test_helper'
2
-
3
- class BasicScenariosTest < CassandraObjectTestCase
4
- def setup
5
- super
6
- @customer = Customer.create :first_name => "Michael",
7
- :last_name => "Koziarski",
8
- :date_of_birth => Date.parse("1980/08/15")
9
- @customer_key = @customer.key.to_s
10
-
11
- assert @customer.valid?
12
- end
13
-
14
- test "get on a non-existent key returns nil" do
15
- assert_nil Customer.get("THIS IS NOT A KEY")
16
- end
17
-
18
- test "a new object can be retrieved by key" do
19
- other_customer = Customer.get(@customer_key)
20
- assert_equal @customer, other_customer
21
-
22
- assert_equal "Michael", other_customer.first_name
23
- assert_equal "Koziarski", other_customer.last_name
24
- assert_equal Date.parse("1980-08-15"), other_customer.date_of_birth
25
- end
26
-
27
- test "a new object is included in Model.all" do
28
- assert Customer.all.include?(@customer)
29
- end
30
-
31
- test "date_of_birth is a date" do
32
- assert @customer.date_of_birth.is_a?(Date)
33
- end
34
-
35
- test "should not let you assign junk to a date column" do
36
- assert_raise(ArgumentError) do
37
- @customer.date_of_birth = 24.5
38
- end
39
- end
40
-
41
- test "should return nil for attributes without a value" do
42
- assert_nil @customer.preferences
43
- end
44
-
45
- test "should let a user set a Hash valued attribute" do
46
- val = {"a"=>"b"}
47
- @customer.preferences = val
48
- assert_equal val, @customer.preferences
49
- @customer.save
50
-
51
- other_customer = Customer.get(@customer_key)
52
- assert_equal val, other_customer.preferences
53
- end
54
-
55
- test "should validate strings passed to a typed column" do
56
- assert_raises(ArgumentError){
57
- @customer.date_of_birth = "35345908"
58
- }
59
- end
60
-
61
- test "should have a schema version of 0" do
62
- assert_equal 0, @customer.schema_version
63
- end
64
-
65
- test "multiget" do
66
- custs = Customer.multi_get([@customer_key, "This is not a key either"])
67
- customer, nothing = custs.values
68
-
69
- assert_equal @customer, customer
70
- assert_nil nothing
71
- end
72
-
73
- test "creating a new record starts with the right version" do
74
- @invoice = mock_invoice
75
-
76
- raw_result = Invoice.connection.get("Invoices", @invoice.key.to_s)
77
- assert_equal Invoice.current_schema_version, ActiveSupport::JSON.decode(raw_result["schema_version"])
78
- end
79
-
80
- test "to_param works" do
81
- invoice = mock_invoice
82
- param = invoice.to_param
83
- assert_match /[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}/, param
84
- assert_equal invoice.key, Invoice.parse_key(param)
85
- end
86
-
87
- test "setting a column_family" do
88
- class Foo < CassandraObject::Base
89
- self.column_family = 'Bar'
90
- end
91
- assert_equal 'Bar', Foo.column_family
92
- end
93
-
94
- context "destroying a customer with invoices" do
95
- setup do
96
- @invoice = mock_invoice
97
- @customer.invoices << @invoice
98
-
99
- @customer.destroy
100
- end
101
-
102
- should "Have removed the customer" do
103
- assert Customer.connection.get("Customers", @customer.key.to_s).empty?
104
- end
105
-
106
- should "Have removed the associations too" do
107
- assert_equal Hash.new, Customer.connection.get("CustomerRelationships", @customer.key.to_s)
108
- end
109
- end
110
-
111
- context "An object with a natural key" do
112
- setup do
113
- @payment = Payment.new :reference_number => "12345",
114
- :amount => 1001
115
- @payment.save!
116
- end
117
-
118
- should "create a natural key based on that attr" do
119
- assert_equal "12345", @payment.key.to_s
120
- end
121
-
122
- should "have a key equal to another object with that key" do
123
- p = Payment.new(:reference_number => "12345",
124
- :amount => 1001)
125
- p.save
126
-
127
- assert_equal @payment.key, p.key
128
- end
129
- end
130
-
131
- context "Model with no attributes" do
132
- setup do
133
- class Empty < CassandraObject::Base
134
- end
135
- end
136
-
137
- should "work" do
138
- e = Empty.new
139
- end
140
- end
141
-
142
- context "A model that allows nils" do
143
- setup do
144
- class Nilable < CassandraObject::Base
145
- attribute :user_id, :type => Integer, :allow_nil => true
146
- end
147
- end
148
-
149
- should "should be valid with a nil" do
150
- n = Nilable.new
151
- assert n.valid?
152
- end
153
- end
154
-
155
- context "A janky custom key factory" do
156
- setup do
157
- class JankyKeys
158
- def next_key(object)
159
- nil
160
- end
161
- end
162
- class JankyObject < CassandraObject::Base
163
- key JankyKeys.new
164
- end
165
- @object = JankyObject.new
166
- end
167
-
168
- should "raise an error on nil key" do
169
- assert_raises(RuntimeError) do
170
- @object.save
171
- end
172
- end
173
- end
174
-
175
- test "updating columns" do
176
- appt = Appointment.new(:start_time => Time.now, :title => 'emergency meeting')
177
- appt.save!
178
- appt = Appointment.get(appt.key)
179
- appt.start_time = Time.now + 1.hour
180
- appt.end_time = Time.now.utc + 5.hours
181
- appt.save!
182
- assert appt.reload.end_time.is_a?(ActiveSupport::TimeWithZone)
183
- end
184
-
185
- test "Saving a class with custom attributes uses the custom converter" do
186
- @customer.custom_storage = "hello"
187
- @customer.save
188
-
189
- raw_result = Customer.connection.get("Customers", @customer.key.to_s)
190
-
191
- assert_equal "olleh", raw_result["custom_storage"]
192
- assert_equal "hello", @customer.reload.custom_storage
193
-
194
- end
195
-
196
- context "setting valid consistency levels" do
197
- setup do
198
- class Senate < CassandraObject::Base
199
- consistency_levels :write => :quorum, :read => :quorum
200
- end
201
- end
202
-
203
- should "should have the settings" do
204
- assert_equal :quorum, Senate.write_consistency
205
- assert_equal :quorum, Senate.read_consistency
206
- end
207
- end
208
-
209
- context "setting invalid consistency levels" do
210
- context "invalid write consistency" do
211
- should "raise an error" do
212
- assert_raises(ArgumentError) do
213
- class BadWriter < CassandraObject::Base
214
- consistency_levels :write => :foo, :read => :quorum
215
- end
216
- end
217
- end
218
- end
219
-
220
- context "invalid read consistency" do
221
- should "raise an error" do
222
- assert_raises(ArgumentError) do
223
- class BadReader < CassandraObject::Base
224
- consistency_levels :write => :quorum, :read => :foo
225
- end
226
- end
227
- end
228
- end
229
- end
230
-
231
- test "ignoring columns we don't know about" do
232
- # if there's a column in the row that's not configured as an attribute, it should be ignored with no errors
233
-
234
- payment = Payment.new(:reference_number => 'abc123', :amount => 26)
235
- payment.save
236
-
237
- Payment.connection.insert(Payment.column_family, payment.key.to_s, {"bogus" => 'very bogus', "schema_version" => payment.schema_version.to_s}, :consistency => Payment.send(:write_consistency_for_thrift))
238
-
239
- assert_nothing_raised do
240
- Payment.get(payment.key)
241
- end
242
- end
243
- end