gotime-cassandra_object 2.2.0 → 2.2.1

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.
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
@@ -1,28 +0,0 @@
1
-
2
- class CassandraObjectTestCase < ActiveSupport::TestCase
3
- def teardown
4
- CassandraObject::Base.connection.clear_keyspace!
5
- end
6
-
7
- def mock_invoice
8
- Invoice.create :number=>Time.now.to_i*(rand(5)), :total=>Time.now.to_f
9
- end
10
-
11
- def connection
12
- CassandraObject::Base.connection
13
- end
14
-
15
- def assert_ordered(expected_object_order, actual_order, to_s_before_comparing = true)
16
- # don't use map! so we don't go changing user's arguments
17
- if to_s_before_comparing
18
- expected_object_order = expected_object_order.map(&:to_s)
19
- actual_order = actual_order.map(&:to_s)
20
- end
21
-
22
- assert_equal Set.new(expected_object_order), Set.new(actual_order), "Collections weren't equal"
23
- actual_indexes = actual_order.map do |e|
24
- expected_object_order.index(e)
25
- end
26
- assert_equal expected_object_order, actual_order, "Collection was ordered incorrectly: #{actual_indexes.inspect}"
27
- end
28
- end
@@ -1,16 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
-
4
- Bundler.setup
5
-
6
- require 'cassandra_object'
7
- require 'connection'
8
-
9
- require 'test/unit'
10
- require 'active_support/test_case'
11
- require 'shoulda'
12
-
13
- require 'fixture_models'
14
- require 'pp'
15
-
16
- require 'test_case'
@@ -1,32 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TimeTest < CassandraObjectTestCase
4
-
5
- test "new raises an error" do
6
- begin
7
- appt = Appointment.new :start_time => 1
8
- flunk "Should have failed to save"
9
- rescue ArgumentError => e
10
- assert_equal "CassandraObject::TimeType requires a Time", e.message
11
- end
12
- end
13
-
14
- test "the attribute writer raises an error" do
15
- begin
16
- appt = Appointment.new
17
- appt.start_time = 1
18
- flunk "Should have failed to save"
19
- rescue ArgumentError => e
20
- assert_equal "CassandraObject::TimeType requires a Time", e.message
21
- end
22
- end
23
-
24
- test "Time's should be round-trip-able" do
25
- appt = Appointment.new :start_time => (t = Time.now.utc), :title => "team meeting"
26
- appt.save!
27
- appt2 = Appointment.get(appt.key)
28
-
29
- assert_equal appt.start_time.class, appt2.start_time.class
30
- assert_equal appt.start_time, appt2.start_time
31
- end
32
- end
@@ -1,252 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TypeTest < CassandraObjectTestCase
4
- context "IntegerType" do
5
- context "encode" do
6
-
7
- should "return an int with no errors" do
8
- assert_nothing_raised {
9
- i = 12
10
- assert_equal i.to_s, CassandraObject::IntegerType.encode(i)
11
- }
12
- end
13
-
14
- should "raises an error on non-Integer input" do
15
- assert_raises(ArgumentError) { CassandraObject::IntegerType::encode('')}
16
- end
17
-
18
- should "work with Bignums" do
19
- assert_nothing_raised {
20
- i = 2**32
21
- assert_equal i.to_s, CassandraObject::IntegerType.encode(i)
22
- }
23
- end
24
-
25
- should "work with Fixnums" do
26
- assert_nothing_raised {
27
- i = 2**16
28
- assert_equal Fixnum, i.class
29
- assert_equal i.to_s, CassandraObject::IntegerType.encode(i)
30
- }
31
- end
32
- end
33
-
34
- context "decode" do
35
- should "work with an int" do
36
- assert_nothing_raised {
37
- assert_equal 12, CassandraObject::IntegerType.decode('12')
38
- }
39
- end
40
-
41
- should "work with Bignums" do
42
- assert_nothing_raised {
43
- assert_equal 2**32, CassandraObject::IntegerType.decode((2**32).to_s)
44
- }
45
- end
46
-
47
- should "reject trash" do
48
- assert_raises(ArgumentError) {
49
- CassandraObject::IntegerType.decode('asdf')
50
- }
51
- end
52
-
53
- should "work on a negative number" do
54
- assert_equal -1, CassandraObject::IntegerType.decode('-1')
55
- end
56
-
57
- should "work with a leading +" do
58
- assert_equal 1, CassandraObject::IntegerType.decode('+1')
59
- end
60
- end
61
- end
62
-
63
- context "FloatType" do
64
- context "encode" do
65
- should "should reject an Integer" do
66
- assert_raises(ArgumentError) {
67
- CassandraObject::FloatType.encode(1)
68
- }
69
- end
70
-
71
- should "reject a string" do
72
- assert_raises(ArgumentError) {
73
- CassandraObject::FloatType.encode('asdf')
74
- }
75
- end
76
-
77
- should "return a string" do
78
- assert_equal '1.0', CassandraObject::FloatType.encode(1.0)
79
- end
80
-
81
- should "accept a negative number" do
82
- assert_equal '-1.0', CassandraObject::FloatType.encode(-1.0)
83
- end
84
- end
85
-
86
- context "decode" do
87
- should "reject a non-float" do
88
- assert_raises(ArgumentError) {
89
- CassandraObject::FloatType.decode('asdf')
90
- }
91
- end
92
-
93
- should "work on a float" do
94
- assert_equal 1.2, CassandraObject::FloatType.decode('1.2')
95
- end
96
-
97
- should "work on a negative number" do
98
- assert_equal -1.2, CassandraObject::FloatType.decode('-1.2')
99
- end
100
-
101
- should "work with a leading +" do
102
- assert_equal 1.2, CassandraObject::FloatType.decode('+1.2')
103
- end
104
- end
105
- end
106
-
107
- context "DateType" do
108
- context "encode" do
109
- should "accept a valid Date object" do
110
- assert_nothing_raised {
111
- CassandraObject::DateType.encode(Date.today)
112
- }
113
- end
114
-
115
- should "reject a String, even if it looks like a date" do
116
- assert_raises(ArgumentError) { CassandraObject::DateType.encode('2009-10-31') }
117
- end
118
-
119
- should "reject an Integer" do
120
- assert_raises(ArgumentError) { CassandraObject::DateType.encode(12) }
121
- end
122
-
123
- should "return a properly formatted string" do
124
- str = '2009-10-31'
125
- date = Date.strptime(str)
126
- assert_equal str, CassandraObject::DateType.encode(date)
127
- end
128
- end
129
-
130
- context "decode" do
131
- should "work on a properly formatted string" do
132
- s = '2009-10-31'
133
- assert_equal Date.strptime(s), CassandraObject::DateType.decode(s)
134
- end
135
-
136
- should "reject a badly formatted string" do
137
- assert_raises(ArgumentError) {
138
- CassandraObject::DateType.decode('asdf')
139
- }
140
- end
141
- end
142
- end
143
-
144
- context "TimeType" do
145
- context "#encode" do
146
- should "accept a Time" do
147
- assert_nothing_raised {CassandraObject::TimeType.encode(Time.now)}
148
- end
149
-
150
- should "return a properly formated string for a legit time" do
151
- t = Time.now
152
- formatted = t.xmlschema(6)
153
- assert_equal(formatted, CassandraObject::TimeType.encode(t))
154
- end
155
-
156
- should "reject things other than Time" do
157
- assert_raises(ArgumentError) {
158
- CassandraObject::TimeType.encode(1)
159
- }
160
- assert_raises(ArgumentError) {
161
- CassandraObject::TimeType.encode('asdf')
162
- }
163
- end
164
- end
165
-
166
- context "#decode" do
167
- should "parse a valid string and return a Time (with timezone)" do
168
- time = Time.xmlschema(str = "2009-11-05T13:24:07-08:00")
169
- assert_nothing_raised {
170
- assert_equal time, CassandraObject::TimeType.decode(str)
171
- }
172
- end
173
-
174
- should "parse a valid string and return a Time (with UTC)" do
175
- time = Time.xmlschema(str = "2009-11-05T13:24:07Z")
176
- assert_nothing_raised {
177
- assert_equal time, CassandraObject::TimeType.decode(str)
178
- }
179
- end
180
- end
181
- end
182
-
183
- context "HashType" do
184
- context "encode" do
185
- should "handle an empty Hash" do
186
- assert_nothing_raised {
187
- assert_equal(ActiveSupport::JSON.encode({}), CassandraObject::HashType.encode({}))
188
- }
189
- end
190
-
191
- should "handle string keys" do
192
- assert_nothing_raised {
193
- h = {'foo' => 'bar'}
194
- assert_equal(ActiveSupport::JSON.encode(h), CassandraObject::HashType.encode(h))
195
- }
196
- end
197
-
198
- should "handle symbol keys" do
199
- assert_nothing_raised {
200
- h = {:foo => 'bar'}
201
- assert_equal(ActiveSupport::JSON.encode(h), CassandraObject::HashType.encode(h))
202
- }
203
- end
204
- end
205
- end
206
-
207
- context "BooleanType" do
208
- context "encode" do
209
- should "handle true" do
210
- assert_nothing_raised {
211
- assert_equal '1', CassandraObject::BooleanType.encode(true)
212
- }
213
- end
214
-
215
- should "handle false" do
216
- assert_nothing_raised {
217
- assert_equal '0', CassandraObject::BooleanType.encode(false)
218
- }
219
- end
220
-
221
- should "handle nil" do
222
- assert_nothing_raised {
223
- assert_equal '0', CassandraObject::BooleanType.encode(nil)
224
- }
225
- end
226
-
227
- should "not handle normal objects" do
228
- assert_raises(ArgumentError) {
229
- assert_equal '1', CassandraObject::BooleanType.encode(Object.new)
230
- }
231
- end
232
- end
233
-
234
- context "decode" do
235
- should "handle true" do
236
- assert_nothing_raised {
237
- assert_equal true, CassandraObject::BooleanType.decode('1')
238
- }
239
- end
240
-
241
- should "handle false" do
242
- assert_nothing_raised {
243
- assert_equal false, CassandraObject::BooleanType.decode('0')
244
- }
245
- end
246
-
247
- should "handle bad data as false" do
248
- assert_equal false, CassandraObject::BooleanType.decode('')
249
- end
250
- end
251
- end
252
- end
@@ -1,25 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ValidationTest < CassandraObjectTestCase
4
-
5
- test "save! raises an error" do
6
- begin
7
- customer = Customer.new :first_name=>"steve", :date_of_birth=>Date.parse("1979/12/25")
8
- customer.save!
9
- flunk "Should have failed to save"
10
- rescue CassandraObject::Validation::RecordInvalid => e
11
- assert_equal customer, e.record
12
- end
13
- end
14
-
15
- test "create! raises an error" do
16
- begin
17
- customer = Customer.create! :first_name=>"steve", :date_of_birth=>Date.parse("1979/12/25")
18
- flunk "Should have failed to create!"
19
- rescue CassandraObject::Validation::RecordInvalid => e
20
- assert_kind_of Customer, e.record
21
- end
22
- end
23
-
24
-
25
- end
@@ -1,36 +0,0 @@
1
- # The filename is so that this test gets loaded last, since it depends on all the other tests.
2
- # Suggestions of less janky ways to do this would be appreciated. -rk
3
-
4
- require 'test_helper'
5
-
6
- class MockTest < CassandraObjectTestCase
7
- context CassandraObject::Base do
8
- should "respond to use_mock!" do
9
- assert CassandraObject::Base.respond_to?(:use_mock!)
10
- end
11
- context "use_mock!" do
12
- should "set the connection_class" do
13
- CassandraObject::Base.use_mock!
14
- assert_equal Cassandra::Mock, CassandraObject::Base.connection_class
15
- CassandraObject::Base.use_mock!(false)
16
- end
17
- end
18
- end
19
- end
20
-
21
- module MockTestMixin
22
- def setup
23
- CassandraObject::Base.use_mock!
24
- super
25
- end
26
-
27
- def teardown
28
- CassandraObject::Base.use_mock!(false)
29
- end
30
- end
31
-
32
- %w[BasicScenarios Cursor Dirty Index Migration OneToManyAssociations Time Types Validation].each do |test|
33
- klass = Class.new(Kernel.const_get(test + 'Test'))
34
- klass.send(:include, MockTestMixin)
35
- Kernel.const_set(test + 'WithMockTest', klass)
36
- end
@@ -1,9 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CassandraObject::PrimaryKeyTest < CassandraObject::TestCase
4
- test 'id' do
5
- issue = Issue.create
6
-
7
- assert_equal issue.key.to_s, issue.id
8
- end
9
- end