datamapper-dm-core 0.9.11 → 0.10.0
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/.autotest +17 -14
- data/.gitignore +3 -1
- data/FAQ +6 -5
- data/History.txt +5 -39
- data/Manifest.txt +67 -76
- data/QUICKLINKS +1 -1
- data/README.txt +21 -15
- data/Rakefile +16 -15
- data/SPECS +2 -29
- data/TODO +1 -1
- data/dm-core.gemspec +11 -15
- data/lib/dm-core/adapters/abstract_adapter.rb +182 -185
- data/lib/dm-core/adapters/data_objects_adapter.rb +482 -534
- data/lib/dm-core/adapters/in_memory_adapter.rb +90 -69
- data/lib/dm-core/adapters/mysql_adapter.rb +22 -115
- data/lib/dm-core/adapters/oracle_adapter.rb +249 -0
- data/lib/dm-core/adapters/postgres_adapter.rb +7 -173
- data/lib/dm-core/adapters/sqlite3_adapter.rb +4 -97
- data/lib/dm-core/adapters/yaml_adapter.rb +116 -0
- data/lib/dm-core/adapters.rb +135 -16
- data/lib/dm-core/associations/many_to_many.rb +372 -90
- data/lib/dm-core/associations/many_to_one.rb +220 -73
- data/lib/dm-core/associations/one_to_many.rb +319 -255
- data/lib/dm-core/associations/one_to_one.rb +66 -53
- data/lib/dm-core/associations/relationship.rb +560 -158
- data/lib/dm-core/collection.rb +1104 -381
- data/lib/dm-core/core_ext/kernel.rb +12 -0
- data/lib/dm-core/core_ext/symbol.rb +10 -0
- data/lib/dm-core/identity_map.rb +4 -34
- data/lib/dm-core/migrations.rb +1283 -0
- data/lib/dm-core/model/descendant_set.rb +81 -0
- data/lib/dm-core/model/hook.rb +45 -0
- data/lib/dm-core/model/is.rb +32 -0
- data/lib/dm-core/model/property.rb +248 -0
- data/lib/dm-core/model/relationship.rb +335 -0
- data/lib/dm-core/model/scope.rb +90 -0
- data/lib/dm-core/model.rb +570 -369
- data/lib/dm-core/property.rb +753 -280
- data/lib/dm-core/property_set.rb +141 -98
- data/lib/dm-core/query/conditions/comparison.rb +814 -0
- data/lib/dm-core/query/conditions/operation.rb +247 -0
- data/lib/dm-core/query/direction.rb +43 -0
- data/lib/dm-core/query/operator.rb +42 -0
- data/lib/dm-core/query/path.rb +102 -0
- data/lib/dm-core/query/sort.rb +45 -0
- data/lib/dm-core/query.rb +974 -492
- data/lib/dm-core/repository.rb +147 -107
- data/lib/dm-core/resource.rb +644 -429
- data/lib/dm-core/spec/adapter_shared_spec.rb +294 -0
- data/lib/dm-core/spec/data_objects_adapter_shared_spec.rb +106 -0
- data/lib/dm-core/support/chainable.rb +20 -0
- data/lib/dm-core/support/deprecate.rb +12 -0
- data/lib/dm-core/support/equalizer.rb +23 -0
- data/lib/dm-core/support/logger.rb +13 -0
- data/lib/dm-core/{naming_conventions.rb → support/naming_conventions.rb} +6 -6
- data/lib/dm-core/transaction.rb +333 -92
- data/lib/dm-core/type.rb +98 -60
- data/lib/dm-core/types/boolean.rb +1 -1
- data/lib/dm-core/types/discriminator.rb +34 -20
- data/lib/dm-core/types/object.rb +7 -4
- data/lib/dm-core/types/paranoid_boolean.rb +11 -9
- data/lib/dm-core/types/paranoid_datetime.rb +11 -9
- data/lib/dm-core/types/serial.rb +3 -3
- data/lib/dm-core/types/text.rb +3 -4
- data/lib/dm-core/version.rb +1 -1
- data/lib/dm-core.rb +106 -110
- data/script/performance.rb +102 -109
- data/script/profile.rb +169 -38
- data/spec/lib/adapter_helpers.rb +105 -0
- data/spec/lib/collection_helpers.rb +18 -0
- data/spec/lib/counter_adapter.rb +34 -0
- data/spec/lib/pending_helpers.rb +27 -0
- data/spec/lib/rspec_immediate_feedback_formatter.rb +53 -0
- data/spec/public/associations/many_to_many_spec.rb +193 -0
- data/spec/public/associations/many_to_one_spec.rb +73 -0
- data/spec/public/associations/one_to_many_spec.rb +77 -0
- data/spec/public/associations/one_to_one_spec.rb +156 -0
- data/spec/public/collection_spec.rb +65 -0
- data/spec/public/model/relationship_spec.rb +924 -0
- data/spec/public/model_spec.rb +159 -0
- data/spec/public/property_spec.rb +829 -0
- data/spec/public/resource_spec.rb +71 -0
- data/spec/public/sel_spec.rb +44 -0
- data/spec/public/setup_spec.rb +145 -0
- data/spec/public/shared/association_collection_shared_spec.rb +317 -0
- data/spec/public/shared/collection_shared_spec.rb +1723 -0
- data/spec/public/shared/finder_shared_spec.rb +1619 -0
- data/spec/public/shared/resource_shared_spec.rb +924 -0
- data/spec/public/shared/sel_shared_spec.rb +112 -0
- data/spec/public/transaction_spec.rb +129 -0
- data/spec/public/types/discriminator_spec.rb +130 -0
- data/spec/semipublic/adapters/abstract_adapter_spec.rb +30 -0
- data/spec/semipublic/adapters/in_memory_adapter_spec.rb +12 -0
- data/spec/semipublic/adapters/mysql_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/oracle_adapter_spec.rb +194 -0
- data/spec/semipublic/adapters/postgres_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/sqlite3_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/yaml_adapter_spec.rb +12 -0
- data/spec/semipublic/associations/many_to_one_spec.rb +53 -0
- data/spec/semipublic/associations/relationship_spec.rb +194 -0
- data/spec/semipublic/associations_spec.rb +177 -0
- data/spec/semipublic/collection_spec.rb +142 -0
- data/spec/semipublic/property_spec.rb +61 -0
- data/spec/semipublic/query/conditions_spec.rb +528 -0
- data/spec/semipublic/query/path_spec.rb +443 -0
- data/spec/semipublic/query_spec.rb +2626 -0
- data/spec/semipublic/resource_spec.rb +47 -0
- data/spec/semipublic/shared/resource_shared_spec.rb +126 -0
- data/spec/spec.opts +3 -1
- data/spec/spec_helper.rb +80 -57
- data/tasks/ci.rb +19 -31
- data/tasks/dm.rb +43 -48
- data/tasks/doc.rb +8 -11
- data/tasks/gemspec.rb +5 -5
- data/tasks/hoe.rb +15 -16
- data/tasks/install.rb +8 -10
- metadata +72 -93
- data/lib/dm-core/associations/relationship_chain.rb +0 -81
- data/lib/dm-core/associations.rb +0 -207
- data/lib/dm-core/auto_migrations.rb +0 -105
- data/lib/dm-core/dependency_queue.rb +0 -32
- data/lib/dm-core/hook.rb +0 -11
- data/lib/dm-core/is.rb +0 -16
- data/lib/dm-core/logger.rb +0 -232
- data/lib/dm-core/migrations/destructive_migrations.rb +0 -17
- data/lib/dm-core/migrator.rb +0 -29
- data/lib/dm-core/scope.rb +0 -58
- data/lib/dm-core/support/array.rb +0 -13
- data/lib/dm-core/support/assertions.rb +0 -8
- data/lib/dm-core/support/errors.rb +0 -23
- data/lib/dm-core/support/kernel.rb +0 -11
- data/lib/dm-core/support/symbol.rb +0 -41
- data/lib/dm-core/support.rb +0 -7
- data/lib/dm-core/type_map.rb +0 -80
- data/lib/dm-core/types.rb +0 -19
- data/script/all +0 -4
- data/spec/integration/association_spec.rb +0 -1382
- data/spec/integration/association_through_spec.rb +0 -203
- data/spec/integration/associations/many_to_many_spec.rb +0 -449
- data/spec/integration/associations/many_to_one_spec.rb +0 -163
- data/spec/integration/associations/one_to_many_spec.rb +0 -188
- data/spec/integration/auto_migrations_spec.rb +0 -413
- data/spec/integration/collection_spec.rb +0 -1073
- data/spec/integration/data_objects_adapter_spec.rb +0 -32
- data/spec/integration/dependency_queue_spec.rb +0 -46
- data/spec/integration/model_spec.rb +0 -197
- data/spec/integration/mysql_adapter_spec.rb +0 -85
- data/spec/integration/postgres_adapter_spec.rb +0 -731
- data/spec/integration/property_spec.rb +0 -253
- data/spec/integration/query_spec.rb +0 -514
- data/spec/integration/repository_spec.rb +0 -61
- data/spec/integration/resource_spec.rb +0 -513
- data/spec/integration/sqlite3_adapter_spec.rb +0 -352
- data/spec/integration/sti_spec.rb +0 -273
- data/spec/integration/strategic_eager_loading_spec.rb +0 -156
- data/spec/integration/transaction_spec.rb +0 -75
- data/spec/integration/type_spec.rb +0 -275
- data/spec/lib/logging_helper.rb +0 -18
- data/spec/lib/mock_adapter.rb +0 -27
- data/spec/lib/model_loader.rb +0 -100
- data/spec/lib/publicize_methods.rb +0 -28
- data/spec/models/content.rb +0 -16
- data/spec/models/vehicles.rb +0 -34
- data/spec/models/zoo.rb +0 -48
- data/spec/unit/adapters/abstract_adapter_spec.rb +0 -133
- data/spec/unit/adapters/adapter_shared_spec.rb +0 -15
- data/spec/unit/adapters/data_objects_adapter_spec.rb +0 -632
- data/spec/unit/adapters/in_memory_adapter_spec.rb +0 -98
- data/spec/unit/adapters/postgres_adapter_spec.rb +0 -133
- data/spec/unit/associations/many_to_many_spec.rb +0 -32
- data/spec/unit/associations/many_to_one_spec.rb +0 -159
- data/spec/unit/associations/one_to_many_spec.rb +0 -393
- data/spec/unit/associations/one_to_one_spec.rb +0 -7
- data/spec/unit/associations/relationship_spec.rb +0 -71
- data/spec/unit/associations_spec.rb +0 -242
- data/spec/unit/auto_migrations_spec.rb +0 -111
- data/spec/unit/collection_spec.rb +0 -182
- data/spec/unit/data_mapper_spec.rb +0 -35
- data/spec/unit/identity_map_spec.rb +0 -126
- data/spec/unit/is_spec.rb +0 -80
- data/spec/unit/migrator_spec.rb +0 -33
- data/spec/unit/model_spec.rb +0 -321
- data/spec/unit/naming_conventions_spec.rb +0 -36
- data/spec/unit/property_set_spec.rb +0 -90
- data/spec/unit/property_spec.rb +0 -753
- data/spec/unit/query_spec.rb +0 -571
- data/spec/unit/repository_spec.rb +0 -93
- data/spec/unit/resource_spec.rb +0 -649
- data/spec/unit/scope_spec.rb +0 -142
- data/spec/unit/transaction_spec.rb +0 -493
- data/spec/unit/type_map_spec.rb +0 -114
- data/spec/unit/type_spec.rb +0 -119
data/spec/models/vehicles.rb
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# ==========================
|
|
2
|
-
# Used for Association specs
|
|
3
|
-
# ---
|
|
4
|
-
# These models will probably
|
|
5
|
-
# end up removed. So, I wouldn't
|
|
6
|
-
# use this metaphor
|
|
7
|
-
class Vehicle
|
|
8
|
-
include DataMapper::Resource
|
|
9
|
-
|
|
10
|
-
property :id, Serial
|
|
11
|
-
property :name, String
|
|
12
|
-
|
|
13
|
-
class << self
|
|
14
|
-
attr_accessor :mock_relationship
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
class Manufacturer
|
|
19
|
-
include DataMapper::Resource
|
|
20
|
-
|
|
21
|
-
property :id, Serial
|
|
22
|
-
property :name, String
|
|
23
|
-
|
|
24
|
-
class << self
|
|
25
|
-
attr_accessor :mock_relationship
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
class Supplier
|
|
30
|
-
include DataMapper::Resource
|
|
31
|
-
|
|
32
|
-
property :id, Serial
|
|
33
|
-
property :name, String
|
|
34
|
-
end
|
data/spec/models/zoo.rb
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
class Zoo
|
|
2
|
-
include DataMapper::Resource
|
|
3
|
-
|
|
4
|
-
property :id, Serial
|
|
5
|
-
property :name, String
|
|
6
|
-
property :description, Text
|
|
7
|
-
property :inception, DateTime
|
|
8
|
-
property :open, Boolean, :default => false
|
|
9
|
-
property :size, Integer
|
|
10
|
-
property :mission, Text, :writer => :protected
|
|
11
|
-
|
|
12
|
-
has n, :animals
|
|
13
|
-
|
|
14
|
-
def to_s
|
|
15
|
-
name
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
class Species
|
|
20
|
-
include DataMapper::Resource
|
|
21
|
-
|
|
22
|
-
property :id, Serial
|
|
23
|
-
property :name, String
|
|
24
|
-
property :classification, String, :reader => :private
|
|
25
|
-
|
|
26
|
-
has n, :animals
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
class Animal
|
|
30
|
-
include DataMapper::Resource
|
|
31
|
-
|
|
32
|
-
property :id, Serial
|
|
33
|
-
property :name, String
|
|
34
|
-
|
|
35
|
-
belongs_to :zoo
|
|
36
|
-
belongs_to :species
|
|
37
|
-
belongs_to :keeper
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
class Employee
|
|
41
|
-
include DataMapper::Resource
|
|
42
|
-
|
|
43
|
-
property :name, String, :key => true
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
class Keeper < Employee
|
|
47
|
-
has n, :animals
|
|
48
|
-
end
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
require 'monitor'
|
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
|
3
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'adapters', 'adapter_shared_spec'))
|
|
4
|
-
|
|
5
|
-
describe DataMapper::Adapters::AbstractAdapter do
|
|
6
|
-
|
|
7
|
-
before do
|
|
8
|
-
@adapter = DataMapper::Adapters::AbstractAdapter.new(:default, 'mock_uri_string')
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it_should_behave_like 'a DataMapper Adapter'
|
|
12
|
-
|
|
13
|
-
describe "when handling transactions" do
|
|
14
|
-
before :each do
|
|
15
|
-
@transaction = DataMapper::Transaction.new(@adapter)
|
|
16
|
-
end
|
|
17
|
-
it "should be able to push and pop transactions on the current stack" do
|
|
18
|
-
@adapter.current_transaction.should == nil
|
|
19
|
-
@adapter.within_transaction?.should == false
|
|
20
|
-
@adapter.push_transaction(@transaction)
|
|
21
|
-
@adapter.current_transaction.should == @transaction
|
|
22
|
-
@adapter.within_transaction?.should == true
|
|
23
|
-
@adapter.push_transaction(@transaction)
|
|
24
|
-
@adapter.current_transaction.should == @transaction
|
|
25
|
-
@adapter.within_transaction?.should == true
|
|
26
|
-
@adapter.pop_transaction
|
|
27
|
-
@adapter.current_transaction.should == @transaction
|
|
28
|
-
@adapter.within_transaction?.should == true
|
|
29
|
-
@adapter.pop_transaction
|
|
30
|
-
@adapter.current_transaction.should == nil
|
|
31
|
-
@adapter.within_transaction?.should == false
|
|
32
|
-
end
|
|
33
|
-
it "should let each Thread have its own transaction stack" do
|
|
34
|
-
lock = Monitor.new
|
|
35
|
-
transaction2 = DataMapper::Transaction.new(@adapter)
|
|
36
|
-
@adapter.within_transaction?.should == false
|
|
37
|
-
@adapter.current_transaction.should == nil
|
|
38
|
-
@adapter.push_transaction(transaction2)
|
|
39
|
-
@adapter.within_transaction?.should == true
|
|
40
|
-
@adapter.current_transaction.should == transaction2
|
|
41
|
-
lock.synchronize do
|
|
42
|
-
Thread.new do
|
|
43
|
-
@adapter.within_transaction?.should == false
|
|
44
|
-
@adapter.current_transaction.should == nil
|
|
45
|
-
@adapter.push_transaction(@transaction)
|
|
46
|
-
@adapter.within_transaction?.should == true
|
|
47
|
-
@adapter.current_transaction.should == @transaction
|
|
48
|
-
lock.synchronize do
|
|
49
|
-
@adapter.within_transaction?.should == true
|
|
50
|
-
@adapter.current_transaction.should == @transaction
|
|
51
|
-
@adapter.pop_transaction
|
|
52
|
-
@adapter.within_transaction?.should == false
|
|
53
|
-
@adapter.current_transaction.should == nil
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
@adapter.within_transaction?.should == true
|
|
57
|
-
@adapter.current_transaction.should == transaction2
|
|
58
|
-
@adapter.pop_transaction
|
|
59
|
-
@adapter.within_transaction?.should == false
|
|
60
|
-
@adapter.current_transaction.should == nil
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "should raise NotImplementedError when #create is called" do
|
|
66
|
-
lambda { @adapter.create([ :resource ]) }.should raise_error(NotImplementedError)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
it "should raise NotImplementedError when #read_many is called" do
|
|
70
|
-
lambda { @adapter.read_many(:query) }.should raise_error(NotImplementedError)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "should raise NotImplementedError when #read_one is called" do
|
|
74
|
-
lambda { @adapter.read_one(:query) }.should raise_error(NotImplementedError)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "should raise NotImplementedError when #update is called" do
|
|
78
|
-
lambda { @adapter.update(:attributes, :query) }.should raise_error(NotImplementedError)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "should raise NotImplementedError when #delete is called" do
|
|
82
|
-
lambda { @adapter.delete(:query) }.should raise_error(NotImplementedError)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it "should raise NotImplementedError when #upgrade_model_storage is called" do
|
|
86
|
-
lambda { @adapter.upgrade_model_storage(:repository, :resource) }.should raise_error(NotImplementedError)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it "should raise NotImplementedError when #storage_exists? is called" do
|
|
90
|
-
lambda { @adapter.storage_exists?("hehu") }.should raise_error(NotImplementedError)
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
it "should raise NotImplementedError when #create_model_storage is called" do
|
|
94
|
-
lambda { @adapter.create_model_storage(:repository, :resource) }.should raise_error(NotImplementedError)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
it "should raise NotImplementedError when #destroy_model_storage is called" do
|
|
98
|
-
lambda { @adapter.destroy_model_storage(:repository, :resource) }.should raise_error(NotImplementedError)
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
it "should raise NotImplementedError when #alter_model_storage is called" do
|
|
102
|
-
lambda { @adapter.alter_model_storage(:repository, :resource) }.should raise_error(NotImplementedError)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
it "should raise NotImplementedError when #create_property_storage is called" do
|
|
106
|
-
lambda { @adapter.create_property_storage(:repository, :property) }
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
it "should raise NotImplementedError when #destroy_property_storage is called" do
|
|
110
|
-
lambda { @adapter.destroy_property_storage(:repository, :property) }
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
it "should raise NotImplementedError when #alter_property_storage is called" do
|
|
114
|
-
lambda { @adapter.alter_property_storage(:repository, :property) }
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
it "should raise NotImplementedError when #transaction_primitive is called" do
|
|
118
|
-
lambda { @adapter.transaction_primitive }.should raise_error(NotImplementedError)
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
it "should clean out dead threads from @transactions" do
|
|
122
|
-
@adapter.instance_eval do @transactions end.size.should == 0
|
|
123
|
-
t = Thread.new do
|
|
124
|
-
@adapter.push_transaction("plur")
|
|
125
|
-
end
|
|
126
|
-
while t.alive?
|
|
127
|
-
sleep 0.1
|
|
128
|
-
end
|
|
129
|
-
@adapter.instance_eval do @transactions end.size.should == 1
|
|
130
|
-
@adapter.push_transaction("ploj")
|
|
131
|
-
@adapter.instance_eval do @transactions end.size.should == 1
|
|
132
|
-
end
|
|
133
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
describe "a DataMapper Adapter", :shared => true do
|
|
3
|
-
|
|
4
|
-
it "should initialize the connection uri" do
|
|
5
|
-
new_adapter = @adapter.class.new(:default, Addressable::URI.parse('some://uri/string'))
|
|
6
|
-
new_adapter.instance_variable_get('@uri').to_s.should == Addressable::URI.parse('some://uri/string').to_s
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
%w{create read_many read_one update delete create_model_storage alter_model_storage destroy_model_storage create_property_storage alter_property_storage destroy_property_storage} .each do |meth|
|
|
10
|
-
it "should have a #{meth} method" do
|
|
11
|
-
@adapter.should respond_to(meth.intern)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
end
|