massive_record 0.2.1 → 0.2.2.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +58 -2
- data/Gemfile.lock +17 -17
- data/README.md +98 -41
- data/lib/massive_record.rb +2 -1
- data/lib/massive_record/adapters/thrift/hbase/hbase.rb +2425 -2154
- data/lib/massive_record/adapters/thrift/hbase/hbase_constants.rb +3 -3
- data/lib/massive_record/adapters/thrift/hbase/hbase_types.rb +195 -195
- data/lib/massive_record/adapters/thrift/row.rb +35 -4
- data/lib/massive_record/adapters/thrift/table.rb +49 -12
- data/lib/massive_record/orm/attribute_methods.rb +77 -5
- data/lib/massive_record/orm/attribute_methods/cast_numbers_on_write.rb +24 -0
- data/lib/massive_record/orm/attribute_methods/dirty.rb +18 -0
- data/lib/massive_record/orm/attribute_methods/time_zone_conversion.rb +24 -3
- data/lib/massive_record/orm/attribute_methods/write.rb +8 -1
- data/lib/massive_record/orm/base.rb +62 -8
- data/lib/massive_record/orm/column.rb +7 -11
- data/lib/massive_record/orm/default_id.rb +1 -1
- data/lib/massive_record/orm/embedded.rb +66 -0
- data/lib/massive_record/orm/errors.rb +17 -0
- data/lib/massive_record/orm/finders.rb +124 -71
- data/lib/massive_record/orm/finders/rescue_missing_table_on_find.rb +1 -1
- data/lib/massive_record/orm/finders/scope.rb +58 -34
- data/lib/massive_record/orm/id_factory.rb +22 -105
- data/lib/massive_record/orm/id_factory/atomic_incrementation.rb +117 -0
- data/lib/massive_record/orm/id_factory/timestamp.rb +60 -0
- data/lib/massive_record/orm/identity_map.rb +256 -0
- data/lib/massive_record/orm/log_subscriber.rb +18 -0
- data/lib/massive_record/orm/observer.rb +69 -0
- data/lib/massive_record/orm/persistence.rb +47 -119
- data/lib/massive_record/orm/persistence/operations.rb +100 -0
- data/lib/massive_record/orm/persistence/operations/atomic_operation.rb +71 -0
- data/lib/massive_record/orm/persistence/operations/destroy.rb +17 -0
- data/lib/massive_record/orm/persistence/operations/embedded/destroy.rb +26 -0
- data/lib/massive_record/orm/persistence/operations/embedded/insert.rb +27 -0
- data/lib/massive_record/orm/persistence/operations/embedded/operation_helpers.rb +66 -0
- data/lib/massive_record/orm/persistence/operations/embedded/reload.rb +39 -0
- data/lib/massive_record/orm/persistence/operations/embedded/update.rb +29 -0
- data/lib/massive_record/orm/persistence/operations/insert.rb +19 -0
- data/lib/massive_record/orm/persistence/operations/reload.rb +26 -0
- data/lib/massive_record/orm/persistence/operations/suppress.rb +15 -0
- data/lib/massive_record/orm/persistence/operations/table_operation_helpers.rb +106 -0
- data/lib/massive_record/orm/persistence/operations/update.rb +25 -0
- data/lib/massive_record/orm/query_instrumentation.rb +26 -49
- data/lib/massive_record/orm/raw_data.rb +47 -0
- data/lib/massive_record/orm/relations.rb +4 -0
- data/lib/massive_record/orm/relations/interface.rb +134 -0
- data/lib/massive_record/orm/relations/metadata.rb +58 -12
- data/lib/massive_record/orm/relations/proxy.rb +17 -12
- data/lib/massive_record/orm/relations/proxy/embedded_in.rb +54 -0
- data/lib/massive_record/orm/relations/proxy/embedded_in_polymorphic.rb +15 -0
- data/lib/massive_record/orm/relations/proxy/embeds_many.rb +215 -0
- data/lib/massive_record/orm/relations/proxy/references_many.rb +112 -88
- data/lib/massive_record/orm/relations/proxy/references_one.rb +1 -1
- data/lib/massive_record/orm/relations/proxy/references_one_polymorphic.rb +1 -1
- data/lib/massive_record/orm/relations/proxy_collection.rb +84 -0
- data/lib/massive_record/orm/schema/column_family.rb +3 -2
- data/lib/massive_record/orm/schema/{column_interface.rb → embedded_interface.rb} +38 -4
- data/lib/massive_record/orm/schema/field.rb +2 -0
- data/lib/massive_record/orm/schema/table_interface.rb +19 -2
- data/lib/massive_record/orm/single_table_inheritance.rb +37 -2
- data/lib/massive_record/orm/timestamps.rb +17 -7
- data/lib/massive_record/orm/validations.rb +4 -0
- data/lib/massive_record/orm/validations/associated.rb +50 -0
- data/lib/massive_record/rails/railtie.rb +31 -0
- data/lib/massive_record/version.rb +1 -1
- data/lib/massive_record/wrapper/cell.rb +8 -1
- data/massive_record.gemspec +4 -4
- data/spec/adapter/thrift/atomic_increment_spec.rb +16 -0
- data/spec/adapter/thrift/table_find_spec.rb +14 -2
- data/spec/adapter/thrift/table_spec.rb +6 -6
- data/spec/adapter/thrift/utf8_encoding_of_id_spec.rb +71 -0
- data/spec/orm/cases/attribute_methods_spec.rb +215 -22
- data/spec/orm/cases/auto_generate_id_spec.rb +1 -1
- data/spec/orm/cases/change_id_spec.rb +62 -0
- data/spec/orm/cases/default_id_spec.rb +25 -6
- data/spec/orm/cases/default_values_spec.rb +6 -3
- data/spec/orm/cases/dirty_spec.rb +150 -102
- data/spec/orm/cases/embedded_spec.rb +250 -0
- data/spec/orm/cases/{finder_default_scope.rb → finder_default_scope_spec.rb} +4 -0
- data/spec/orm/cases/finder_scope_spec.rb +96 -29
- data/spec/orm/cases/finders_spec.rb +57 -10
- data/spec/orm/cases/id_factory/atomic_incrementation_spec.rb +72 -0
- data/spec/orm/cases/id_factory/timestamp_spec.rb +61 -0
- data/spec/orm/cases/identity_map/identity_map_spec.rb +357 -0
- data/spec/orm/cases/identity_map/middleware_spec.rb +74 -0
- data/spec/orm/cases/log_subscriber_spec.rb +15 -2
- data/spec/orm/cases/observing_spec.rb +61 -0
- data/spec/orm/cases/persistence_spec.rb +151 -60
- data/spec/orm/cases/raw_data_spec.rb +58 -0
- data/spec/orm/cases/single_table_inheritance_spec.rb +58 -2
- data/spec/orm/cases/table_spec.rb +3 -3
- data/spec/orm/cases/time_zone_awareness_spec.rb +27 -0
- data/spec/orm/cases/timestamps_spec.rb +23 -109
- data/spec/orm/cases/validation_spec.rb +9 -0
- data/spec/orm/models/address.rb +5 -1
- data/spec/orm/models/address_with_timestamp.rb +12 -0
- data/spec/orm/models/car.rb +5 -0
- data/spec/orm/models/person.rb +13 -1
- data/spec/orm/models/person_with_timestamp.rb +4 -2
- data/spec/orm/models/test_class.rb +1 -0
- data/spec/orm/persistence/operations/atomic_operation_spec.rb +58 -0
- data/spec/orm/persistence/operations/destroy_spec.rb +22 -0
- data/spec/orm/persistence/operations/embedded/destroy_spec.rb +71 -0
- data/spec/orm/persistence/operations/embedded/insert_spec.rb +59 -0
- data/spec/orm/persistence/operations/embedded/operation_helpers_spec.rb +92 -0
- data/spec/orm/persistence/operations/embedded/reload_spec.rb +67 -0
- data/spec/orm/persistence/operations/embedded/update_spec.rb +60 -0
- data/spec/orm/persistence/operations/insert_spec.rb +31 -0
- data/spec/orm/persistence/operations/reload_spec.rb +48 -0
- data/spec/orm/persistence/operations/suppress_spec.rb +17 -0
- data/spec/orm/persistence/operations/table_operation_helpers_spec.rb +98 -0
- data/spec/orm/persistence/operations/update_spec.rb +25 -0
- data/spec/orm/persistence/operations_spec.rb +58 -0
- data/spec/orm/relations/interface_spec.rb +188 -0
- data/spec/orm/relations/metadata_spec.rb +92 -15
- data/spec/orm/relations/proxy/embedded_in_polymorphic_spec.rb +37 -0
- data/spec/orm/relations/proxy/embedded_in_spec.rb +66 -0
- data/spec/orm/relations/proxy/embeds_many_spec.rb +651 -0
- data/spec/orm/relations/proxy/references_many_spec.rb +466 -2
- data/spec/orm/schema/column_family_spec.rb +21 -0
- data/spec/orm/schema/embedded_interface_spec.rb +181 -0
- data/spec/orm/schema/field_spec.rb +7 -0
- data/spec/orm/schema/table_interface_spec.rb +31 -1
- data/spec/shared/orm/id_factories.rb +44 -0
- data/spec/shared/orm/model_with_timestamps.rb +132 -0
- data/spec/shared/orm/persistence/a_persistence_embedded_operation_class.rb +3 -0
- data/spec/shared/orm/persistence/a_persistence_operation_class.rb +11 -0
- data/spec/shared/orm/persistence/a_persistence_table_operation_class.rb +11 -0
- data/spec/shared/orm/relations/proxy.rb +9 -2
- data/spec/spec_helper.rb +9 -0
- data/spec/support/mock_massive_record_connection.rb +2 -1
- metadata +106 -21
- data/spec/orm/cases/column_spec.rb +0 -49
- data/spec/orm/cases/id_factory_spec.rb +0 -92
- data/spec/orm/schema/column_interface_spec.rb +0 -136
@@ -0,0 +1,11 @@
|
|
1
|
+
shared_examples_for "a persistence operation class" do
|
2
|
+
describe described_class do
|
3
|
+
subject { described_class }
|
4
|
+
|
5
|
+
its(:included_modules) { should include MassiveRecord::ORM::Persistence::Operations }
|
6
|
+
end
|
7
|
+
|
8
|
+
it "responds to execute" do
|
9
|
+
subject.execute
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
shared_examples_for "a persistence table operation class" do
|
2
|
+
it_should_behave_like "a persistence operation class"
|
3
|
+
|
4
|
+
describe described_class do
|
5
|
+
subject { described_class }
|
6
|
+
|
7
|
+
its(:included_modules) {
|
8
|
+
should include MassiveRecord::ORM::Persistence::Operations::TableOperationHelpers
|
9
|
+
}
|
10
|
+
end
|
11
|
+
end
|
@@ -39,10 +39,14 @@ shared_examples_for "relation proxy" do
|
|
39
39
|
|
40
40
|
|
41
41
|
describe "#reset" do
|
42
|
-
it "
|
42
|
+
it "alters the loaded state" do
|
43
43
|
subject.loaded!
|
44
44
|
subject.reset
|
45
|
-
|
45
|
+
if subject.metadata.embedded_in?
|
46
|
+
should be_loaded
|
47
|
+
else
|
48
|
+
should_not be_loaded
|
49
|
+
end
|
46
50
|
end
|
47
51
|
|
48
52
|
it "should reset the proxy_target" do
|
@@ -59,6 +63,7 @@ shared_examples_for "relation proxy" do
|
|
59
63
|
end
|
60
64
|
|
61
65
|
it "should reset the proxy" do
|
66
|
+
subject.should_receive(:can_find_proxy_target?).and_return false
|
62
67
|
subject.should_receive :reset
|
63
68
|
subject.reload
|
64
69
|
end
|
@@ -121,6 +126,8 @@ shared_examples_for "relation proxy" do
|
|
121
126
|
let(:new_proxy_target) { subject.represents_a_collection? ? [subject.proxy_target_class.new] : subject.proxy_target_class.new }
|
122
127
|
|
123
128
|
before do
|
129
|
+
new_proxy_target.each { |target| target.stub(:valid?).and_return true } if new_proxy_target.is_a? Array
|
130
|
+
old_proxy_target.each { |target| target.stub(:valid?).and_return true } if new_proxy_target.is_a? Array
|
124
131
|
subject.proxy_target = old_proxy_target
|
125
132
|
end
|
126
133
|
|
data/spec/spec_helper.rb
CHANGED
@@ -14,3 +14,12 @@ end
|
|
14
14
|
Dir["#{SPEC_DIR}/orm/models/*.rb"].each { |f| require f }
|
15
15
|
Dir["#{SPEC_DIR}/support/**/*.rb"].each { |f| require f }
|
16
16
|
Dir["#{SPEC_DIR}/shared/**/*.rb"].each { |f| require f }
|
17
|
+
|
18
|
+
|
19
|
+
MassiveRecord::ORM::IdentityMap.enabled = false
|
20
|
+
if MassiveRecord::ORM::IdentityMap.enabled?
|
21
|
+
Rspec.configure do |c|
|
22
|
+
puts "IdentityMap is enabled!"
|
23
|
+
c.before { MassiveRecord::ORM::IdentityMap.clear }
|
24
|
+
end
|
25
|
+
end
|
@@ -21,7 +21,8 @@ module MockMassiveRecordConnection
|
|
21
21
|
# Setting up a mock connection when asked for new
|
22
22
|
mock_connection = mock(MassiveRecord::Wrapper::Connection,
|
23
23
|
:open => true,
|
24
|
-
:tables => MassiveRecord::ORM::Table.descendants.collect(&:table_name)
|
24
|
+
:tables => MassiveRecord::ORM::Table.descendants.collect(&:table_name),
|
25
|
+
:atomicIncrement => 1
|
25
26
|
)
|
26
27
|
MassiveRecord::Wrapper::Connection.stub(:new).and_return(mock_connection)
|
27
28
|
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: massive_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 0.2.
|
4
|
+
prerelease: 6
|
5
|
+
version: 0.2.2.rc1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Companybook
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-10-07 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -19,9 +19,9 @@ dependencies:
|
|
19
19
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
|
-
- - "
|
22
|
+
- - "="
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 0.
|
24
|
+
version: 0.6.0
|
25
25
|
type: :runtime
|
26
26
|
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -30,9 +30,9 @@ dependencies:
|
|
30
30
|
requirement: &id002 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ~>
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
35
|
+
version: 3.0.7
|
36
36
|
type: :runtime
|
37
37
|
version_requirements: *id002
|
38
38
|
- !ruby/object:Gem::Dependency
|
@@ -41,9 +41,9 @@ dependencies:
|
|
41
41
|
requirement: &id003 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
46
|
+
version: 3.0.7
|
47
47
|
type: :runtime
|
48
48
|
version_requirements: *id003
|
49
49
|
- !ruby/object:Gem::Dependency
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: "0"
|
69
69
|
type: :development
|
70
70
|
version_requirements: *id005
|
71
71
|
description: HBase Ruby client API
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- lib/massive_record/adapters/thrift/scanner.rb
|
100
100
|
- lib/massive_record/adapters/thrift/table.rb
|
101
101
|
- lib/massive_record/orm/attribute_methods.rb
|
102
|
+
- lib/massive_record/orm/attribute_methods/cast_numbers_on_write.rb
|
102
103
|
- lib/massive_record/orm/attribute_methods/dirty.rb
|
103
104
|
- lib/massive_record/orm/attribute_methods/read.rb
|
104
105
|
- lib/massive_record/orm/attribute_methods/time_zone_conversion.rb
|
@@ -112,26 +113,49 @@ files:
|
|
112
113
|
- lib/massive_record/orm/column.rb
|
113
114
|
- lib/massive_record/orm/config.rb
|
114
115
|
- lib/massive_record/orm/default_id.rb
|
116
|
+
- lib/massive_record/orm/embedded.rb
|
115
117
|
- lib/massive_record/orm/errors.rb
|
116
118
|
- lib/massive_record/orm/finders.rb
|
117
119
|
- lib/massive_record/orm/finders/rescue_missing_table_on_find.rb
|
118
120
|
- lib/massive_record/orm/finders/scope.rb
|
119
121
|
- lib/massive_record/orm/id_factory.rb
|
122
|
+
- lib/massive_record/orm/id_factory/atomic_incrementation.rb
|
123
|
+
- lib/massive_record/orm/id_factory/timestamp.rb
|
124
|
+
- lib/massive_record/orm/identity_map.rb
|
120
125
|
- lib/massive_record/orm/log_subscriber.rb
|
126
|
+
- lib/massive_record/orm/observer.rb
|
121
127
|
- lib/massive_record/orm/persistence.rb
|
128
|
+
- lib/massive_record/orm/persistence/operations.rb
|
129
|
+
- lib/massive_record/orm/persistence/operations/atomic_operation.rb
|
130
|
+
- lib/massive_record/orm/persistence/operations/destroy.rb
|
131
|
+
- lib/massive_record/orm/persistence/operations/embedded/destroy.rb
|
132
|
+
- lib/massive_record/orm/persistence/operations/embedded/insert.rb
|
133
|
+
- lib/massive_record/orm/persistence/operations/embedded/operation_helpers.rb
|
134
|
+
- lib/massive_record/orm/persistence/operations/embedded/reload.rb
|
135
|
+
- lib/massive_record/orm/persistence/operations/embedded/update.rb
|
136
|
+
- lib/massive_record/orm/persistence/operations/insert.rb
|
137
|
+
- lib/massive_record/orm/persistence/operations/reload.rb
|
138
|
+
- lib/massive_record/orm/persistence/operations/suppress.rb
|
139
|
+
- lib/massive_record/orm/persistence/operations/table_operation_helpers.rb
|
140
|
+
- lib/massive_record/orm/persistence/operations/update.rb
|
122
141
|
- lib/massive_record/orm/query_instrumentation.rb
|
142
|
+
- lib/massive_record/orm/raw_data.rb
|
123
143
|
- lib/massive_record/orm/relations.rb
|
124
144
|
- lib/massive_record/orm/relations/interface.rb
|
125
145
|
- lib/massive_record/orm/relations/metadata.rb
|
126
146
|
- lib/massive_record/orm/relations/proxy.rb
|
147
|
+
- lib/massive_record/orm/relations/proxy/embedded_in.rb
|
148
|
+
- lib/massive_record/orm/relations/proxy/embedded_in_polymorphic.rb
|
149
|
+
- lib/massive_record/orm/relations/proxy/embeds_many.rb
|
127
150
|
- lib/massive_record/orm/relations/proxy/references_many.rb
|
128
151
|
- lib/massive_record/orm/relations/proxy/references_one.rb
|
129
152
|
- lib/massive_record/orm/relations/proxy/references_one_polymorphic.rb
|
153
|
+
- lib/massive_record/orm/relations/proxy_collection.rb
|
130
154
|
- lib/massive_record/orm/schema.rb
|
131
155
|
- lib/massive_record/orm/schema/column_families.rb
|
132
156
|
- lib/massive_record/orm/schema/column_family.rb
|
133
|
-
- lib/massive_record/orm/schema/column_interface.rb
|
134
157
|
- lib/massive_record/orm/schema/common_interface.rb
|
158
|
+
- lib/massive_record/orm/schema/embedded_interface.rb
|
135
159
|
- lib/massive_record/orm/schema/field.rb
|
136
160
|
- lib/massive_record/orm/schema/fields.rb
|
137
161
|
- lib/massive_record/orm/schema/table_interface.rb
|
@@ -139,6 +163,7 @@ files:
|
|
139
163
|
- lib/massive_record/orm/table.rb
|
140
164
|
- lib/massive_record/orm/timestamps.rb
|
141
165
|
- lib/massive_record/orm/validations.rb
|
166
|
+
- lib/massive_record/orm/validations/associated.rb
|
142
167
|
- lib/massive_record/rails/controller_runtime.rb
|
143
168
|
- lib/massive_record/rails/railtie.rb
|
144
169
|
- lib/massive_record/spec/support/simple_database_cleaner.rb
|
@@ -155,25 +180,32 @@ files:
|
|
155
180
|
- spec/adapter/thrift/connection_spec.rb
|
156
181
|
- spec/adapter/thrift/table_find_spec.rb
|
157
182
|
- spec/adapter/thrift/table_spec.rb
|
183
|
+
- spec/adapter/thrift/utf8_encoding_of_id_spec.rb
|
158
184
|
- spec/config.yml.example
|
159
185
|
- spec/orm/cases/attribute_methods_spec.rb
|
160
186
|
- spec/orm/cases/auto_generate_id_spec.rb
|
161
187
|
- spec/orm/cases/base_spec.rb
|
162
188
|
- spec/orm/cases/callbacks_spec.rb
|
163
|
-
- spec/orm/cases/
|
189
|
+
- spec/orm/cases/change_id_spec.rb
|
164
190
|
- spec/orm/cases/config_spec.rb
|
165
191
|
- spec/orm/cases/default_id_spec.rb
|
166
192
|
- spec/orm/cases/default_values_spec.rb
|
167
193
|
- spec/orm/cases/dirty_spec.rb
|
194
|
+
- spec/orm/cases/embedded_spec.rb
|
168
195
|
- spec/orm/cases/encoding_spec.rb
|
169
|
-
- spec/orm/cases/
|
196
|
+
- spec/orm/cases/finder_default_scope_spec.rb
|
170
197
|
- spec/orm/cases/finder_scope_spec.rb
|
171
198
|
- spec/orm/cases/finders_spec.rb
|
172
199
|
- spec/orm/cases/i18n_spec.rb
|
173
|
-
- spec/orm/cases/
|
200
|
+
- spec/orm/cases/id_factory/atomic_incrementation_spec.rb
|
201
|
+
- spec/orm/cases/id_factory/timestamp_spec.rb
|
202
|
+
- spec/orm/cases/identity_map/identity_map_spec.rb
|
203
|
+
- spec/orm/cases/identity_map/middleware_spec.rb
|
174
204
|
- spec/orm/cases/log_subscriber_spec.rb
|
175
205
|
- spec/orm/cases/mass_assignment_security_spec.rb
|
206
|
+
- spec/orm/cases/observing_spec.rb
|
176
207
|
- spec/orm/cases/persistence_spec.rb
|
208
|
+
- spec/orm/cases/raw_data_spec.rb
|
177
209
|
- spec/orm/cases/single_table_inheritance_spec.rb
|
178
210
|
- spec/orm/cases/table_spec.rb
|
179
211
|
- spec/orm/cases/time_zone_awareness_spec.rb
|
@@ -183,25 +215,48 @@ files:
|
|
183
215
|
- spec/orm/coders/json_spec.rb
|
184
216
|
- spec/orm/coders/yaml_spec.rb
|
185
217
|
- spec/orm/models/address.rb
|
218
|
+
- spec/orm/models/address_with_timestamp.rb
|
186
219
|
- spec/orm/models/best_friend.rb
|
220
|
+
- spec/orm/models/car.rb
|
187
221
|
- spec/orm/models/friend.rb
|
188
222
|
- spec/orm/models/model_without_default_id.rb
|
189
223
|
- spec/orm/models/person.rb
|
190
224
|
- spec/orm/models/person_with_timestamp.rb
|
191
225
|
- spec/orm/models/test_class.rb
|
226
|
+
- spec/orm/persistence/operations/atomic_operation_spec.rb
|
227
|
+
- spec/orm/persistence/operations/destroy_spec.rb
|
228
|
+
- spec/orm/persistence/operations/embedded/destroy_spec.rb
|
229
|
+
- spec/orm/persistence/operations/embedded/insert_spec.rb
|
230
|
+
- spec/orm/persistence/operations/embedded/operation_helpers_spec.rb
|
231
|
+
- spec/orm/persistence/operations/embedded/reload_spec.rb
|
232
|
+
- spec/orm/persistence/operations/embedded/update_spec.rb
|
233
|
+
- spec/orm/persistence/operations/insert_spec.rb
|
234
|
+
- spec/orm/persistence/operations/reload_spec.rb
|
235
|
+
- spec/orm/persistence/operations/suppress_spec.rb
|
236
|
+
- spec/orm/persistence/operations/table_operation_helpers_spec.rb
|
237
|
+
- spec/orm/persistence/operations/update_spec.rb
|
238
|
+
- spec/orm/persistence/operations_spec.rb
|
192
239
|
- spec/orm/relations/interface_spec.rb
|
193
240
|
- spec/orm/relations/metadata_spec.rb
|
241
|
+
- spec/orm/relations/proxy/embedded_in_polymorphic_spec.rb
|
242
|
+
- spec/orm/relations/proxy/embedded_in_spec.rb
|
243
|
+
- spec/orm/relations/proxy/embeds_many_spec.rb
|
194
244
|
- spec/orm/relations/proxy/references_many_spec.rb
|
195
245
|
- spec/orm/relations/proxy/references_one_polymorphic_spec.rb
|
196
246
|
- spec/orm/relations/proxy/references_one_spec.rb
|
197
247
|
- spec/orm/relations/proxy_spec.rb
|
198
248
|
- spec/orm/schema/column_families_spec.rb
|
199
249
|
- spec/orm/schema/column_family_spec.rb
|
200
|
-
- spec/orm/schema/
|
250
|
+
- spec/orm/schema/embedded_interface_spec.rb
|
201
251
|
- spec/orm/schema/field_spec.rb
|
202
252
|
- spec/orm/schema/fields_spec.rb
|
203
253
|
- spec/orm/schema/table_interface_spec.rb
|
204
254
|
- spec/shared/orm/coders/an_orm_coder.rb
|
255
|
+
- spec/shared/orm/id_factories.rb
|
256
|
+
- spec/shared/orm/model_with_timestamps.rb
|
257
|
+
- spec/shared/orm/persistence/a_persistence_embedded_operation_class.rb
|
258
|
+
- spec/shared/orm/persistence/a_persistence_operation_class.rb
|
259
|
+
- spec/shared/orm/persistence/a_persistence_table_operation_class.rb
|
205
260
|
- spec/shared/orm/relations/proxy.rb
|
206
261
|
- spec/shared/orm/relations/singular_proxy.rb
|
207
262
|
- spec/spec_helper.rb
|
@@ -227,9 +282,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
227
282
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
283
|
none: false
|
229
284
|
requirements:
|
230
|
-
- - "
|
285
|
+
- - ">"
|
231
286
|
- !ruby/object:Gem::Version
|
232
|
-
version:
|
287
|
+
version: 1.3.1
|
233
288
|
requirements: []
|
234
289
|
|
235
290
|
rubyforge_project: massive_record
|
@@ -243,25 +298,32 @@ test_files:
|
|
243
298
|
- spec/adapter/thrift/connection_spec.rb
|
244
299
|
- spec/adapter/thrift/table_find_spec.rb
|
245
300
|
- spec/adapter/thrift/table_spec.rb
|
301
|
+
- spec/adapter/thrift/utf8_encoding_of_id_spec.rb
|
246
302
|
- spec/config.yml.example
|
247
303
|
- spec/orm/cases/attribute_methods_spec.rb
|
248
304
|
- spec/orm/cases/auto_generate_id_spec.rb
|
249
305
|
- spec/orm/cases/base_spec.rb
|
250
306
|
- spec/orm/cases/callbacks_spec.rb
|
251
|
-
- spec/orm/cases/
|
307
|
+
- spec/orm/cases/change_id_spec.rb
|
252
308
|
- spec/orm/cases/config_spec.rb
|
253
309
|
- spec/orm/cases/default_id_spec.rb
|
254
310
|
- spec/orm/cases/default_values_spec.rb
|
255
311
|
- spec/orm/cases/dirty_spec.rb
|
312
|
+
- spec/orm/cases/embedded_spec.rb
|
256
313
|
- spec/orm/cases/encoding_spec.rb
|
257
|
-
- spec/orm/cases/
|
314
|
+
- spec/orm/cases/finder_default_scope_spec.rb
|
258
315
|
- spec/orm/cases/finder_scope_spec.rb
|
259
316
|
- spec/orm/cases/finders_spec.rb
|
260
317
|
- spec/orm/cases/i18n_spec.rb
|
261
|
-
- spec/orm/cases/
|
318
|
+
- spec/orm/cases/id_factory/atomic_incrementation_spec.rb
|
319
|
+
- spec/orm/cases/id_factory/timestamp_spec.rb
|
320
|
+
- spec/orm/cases/identity_map/identity_map_spec.rb
|
321
|
+
- spec/orm/cases/identity_map/middleware_spec.rb
|
262
322
|
- spec/orm/cases/log_subscriber_spec.rb
|
263
323
|
- spec/orm/cases/mass_assignment_security_spec.rb
|
324
|
+
- spec/orm/cases/observing_spec.rb
|
264
325
|
- spec/orm/cases/persistence_spec.rb
|
326
|
+
- spec/orm/cases/raw_data_spec.rb
|
265
327
|
- spec/orm/cases/single_table_inheritance_spec.rb
|
266
328
|
- spec/orm/cases/table_spec.rb
|
267
329
|
- spec/orm/cases/time_zone_awareness_spec.rb
|
@@ -271,25 +333,48 @@ test_files:
|
|
271
333
|
- spec/orm/coders/json_spec.rb
|
272
334
|
- spec/orm/coders/yaml_spec.rb
|
273
335
|
- spec/orm/models/address.rb
|
336
|
+
- spec/orm/models/address_with_timestamp.rb
|
274
337
|
- spec/orm/models/best_friend.rb
|
338
|
+
- spec/orm/models/car.rb
|
275
339
|
- spec/orm/models/friend.rb
|
276
340
|
- spec/orm/models/model_without_default_id.rb
|
277
341
|
- spec/orm/models/person.rb
|
278
342
|
- spec/orm/models/person_with_timestamp.rb
|
279
343
|
- spec/orm/models/test_class.rb
|
344
|
+
- spec/orm/persistence/operations/atomic_operation_spec.rb
|
345
|
+
- spec/orm/persistence/operations/destroy_spec.rb
|
346
|
+
- spec/orm/persistence/operations/embedded/destroy_spec.rb
|
347
|
+
- spec/orm/persistence/operations/embedded/insert_spec.rb
|
348
|
+
- spec/orm/persistence/operations/embedded/operation_helpers_spec.rb
|
349
|
+
- spec/orm/persistence/operations/embedded/reload_spec.rb
|
350
|
+
- spec/orm/persistence/operations/embedded/update_spec.rb
|
351
|
+
- spec/orm/persistence/operations/insert_spec.rb
|
352
|
+
- spec/orm/persistence/operations/reload_spec.rb
|
353
|
+
- spec/orm/persistence/operations/suppress_spec.rb
|
354
|
+
- spec/orm/persistence/operations/table_operation_helpers_spec.rb
|
355
|
+
- spec/orm/persistence/operations/update_spec.rb
|
356
|
+
- spec/orm/persistence/operations_spec.rb
|
280
357
|
- spec/orm/relations/interface_spec.rb
|
281
358
|
- spec/orm/relations/metadata_spec.rb
|
359
|
+
- spec/orm/relations/proxy/embedded_in_polymorphic_spec.rb
|
360
|
+
- spec/orm/relations/proxy/embedded_in_spec.rb
|
361
|
+
- spec/orm/relations/proxy/embeds_many_spec.rb
|
282
362
|
- spec/orm/relations/proxy/references_many_spec.rb
|
283
363
|
- spec/orm/relations/proxy/references_one_polymorphic_spec.rb
|
284
364
|
- spec/orm/relations/proxy/references_one_spec.rb
|
285
365
|
- spec/orm/relations/proxy_spec.rb
|
286
366
|
- spec/orm/schema/column_families_spec.rb
|
287
367
|
- spec/orm/schema/column_family_spec.rb
|
288
|
-
- spec/orm/schema/
|
368
|
+
- spec/orm/schema/embedded_interface_spec.rb
|
289
369
|
- spec/orm/schema/field_spec.rb
|
290
370
|
- spec/orm/schema/fields_spec.rb
|
291
371
|
- spec/orm/schema/table_interface_spec.rb
|
292
372
|
- spec/shared/orm/coders/an_orm_coder.rb
|
373
|
+
- spec/shared/orm/id_factories.rb
|
374
|
+
- spec/shared/orm/model_with_timestamps.rb
|
375
|
+
- spec/shared/orm/persistence/a_persistence_embedded_operation_class.rb
|
376
|
+
- spec/shared/orm/persistence/a_persistence_operation_class.rb
|
377
|
+
- spec/shared/orm/persistence/a_persistence_table_operation_class.rb
|
293
378
|
- spec/shared/orm/relations/proxy.rb
|
294
379
|
- spec/shared/orm/relations/singular_proxy.rb
|
295
380
|
- spec/spec_helper.rb
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'orm/models/address'
|
3
|
-
|
4
|
-
describe "column classes" do
|
5
|
-
before do
|
6
|
-
@address = Address.new(:street => "Asker", :number => 5)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should have known_attribute_names" do
|
10
|
-
Address.should have(3).known_attribute_names
|
11
|
-
Address.known_attribute_names.should include("street", "number", "nice_place")
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should have default_attributes_from_schema" do
|
15
|
-
Address.default_attributes_from_schema["street"].should be_nil
|
16
|
-
Address.default_attributes_from_schema["number"].should be_nil
|
17
|
-
Address.default_attributes_from_schema["nice_place"].should be_true
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should have attributes_schema" do
|
21
|
-
Address.attributes_schema["street"].should be_instance_of MassiveRecord::ORM::Schema::Field
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should have a default value set" do
|
25
|
-
@address.nice_place.should be_true
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
# TODO We might want to remove this when we have implemented
|
30
|
-
# associations correctly. Since Columns are contained within
|
31
|
-
# tables, calling save should do something on it's proxy_owner object.
|
32
|
-
describe "not be possible to persist (at least for now...)" do
|
33
|
-
%w(first last all exists? destroy_all).each do |method|
|
34
|
-
it "should not respond to class method #{method}" do
|
35
|
-
Address.should_not respond_to method
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
%w(
|
40
|
-
create! create reload save save!
|
41
|
-
update_attribute update_attributes update_attributes! touch destroy
|
42
|
-
delete increment! atomic_increment! decrement!
|
43
|
-
).each do |method|
|
44
|
-
it "should not respond to instance method #{method}" do
|
45
|
-
@address.should_not respond_to method
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'orm/models/person'
|
3
|
-
|
4
|
-
describe "id factory" do
|
5
|
-
subject { MassiveRecord::ORM::IdFactory.instance }
|
6
|
-
|
7
|
-
it "should be a singleton" do
|
8
|
-
MassiveRecord::ORM::IdFactory.included_modules.should include(Singleton)
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "#next_for" do
|
12
|
-
describe "dry" do
|
13
|
-
include MockMassiveRecordConnection
|
14
|
-
|
15
|
-
it "should respond to next_for" do
|
16
|
-
subject.should respond_to :next_for
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should use incomming table name if it's a string" do
|
20
|
-
subject.should_receive(:next_id).with(hash_including(:table => "test_table"))
|
21
|
-
subject.next_for "test_table"
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should use incomming table name if it's a symbol" do
|
25
|
-
subject.should_receive(:next_id).with(hash_including(:table => "test_table"))
|
26
|
-
subject.next_for :test_table
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should ask object for it's table name if it responds to that" do
|
30
|
-
Person.should_receive(:table_name).and_return("people")
|
31
|
-
subject.should_receive(:next_id).with(hash_including(:table => "people"))
|
32
|
-
subject.next_for(Person)
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should have class method next_for and delegate it to it's instance" do
|
36
|
-
subject.should_receive(:next_for).with("cars")
|
37
|
-
MassiveRecord::ORM::IdFactory.next_for("cars")
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
describe "database" do
|
44
|
-
include SetUpHbaseConnectionBeforeAll
|
45
|
-
include SetTableNamesToTestTable
|
46
|
-
|
47
|
-
after do
|
48
|
-
MassiveRecord::ORM::IdFactory.destroy_all
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should increment start a new sequence on 1" do
|
52
|
-
subject.next_for(Person).should == 1
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should increment value one by one" do
|
56
|
-
5.times do |index|
|
57
|
-
expected_id = index + 1
|
58
|
-
subject.next_for(Person).should == expected_id
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should maintain ids separate for each table" do
|
63
|
-
3.times { subject.next_for(Person) }
|
64
|
-
subject.next_for("cars").should == 1
|
65
|
-
end
|
66
|
-
|
67
|
-
|
68
|
-
describe "old string representation of integers" do
|
69
|
-
it "increments correctly when value is '1'" do
|
70
|
-
old_ensure = MassiveRecord::ORM::Base.backward_compatibility_integers_might_be_persisted_as_strings
|
71
|
-
MassiveRecord::ORM::Base.backward_compatibility_integers_might_be_persisted_as_strings = true
|
72
|
-
|
73
|
-
subject.next_for(Person)
|
74
|
-
|
75
|
-
# Enter incompatible data, number as string.
|
76
|
-
MassiveRecord::ORM::IdFactory.table.first.tap do |row|
|
77
|
-
row.update_column(
|
78
|
-
MassiveRecord::ORM::IdFactory::COLUMN_FAMILY_FOR_TABLES,
|
79
|
-
Person.table_name,
|
80
|
-
MassiveRecord::ORM::Base.coder.dump(1)
|
81
|
-
)
|
82
|
-
row.save
|
83
|
-
end
|
84
|
-
|
85
|
-
subject.next_for(Person).should eq 2
|
86
|
-
|
87
|
-
MassiveRecord::ORM::Base.backward_compatibility_integers_might_be_persisted_as_strings = old_ensure
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|