massive_record 0.2.1 → 0.2.2.rc1
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.
- 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
|