dm-core 0.10.2 → 1.0.0.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/.gitignore +10 -1
- data/Gemfile +143 -0
- data/Rakefile +9 -5
- data/VERSION +1 -1
- data/dm-core.gemspec +160 -57
- data/lib/dm-core.rb +131 -56
- data/lib/dm-core/adapters.rb +98 -14
- data/lib/dm-core/adapters/abstract_adapter.rb +24 -4
- data/lib/dm-core/adapters/in_memory_adapter.rb +7 -2
- data/lib/dm-core/associations/many_to_many.rb +19 -30
- data/lib/dm-core/associations/many_to_one.rb +58 -42
- data/lib/dm-core/associations/one_to_many.rb +33 -23
- data/lib/dm-core/associations/one_to_one.rb +27 -11
- data/lib/dm-core/associations/relationship.rb +4 -4
- data/lib/dm-core/collection.rb +23 -16
- data/lib/dm-core/core_ext/array.rb +36 -0
- data/lib/dm-core/core_ext/hash.rb +30 -0
- data/lib/dm-core/core_ext/module.rb +46 -0
- data/lib/dm-core/core_ext/object.rb +31 -0
- data/lib/dm-core/core_ext/pathname.rb +20 -0
- data/lib/dm-core/core_ext/string.rb +22 -0
- data/lib/dm-core/core_ext/try_dup.rb +44 -0
- data/lib/dm-core/model.rb +88 -27
- data/lib/dm-core/model/hook.rb +75 -18
- data/lib/dm-core/model/property.rb +50 -9
- data/lib/dm-core/model/relationship.rb +31 -31
- data/lib/dm-core/model/scope.rb +3 -3
- data/lib/dm-core/property.rb +196 -516
- data/lib/dm-core/property/binary.rb +7 -0
- data/lib/dm-core/property/boolean.rb +35 -0
- data/lib/dm-core/property/class.rb +24 -0
- data/lib/dm-core/property/date.rb +47 -0
- data/lib/dm-core/property/date_time.rb +48 -0
- data/lib/dm-core/property/decimal.rb +43 -0
- data/lib/dm-core/property/discriminator.rb +48 -0
- data/lib/dm-core/property/float.rb +24 -0
- data/lib/dm-core/property/integer.rb +32 -0
- data/lib/dm-core/property/numeric.rb +43 -0
- data/lib/dm-core/property/object.rb +32 -0
- data/lib/dm-core/property/serial.rb +8 -0
- data/lib/dm-core/property/string.rb +49 -0
- data/lib/dm-core/property/text.rb +12 -0
- data/lib/dm-core/property/time.rb +48 -0
- data/lib/dm-core/property/typecast/numeric.rb +32 -0
- data/lib/dm-core/property/typecast/time.rb +28 -0
- data/lib/dm-core/property_set.rb +10 -4
- data/lib/dm-core/query.rb +14 -37
- data/lib/dm-core/query/conditions/comparison.rb +8 -6
- data/lib/dm-core/query/conditions/operation.rb +33 -2
- data/lib/dm-core/query/operator.rb +2 -5
- data/lib/dm-core/query/path.rb +4 -6
- data/lib/dm-core/repository.rb +21 -6
- data/lib/dm-core/resource.rb +316 -133
- data/lib/dm-core/resource/state.rb +79 -0
- data/lib/dm-core/resource/state/clean.rb +40 -0
- data/lib/dm-core/resource/state/deleted.rb +30 -0
- data/lib/dm-core/resource/state/dirty.rb +86 -0
- data/lib/dm-core/resource/state/immutable.rb +34 -0
- data/lib/dm-core/resource/state/persisted.rb +29 -0
- data/lib/dm-core/resource/state/transient.rb +70 -0
- data/lib/dm-core/spec/lib/adapter_helpers.rb +52 -0
- data/lib/dm-core/spec/lib/collection_helpers.rb +20 -0
- data/{spec → lib/dm-core/spec}/lib/counter_adapter.rb +5 -1
- data/lib/dm-core/spec/lib/pending_helpers.rb +50 -0
- data/lib/dm-core/spec/lib/spec_helper.rb +68 -0
- data/lib/dm-core/spec/setup.rb +165 -0
- data/lib/dm-core/spec/{adapter_shared_spec.rb → shared/adapter_spec.rb} +21 -7
- data/{spec/public/shared/resource_shared_spec.rb → lib/dm-core/spec/shared/resource_spec.rb} +120 -83
- data/{spec/public/shared/sel_shared_spec.rb → lib/dm-core/spec/shared/sel_spec.rb} +5 -6
- data/lib/dm-core/support/assertions.rb +8 -0
- data/lib/dm-core/support/equalizer.rb +1 -0
- data/lib/dm-core/support/hook.rb +420 -0
- data/lib/dm-core/support/lazy_array.rb +453 -0
- data/lib/dm-core/support/local_object_space.rb +12 -0
- data/lib/dm-core/support/logger.rb +193 -6
- data/lib/dm-core/support/naming_conventions.rb +8 -8
- data/lib/dm-core/support/subject.rb +33 -0
- data/lib/dm-core/type.rb +4 -0
- data/lib/dm-core/types/boolean.rb +2 -0
- data/lib/dm-core/types/decimal.rb +9 -0
- data/lib/dm-core/types/discriminator.rb +2 -0
- data/lib/dm-core/types/object.rb +3 -0
- data/lib/dm-core/types/serial.rb +2 -0
- data/lib/dm-core/types/text.rb +2 -0
- data/lib/dm-core/version.rb +1 -1
- data/spec/public/associations/many_to_many/read_multiple_join_spec.rb +67 -0
- data/spec/public/model/hook_spec.rb +209 -0
- data/spec/public/model/property_spec.rb +35 -0
- data/spec/public/model/relationship_spec.rb +33 -20
- data/spec/public/model_spec.rb +142 -10
- data/spec/public/property/binary_spec.rb +14 -0
- data/spec/public/property/boolean_spec.rb +14 -0
- data/spec/public/property/class_spec.rb +20 -0
- data/spec/public/property/date_spec.rb +14 -0
- data/spec/public/property/date_time_spec.rb +14 -0
- data/spec/public/property/decimal_spec.rb +14 -0
- data/spec/public/{types → property}/discriminator_spec.rb +2 -12
- data/spec/public/property/float_spec.rb +14 -0
- data/spec/public/property/integer_spec.rb +14 -0
- data/spec/public/property/object_spec.rb +9 -17
- data/spec/public/property/serial_spec.rb +14 -0
- data/spec/public/property/string_spec.rb +14 -0
- data/spec/public/property/text_spec.rb +52 -0
- data/spec/public/property/time_spec.rb +14 -0
- data/spec/public/property_spec.rb +28 -87
- data/spec/public/resource_spec.rb +101 -0
- data/spec/public/sel_spec.rb +5 -15
- data/spec/public/shared/collection_shared_spec.rb +16 -30
- data/spec/public/shared/finder_shared_spec.rb +2 -4
- data/spec/public/shared/property_shared_spec.rb +176 -0
- data/spec/semipublic/adapters/abstract_adapter_spec.rb +1 -1
- data/spec/semipublic/adapters/in_memory_adapter_spec.rb +2 -2
- data/spec/semipublic/associations/many_to_many_spec.rb +89 -0
- data/spec/semipublic/associations/many_to_one_spec.rb +24 -1
- data/spec/semipublic/associations/one_to_many_spec.rb +51 -0
- data/spec/semipublic/associations/one_to_one_spec.rb +49 -0
- data/spec/semipublic/associations/relationship_spec.rb +3 -3
- data/spec/semipublic/associations_spec.rb +1 -1
- data/spec/semipublic/property/binary_spec.rb +13 -0
- data/spec/semipublic/property/boolean_spec.rb +65 -0
- data/spec/semipublic/property/class_spec.rb +33 -0
- data/spec/semipublic/property/date_spec.rb +43 -0
- data/spec/semipublic/property/date_time_spec.rb +46 -0
- data/spec/semipublic/property/decimal_spec.rb +82 -0
- data/spec/semipublic/property/discriminator_spec.rb +19 -0
- data/spec/semipublic/property/float_spec.rb +82 -0
- data/spec/semipublic/property/integer_spec.rb +82 -0
- data/spec/semipublic/property/serial_spec.rb +13 -0
- data/spec/semipublic/property/string_spec.rb +13 -0
- data/spec/semipublic/property/text_spec.rb +31 -0
- data/spec/semipublic/property/time_spec.rb +50 -0
- data/spec/semipublic/property_spec.rb +2 -532
- data/spec/semipublic/query/conditions/comparison_spec.rb +171 -169
- data/spec/semipublic/query/conditions/operation_spec.rb +53 -51
- data/spec/semipublic/query/path_spec.rb +17 -17
- data/spec/semipublic/query_spec.rb +47 -78
- data/spec/semipublic/resource/state/clean_spec.rb +88 -0
- data/spec/semipublic/resource/state/deleted_spec.rb +78 -0
- data/spec/semipublic/resource/state/dirty_spec.rb +133 -0
- data/spec/semipublic/resource/state/immutable_spec.rb +99 -0
- data/spec/semipublic/resource/state/transient_spec.rb +128 -0
- data/spec/semipublic/resource/state_spec.rb +226 -0
- data/spec/semipublic/shared/property_shared_spec.rb +143 -0
- data/spec/semipublic/shared/resource_shared_spec.rb +16 -15
- data/spec/semipublic/shared/resource_state_shared_spec.rb +78 -0
- data/spec/semipublic/shared/subject_shared_spec.rb +79 -0
- data/spec/spec_helper.rb +21 -97
- data/spec/support/types/huge_integer.rb +17 -0
- data/spec/unit/array_spec.rb +48 -0
- data/spec/unit/hash_spec.rb +35 -0
- data/spec/unit/hook_spec.rb +1234 -0
- data/spec/unit/lazy_array_spec.rb +1959 -0
- data/spec/unit/module_spec.rb +70 -0
- data/spec/unit/object_spec.rb +37 -0
- data/spec/unit/try_dup_spec.rb +45 -0
- data/tasks/local_gemfile.rake +18 -0
- data/tasks/spec.rake +0 -3
- metadata +197 -71
- data/deps.rip +0 -2
- data/lib/dm-core/adapters/data_objects_adapter.rb +0 -712
- data/lib/dm-core/adapters/mysql_adapter.rb +0 -42
- data/lib/dm-core/adapters/oracle_adapter.rb +0 -229
- data/lib/dm-core/adapters/postgres_adapter.rb +0 -22
- data/lib/dm-core/adapters/sqlite3_adapter.rb +0 -17
- data/lib/dm-core/adapters/sqlserver_adapter.rb +0 -114
- data/lib/dm-core/adapters/yaml_adapter.rb +0 -111
- data/lib/dm-core/core_ext/enumerable.rb +0 -28
- data/lib/dm-core/migrations.rb +0 -1427
- data/lib/dm-core/spec/data_objects_adapter_shared_spec.rb +0 -366
- data/lib/dm-core/transaction.rb +0 -508
- data/lib/dm-core/types/paranoid_boolean.rb +0 -42
- data/lib/dm-core/types/paranoid_datetime.rb +0 -41
- data/spec/lib/adapter_helpers.rb +0 -105
- data/spec/lib/collection_helpers.rb +0 -18
- data/spec/lib/pending_helpers.rb +0 -46
- data/spec/public/migrations_spec.rb +0 -503
- data/spec/public/transaction_spec.rb +0 -153
- data/spec/semipublic/adapters/mysql_adapter_spec.rb +0 -17
- data/spec/semipublic/adapters/oracle_adapter_spec.rb +0 -194
- data/spec/semipublic/adapters/postgres_adapter_spec.rb +0 -17
- data/spec/semipublic/adapters/sqlite3_adapter_spec.rb +0 -17
- data/spec/semipublic/adapters/sqlserver_adapter_spec.rb +0 -17
- data/spec/semipublic/adapters/yaml_adapter_spec.rb +0 -12
@@ -1,153 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
-
|
3
|
-
describe DataMapper::Resource, 'Transactions' do
|
4
|
-
before :all do
|
5
|
-
module ::Blog
|
6
|
-
class User
|
7
|
-
include DataMapper::Resource
|
8
|
-
|
9
|
-
property :name, String, :key => true
|
10
|
-
property :age, Integer
|
11
|
-
property :summary, Text
|
12
|
-
property :description, Text
|
13
|
-
property :admin, Boolean, :accessor => :private
|
14
|
-
|
15
|
-
belongs_to :parent, self, :required => false
|
16
|
-
has n, :children, self, :inverse => :parent
|
17
|
-
|
18
|
-
belongs_to :referrer, self, :required => false
|
19
|
-
has n, :comments
|
20
|
-
|
21
|
-
# FIXME: figure out a different approach than stubbing things out
|
22
|
-
def comment=(*)
|
23
|
-
# do nothing with comment
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class Author < User; end
|
28
|
-
|
29
|
-
class Comment
|
30
|
-
include DataMapper::Resource
|
31
|
-
|
32
|
-
property :id, Serial
|
33
|
-
property :body, Text
|
34
|
-
|
35
|
-
belongs_to :user
|
36
|
-
end
|
37
|
-
|
38
|
-
class Article
|
39
|
-
include DataMapper::Resource
|
40
|
-
|
41
|
-
property :id, Serial
|
42
|
-
property :body, Text
|
43
|
-
|
44
|
-
has n, :paragraphs
|
45
|
-
end
|
46
|
-
|
47
|
-
class Paragraph
|
48
|
-
include DataMapper::Resource
|
49
|
-
|
50
|
-
property :id, Serial
|
51
|
-
property :text, String
|
52
|
-
|
53
|
-
belongs_to :article
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
class ::Default
|
58
|
-
include DataMapper::Resource
|
59
|
-
|
60
|
-
property :name, String, :key => true, :default => 'a default value'
|
61
|
-
end
|
62
|
-
|
63
|
-
@user_model = Blog::User
|
64
|
-
@author_model = Blog::Author
|
65
|
-
@comment_model = Blog::Comment
|
66
|
-
@article_model = Blog::Article
|
67
|
-
@paragraph_model = Blog::Paragraph
|
68
|
-
end
|
69
|
-
|
70
|
-
supported_by :postgres, :mysql, :sqlite3, :oracle, :sqlserver do
|
71
|
-
before :all do
|
72
|
-
user = @user_model.create(:name => 'dbussink', :age => 25, :description => 'Test')
|
73
|
-
|
74
|
-
@user = @user_model.get(*user.key)
|
75
|
-
end
|
76
|
-
|
77
|
-
before do
|
78
|
-
# --- Temporary private api use to get around rspec limitations ---
|
79
|
-
@repository.scope do |repository|
|
80
|
-
transaction = DataMapper::Transaction.new(repository)
|
81
|
-
transaction.begin
|
82
|
-
repository.adapter.push_transaction(transaction)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
after do
|
87
|
-
while @repository.adapter.current_transaction
|
88
|
-
@repository.adapter.pop_transaction.rollback
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
it_should_behave_like 'A public Resource'
|
93
|
-
it_should_behave_like 'A Resource supporting Strategic Eager Loading'
|
94
|
-
end
|
95
|
-
|
96
|
-
supported_by :postgres, :mysql, :sqlite3, :oracle, :sqlserver do
|
97
|
-
describe '#transaction' do
|
98
|
-
before do
|
99
|
-
@user_model.all.destroy!
|
100
|
-
end
|
101
|
-
|
102
|
-
it 'should have access to resources presisted before the transaction' do
|
103
|
-
@user_model.create(:name => 'carllerche')
|
104
|
-
@user_model.transaction do
|
105
|
-
@user_model.first.name.should == 'carllerche'
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'should have access to resources persisted in the transaction' do
|
110
|
-
@user_model.transaction do
|
111
|
-
@user_model.create(:name => 'carllerche')
|
112
|
-
@user_model.first.name.should == 'carllerche'
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'should not mark saved resources as new records' do
|
117
|
-
@user_model.transaction do
|
118
|
-
@user_model.create(:name => 'carllerche').should_not be_new
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
it 'should rollback when an error is thrown in a transaction' do
|
123
|
-
@user_model.all.should have(0).entries
|
124
|
-
lambda {
|
125
|
-
@user_model.transaction do
|
126
|
-
@user_model.create(:name => 'carllerche')
|
127
|
-
raise 'I love coffee'
|
128
|
-
end
|
129
|
-
}.should raise_error('I love coffee')
|
130
|
-
@user_model.all.should have(0).entries
|
131
|
-
end
|
132
|
-
|
133
|
-
it 'should close the transaction if return is called within the closure' do
|
134
|
-
@txn = nil
|
135
|
-
|
136
|
-
def doit
|
137
|
-
@user_model.transaction do
|
138
|
-
@txn = Thread.current[:dm_transactions].last
|
139
|
-
return
|
140
|
-
end
|
141
|
-
end
|
142
|
-
doit
|
143
|
-
|
144
|
-
@txn.instance_variable_get(:@state).should == :commit
|
145
|
-
@txn = nil
|
146
|
-
end
|
147
|
-
|
148
|
-
it 'should return the last statement in the transaction block' do
|
149
|
-
@user_model.transaction { 1 }.should == 1
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
2
|
-
|
3
|
-
dir = DataMapper.root / 'lib' / 'dm-core' / 'spec'
|
4
|
-
|
5
|
-
require dir / 'adapter_shared_spec'
|
6
|
-
require dir / 'data_objects_adapter_shared_spec'
|
7
|
-
|
8
|
-
describe 'Adapter' do
|
9
|
-
supported_by :mysql do
|
10
|
-
describe DataMapper::Adapters::MysqlAdapter do
|
11
|
-
|
12
|
-
it_should_behave_like 'An Adapter'
|
13
|
-
it_should_behave_like 'A DataObjects Adapter'
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,194 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
2
|
-
|
3
|
-
dir = DataMapper.root / 'lib' / 'dm-core' / 'spec'
|
4
|
-
|
5
|
-
require dir / 'adapter_shared_spec'
|
6
|
-
require dir / 'data_objects_adapter_shared_spec'
|
7
|
-
|
8
|
-
module SQLLogHelper
|
9
|
-
class SQLLogger
|
10
|
-
attr_accessor :buffer
|
11
|
-
def initialize
|
12
|
-
@buffer = ""
|
13
|
-
end
|
14
|
-
|
15
|
-
def level; 0; end
|
16
|
-
|
17
|
-
def debug(string)
|
18
|
-
@buffer << string << "\n"
|
19
|
-
# puts "#{string.gsub(/\n/m,"<br/>\n")}<br/>"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def start_sql_log!
|
24
|
-
return if @sql_log_on
|
25
|
-
@sql_log_on = true
|
26
|
-
@old_logger = DataObjects::Oracle.logger
|
27
|
-
DataObjects::Oracle.logger = SQLLogger.new
|
28
|
-
end
|
29
|
-
|
30
|
-
def stop_sql_log!
|
31
|
-
return unless @sql_log_on
|
32
|
-
@sql_log_on = nil
|
33
|
-
DataObjects::Oracle.logger = @old_logger
|
34
|
-
end
|
35
|
-
|
36
|
-
def clear_sql_log!
|
37
|
-
return unless @sql_log_on
|
38
|
-
DataObjects::Oracle.logger.buffer = ""
|
39
|
-
end
|
40
|
-
|
41
|
-
def sql_log_buffer
|
42
|
-
DataObjects::Oracle.logger.buffer
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe 'Adapter' do
|
47
|
-
supported_by :oracle do
|
48
|
-
describe DataMapper::Adapters::OracleAdapter do
|
49
|
-
|
50
|
-
it_should_behave_like 'An Adapter'
|
51
|
-
it_should_behave_like 'A DataObjects Adapter'
|
52
|
-
|
53
|
-
describe "sequences" do
|
54
|
-
include SQLLogHelper
|
55
|
-
|
56
|
-
before(:all) do
|
57
|
-
@auto_migrate_with = DataMapper::Adapters::OracleAdapter.auto_migrate_with
|
58
|
-
DataMapper::Adapters::OracleAdapter.auto_migrate_with :drop_and_create
|
59
|
-
start_sql_log!
|
60
|
-
end
|
61
|
-
|
62
|
-
after(:all) do
|
63
|
-
stop_sql_log!
|
64
|
-
DataMapper::Adapters::OracleAdapter.auto_migrate_with @auto_migrate_with
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "create default sequence and trigger" do
|
68
|
-
before(:all) do
|
69
|
-
class ::Employee
|
70
|
-
include DataMapper::Resource
|
71
|
-
property :employee_id, Serial
|
72
|
-
end
|
73
|
-
Employee.auto_migrate!
|
74
|
-
end
|
75
|
-
|
76
|
-
after(:all) do
|
77
|
-
Employee.auto_migrate_down!
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should not have sequence name in options" do
|
81
|
-
Employee.properties[:employee_id].options[:sequence].should be_nil
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should create default sequence" do
|
85
|
-
sql_log_buffer.should =~ /CREATE SEQUENCE "EMPLOYEES_SEQ"/
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should create trigger" do
|
89
|
-
sql_log_buffer.should =~ /CREATE OR REPLACE TRIGGER "EMPLOYEES_PKT"/
|
90
|
-
end
|
91
|
-
|
92
|
-
end
|
93
|
-
|
94
|
-
describe "create custom sequence" do
|
95
|
-
|
96
|
-
before(:all) do
|
97
|
-
class ::Employee
|
98
|
-
include DataMapper::Resource
|
99
|
-
property :employee_id, Serial, :sequence => "emp_seq"
|
100
|
-
end
|
101
|
-
Employee.auto_migrate!
|
102
|
-
end
|
103
|
-
|
104
|
-
after(:all) do
|
105
|
-
Employee.auto_migrate_down!
|
106
|
-
end
|
107
|
-
|
108
|
-
it "should have custom sequence name" do
|
109
|
-
Employee.properties[:employee_id].options[:sequence].should == "emp_seq"
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should create custom sequence" do
|
113
|
-
sql_log_buffer.should =~ /CREATE SEQUENCE "EMP_SEQ"/
|
114
|
-
end
|
115
|
-
|
116
|
-
it "should not create trigger" do
|
117
|
-
sql_log_buffer.should_not =~ /TRIGGER/
|
118
|
-
end
|
119
|
-
|
120
|
-
end
|
121
|
-
|
122
|
-
describe "create custom sequence in non-default repository" do
|
123
|
-
|
124
|
-
before(:all) do
|
125
|
-
stop_sql_log!
|
126
|
-
DataMapper.setup :oracle, DataMapper::Repository.adapters[:default].options
|
127
|
-
start_sql_log!
|
128
|
-
class ::Employee
|
129
|
-
include DataMapper::Resource
|
130
|
-
property :id, Serial
|
131
|
-
repository(:oracle) do
|
132
|
-
property :id, Serial, :field => "employee_id", :sequence => "emp_seq"
|
133
|
-
end
|
134
|
-
end
|
135
|
-
repository(:oracle) do
|
136
|
-
Employee.auto_migrate!
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
after(:all) do
|
141
|
-
repository(:oracle) do
|
142
|
-
Employee.auto_migrate_down!
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should have custom sequence name" do
|
147
|
-
Employee.properties(:oracle)[:id].options[:sequence].should == "emp_seq"
|
148
|
-
end
|
149
|
-
|
150
|
-
it "should create custom sequence" do
|
151
|
-
sql_log_buffer.should =~ /CREATE SEQUENCE "EMP_SEQ"/
|
152
|
-
end
|
153
|
-
|
154
|
-
it "should not create trigger" do
|
155
|
-
sql_log_buffer.should_not =~ /TRIGGER/
|
156
|
-
end
|
157
|
-
|
158
|
-
end
|
159
|
-
|
160
|
-
describe "prefetch key value from custom sequence" do
|
161
|
-
|
162
|
-
before(:all) do
|
163
|
-
class ::Employee
|
164
|
-
include DataMapper::Resource
|
165
|
-
property :employee_id, Serial, :sequence => "emp_seq"
|
166
|
-
property :first_name, String
|
167
|
-
end
|
168
|
-
Employee.auto_migrate!
|
169
|
-
end
|
170
|
-
|
171
|
-
after(:all) do
|
172
|
-
Employee.auto_migrate_down!
|
173
|
-
end
|
174
|
-
|
175
|
-
it "should prefetch sequence value when inserting new record" do
|
176
|
-
e = Employee.create
|
177
|
-
e.employee_id.should == 1
|
178
|
-
e = Employee.create(:first_name => "Raimonds")
|
179
|
-
e.employee_id.should == 2
|
180
|
-
end
|
181
|
-
|
182
|
-
it "should insert explicitly specified primary key value" do
|
183
|
-
e = Employee.create(:employee_id => 100,:first_name => "Raimonds")
|
184
|
-
e.employee_id.should == 100
|
185
|
-
end
|
186
|
-
|
187
|
-
end
|
188
|
-
|
189
|
-
|
190
|
-
end
|
191
|
-
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
2
|
-
|
3
|
-
dir = DataMapper.root / 'lib' / 'dm-core' / 'spec'
|
4
|
-
|
5
|
-
require dir / 'adapter_shared_spec'
|
6
|
-
require dir / 'data_objects_adapter_shared_spec'
|
7
|
-
|
8
|
-
describe 'Adapter' do
|
9
|
-
supported_by :postgres do
|
10
|
-
describe DataMapper::Adapters::PostgresAdapter do
|
11
|
-
|
12
|
-
it_should_behave_like 'An Adapter'
|
13
|
-
it_should_behave_like 'A DataObjects Adapter'
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
2
|
-
|
3
|
-
dir = DataMapper.root / 'lib' / 'dm-core' / 'spec'
|
4
|
-
|
5
|
-
require dir / 'adapter_shared_spec'
|
6
|
-
require dir / 'data_objects_adapter_shared_spec'
|
7
|
-
|
8
|
-
describe 'Adapter' do
|
9
|
-
supported_by :sqlite3 do
|
10
|
-
describe DataMapper::Adapters::Sqlite3Adapter do
|
11
|
-
|
12
|
-
it_should_behave_like 'An Adapter'
|
13
|
-
it_should_behave_like 'A DataObjects Adapter'
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
2
|
-
|
3
|
-
dir = DataMapper.root / 'lib' / 'dm-core' / 'spec'
|
4
|
-
|
5
|
-
require dir / 'adapter_shared_spec'
|
6
|
-
require dir / 'data_objects_adapter_shared_spec'
|
7
|
-
|
8
|
-
describe 'Adapter' do
|
9
|
-
supported_by :sqlserver do
|
10
|
-
describe DataMapper::Adapters::SqlserverAdapter do
|
11
|
-
|
12
|
-
it_should_behave_like 'An Adapter'
|
13
|
-
it_should_behave_like 'A DataObjects Adapter'
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
|
2
|
-
require DataMapper.root / 'lib' / 'dm-core' / 'spec' / 'adapter_shared_spec'
|
3
|
-
|
4
|
-
describe 'Adapter' do
|
5
|
-
supported_by :yaml do
|
6
|
-
describe DataMapper::Adapters::YamlAdapter do
|
7
|
-
|
8
|
-
it_should_behave_like 'An Adapter'
|
9
|
-
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|