activerecord-oracle_enhanced-adapter 1.7.11 → 1.8.0.beta1
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.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/Gemfile +20 -11
- data/History.md +123 -4
- data/RUNNING_TESTS.md +79 -55
- data/Rakefile +13 -19
- data/VERSION +1 -1
- data/activerecord-oracle_enhanced-adapter.gemspec +16 -17
- data/lib/active_record/connection_adapters/emulation/oracle_adapter.rb +1 -1
- data/lib/active_record/connection_adapters/oracle_enhanced/column.rb +7 -59
- data/lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb +6 -50
- data/lib/active_record/connection_adapters/oracle_enhanced/connection.rb +11 -11
- data/lib/active_record/connection_adapters/oracle_enhanced/context_index.rb +117 -117
- data/lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb +30 -23
- data/lib/active_record/connection_adapters/oracle_enhanced/database_tasks.rb +10 -10
- data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb +48 -70
- data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_quoting.rb +1 -4
- data/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +51 -69
- data/lib/active_record/connection_adapters/oracle_enhanced/oci_quoting.rb +4 -4
- data/lib/active_record/connection_adapters/oracle_enhanced/procedures.rb +76 -76
- data/lib/active_record/connection_adapters/oracle_enhanced/quoting.rb +13 -42
- data/lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb +60 -64
- data/lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb +33 -47
- data/lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb +146 -159
- data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +94 -132
- data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb +3 -3
- data/lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb +65 -100
- data/lib/active_record/connection_adapters/oracle_enhanced/version.rb +1 -1
- data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +250 -487
- data/lib/active_record/oracle_enhanced/type/boolean.rb +7 -10
- data/lib/active_record/oracle_enhanced/type/integer.rb +3 -4
- data/lib/active_record/oracle_enhanced/type/national_character_string.rb +1 -1
- data/lib/active_record/oracle_enhanced/type/raw.rb +2 -3
- data/lib/active_record/oracle_enhanced/type/string.rb +2 -2
- data/lib/active_record/oracle_enhanced/type/text.rb +2 -2
- data/lib/activerecord-oracle_enhanced-adapter.rb +2 -2
- data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +57 -131
- data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +32 -34
- data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +40 -42
- data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +83 -85
- data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +205 -286
- data/spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb +14 -6
- data/spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb +3 -5
- data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +42 -49
- data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +1 -3
- data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +68 -71
- data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +51 -92
- data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +221 -327
- data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +16 -18
- data/spec/spec_helper.rb +59 -57
- metadata +10 -10
@@ -1,13 +1,12 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require 'tempfile'
|
1
|
+
require "active_record/connection_adapters/oracle_enhanced/database_tasks"
|
2
|
+
require "stringio"
|
3
|
+
require "tempfile"
|
5
4
|
|
6
5
|
describe "Oracle Enhanced adapter database tasks" do
|
7
6
|
let(:config) { CONNECTION_PARAMS.with_indifferent_access }
|
8
7
|
|
9
8
|
describe "create" do
|
10
|
-
let(:new_user_config) { config.merge(
|
9
|
+
let(:new_user_config) { config.merge(username: "oracle_enhanced_test_user") }
|
11
10
|
before do
|
12
11
|
fake_terminal(SYSTEM_CONNECTION_PARAMS[:password]) do
|
13
12
|
ActiveRecord::Tasks::DatabaseTasks.create(new_user_config)
|
@@ -34,6 +33,15 @@ describe "Oracle Enhanced adapter database tasks" do
|
|
34
33
|
end
|
35
34
|
|
36
35
|
context "with test table" do
|
36
|
+
before(:all) do
|
37
|
+
$stdout, @original_stdout = StringIO.new, $stdout
|
38
|
+
$stderr, @original_stderr = StringIO.new, $stderr
|
39
|
+
end
|
40
|
+
|
41
|
+
after(:all) do
|
42
|
+
$stdout, $stderr = @original_stdout, @original_stderr
|
43
|
+
end
|
44
|
+
|
37
45
|
before do
|
38
46
|
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
39
47
|
ActiveRecord::Base.connection.execute "CREATE TABLE test_posts (name VARCHAR2(20))"
|
@@ -66,7 +74,7 @@ describe "Oracle Enhanced adapter database tasks" do
|
|
66
74
|
it "dumps the database structure to a file without the schema information" do
|
67
75
|
contents = File.read(temp_file)
|
68
76
|
expect(contents).to include('CREATE TABLE "TEST_POSTS"')
|
69
|
-
expect(contents).not_to include(
|
77
|
+
expect(contents).not_to include("INSERT INTO schema_migrations")
|
70
78
|
end
|
71
79
|
end
|
72
80
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe "OracleEnhancedAdapter logging dbms_output from plsql" do
|
4
2
|
include LoggerSpecHelper
|
5
3
|
|
@@ -42,7 +40,7 @@ describe "OracleEnhancedAdapter logging dbms_output from plsql" do
|
|
42
40
|
it "should NOT log dbms output when dbms output is disabled" do
|
43
41
|
@conn.disable_dbms_output
|
44
42
|
|
45
|
-
expect(@conn.select_all("select more_than_five_characters_long('hi there') is_it_long from dual").to_a).to eq([{
|
43
|
+
expect(@conn.select_all("select more_than_five_characters_long('hi there') is_it_long from dual").to_a).to eq([{ "is_it_long" => 1 }])
|
46
44
|
|
47
45
|
expect(@logger.output(:debug)).not_to match(/^DBMS_OUTPUT/)
|
48
46
|
end
|
@@ -50,7 +48,7 @@ describe "OracleEnhancedAdapter logging dbms_output from plsql" do
|
|
50
48
|
it "should log dbms output lines to the rails log" do
|
51
49
|
@conn.enable_dbms_output
|
52
50
|
|
53
|
-
expect(@conn.select_all("select more_than_five_characters_long('hi there') is_it_long from dual").to_a).to eq([{
|
51
|
+
expect(@conn.select_all("select more_than_five_characters_long('hi there') is_it_long from dual").to_a).to eq([{ "is_it_long" => 1 }])
|
54
52
|
|
55
53
|
expect(@logger.output(:debug)).to match(/^DBMS_OUTPUT: before the if -hi there-$/)
|
56
54
|
expect(@logger.output(:debug)).to match(/^DBMS_OUTPUT: it is longer than 5$/)
|
@@ -60,7 +58,7 @@ describe "OracleEnhancedAdapter logging dbms_output from plsql" do
|
|
60
58
|
it "should log dbms output lines to the rails log" do
|
61
59
|
@conn.enable_dbms_output
|
62
60
|
|
63
|
-
expect(@conn.select_all("select more_than_five_characters_long('short') is_it_long from dual").to_a).to eq([{
|
61
|
+
expect(@conn.select_all("select more_than_five_characters_long('short') is_it_long from dual").to_a).to eq([{ "is_it_long" => 0 }])
|
64
62
|
|
65
63
|
expect(@logger.output(:debug)).to match(/^DBMS_OUTPUT: before the if -short-$/)
|
66
64
|
expect(@logger.output(:debug)).to match(/^DBMS_OUTPUT: it is 5 or shorter$/)
|
@@ -1,69 +1,62 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
if ActiveRecord::Base.method_defined?(:changed?)
|
4
2
|
|
5
3
|
describe "OracleEnhancedAdapter dirty object tracking" do
|
4
|
+
include SchemaSpecHelper
|
6
5
|
|
7
6
|
before(:all) do
|
8
7
|
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
hire_date DATE
|
21
|
-
)
|
22
|
-
SQL
|
23
|
-
@conn.execute <<-SQL
|
24
|
-
CREATE SEQUENCE test_employees_seq MINVALUE 1
|
25
|
-
INCREMENT BY 1 CACHE 20 NOORDER NOCYCLE
|
26
|
-
SQL
|
8
|
+
schema_define do
|
9
|
+
create_table :test_employees, force: true do |t|
|
10
|
+
t.string :first_name, limit: 20
|
11
|
+
t.string :last_name, limit: 25
|
12
|
+
t.integer :job_id, limit: 6, null: true
|
13
|
+
t.decimal :salary, precision: 8, scale: 2
|
14
|
+
t.text :comments
|
15
|
+
t.date :hire_date
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
27
19
|
class TestEmployee < ActiveRecord::Base
|
28
20
|
end
|
29
21
|
end
|
30
22
|
|
31
23
|
after(:all) do
|
24
|
+
schema_define do
|
25
|
+
drop_table :test_employees
|
26
|
+
end
|
32
27
|
Object.send(:remove_const, "TestEmployee")
|
33
|
-
|
34
|
-
@conn.execute "DROP SEQUENCE test_employees_seq"
|
35
|
-
ActiveRecord::Base.clear_cache! if ActiveRecord::Base.respond_to?(:"clear_cache!")
|
28
|
+
ActiveRecord::Base.clear_cache!
|
36
29
|
end
|
37
30
|
|
38
31
|
it "should not mark empty string (stored as NULL) as changed when reassigning it" do
|
39
|
-
@employee = TestEmployee.create!(:
|
40
|
-
@employee.first_name =
|
32
|
+
@employee = TestEmployee.create!(first_name: "")
|
33
|
+
@employee.first_name = ""
|
41
34
|
expect(@employee).not_to be_changed
|
42
35
|
@employee.reload
|
43
|
-
@employee.first_name =
|
36
|
+
@employee.first_name = ""
|
44
37
|
expect(@employee).not_to be_changed
|
45
38
|
end
|
46
39
|
|
47
40
|
it "should not mark empty integer (stored as NULL) as changed when reassigning it" do
|
48
|
-
@employee = TestEmployee.create!(:
|
49
|
-
@employee.job_id =
|
41
|
+
@employee = TestEmployee.create!(job_id: "")
|
42
|
+
@employee.job_id = ""
|
50
43
|
expect(@employee).not_to be_changed
|
51
44
|
@employee.reload
|
52
|
-
@employee.job_id =
|
45
|
+
@employee.job_id = ""
|
53
46
|
expect(@employee).not_to be_changed
|
54
47
|
end
|
55
48
|
|
56
49
|
it "should not mark empty decimal (stored as NULL) as changed when reassigning it" do
|
57
|
-
@employee = TestEmployee.create!(:
|
58
|
-
@employee.salary =
|
50
|
+
@employee = TestEmployee.create!(salary: "")
|
51
|
+
@employee.salary = ""
|
59
52
|
expect(@employee).not_to be_changed
|
60
53
|
@employee.reload
|
61
|
-
@employee.salary =
|
54
|
+
@employee.salary = ""
|
62
55
|
expect(@employee).not_to be_changed
|
63
56
|
end
|
64
57
|
|
65
58
|
it "should not mark empty text (stored as NULL) as changed when reassigning it" do
|
66
|
-
@employee = TestEmployee.create!(:
|
59
|
+
@employee = TestEmployee.create!(comments: nil)
|
67
60
|
@employee.comments = nil
|
68
61
|
expect(@employee).not_to be_changed
|
69
62
|
@employee.reload
|
@@ -72,16 +65,16 @@ if ActiveRecord::Base.method_defined?(:changed?)
|
|
72
65
|
end
|
73
66
|
|
74
67
|
it "should not mark empty text (stored as empty_clob()) as changed when reassigning it" do
|
75
|
-
@employee = TestEmployee.create!(:
|
76
|
-
@employee.comments =
|
68
|
+
@employee = TestEmployee.create!(comments: "")
|
69
|
+
@employee.comments = ""
|
77
70
|
expect(@employee).not_to be_changed
|
78
71
|
@employee.reload
|
79
|
-
@employee.comments =
|
72
|
+
@employee.comments = ""
|
80
73
|
expect(@employee).not_to be_changed
|
81
74
|
end
|
82
75
|
|
83
76
|
it "should mark empty text (stored as empty_clob()) as changed when assigning nil to it" do
|
84
|
-
@employee = TestEmployee.create!(:
|
77
|
+
@employee = TestEmployee.create!(comments: "")
|
85
78
|
@employee.comments = nil
|
86
79
|
expect(@employee).to be_changed
|
87
80
|
@employee.reload
|
@@ -90,20 +83,20 @@ if ActiveRecord::Base.method_defined?(:changed?)
|
|
90
83
|
end
|
91
84
|
|
92
85
|
it "should mark empty text (stored as NULL) as changed when assigning '' to it" do
|
93
|
-
@employee = TestEmployee.create!(:
|
94
|
-
@employee.comments =
|
86
|
+
@employee = TestEmployee.create!(comments: nil)
|
87
|
+
@employee.comments = ""
|
95
88
|
expect(@employee).to be_changed
|
96
89
|
@employee.reload
|
97
|
-
@employee.comments =
|
90
|
+
@employee.comments = ""
|
98
91
|
expect(@employee).to be_changed
|
99
92
|
end
|
100
93
|
|
101
94
|
it "should not mark empty date (stored as NULL) as changed when reassigning it" do
|
102
|
-
@employee = TestEmployee.create!(:
|
103
|
-
@employee.hire_date =
|
95
|
+
@employee = TestEmployee.create!(hire_date: "")
|
96
|
+
@employee.hire_date = ""
|
104
97
|
expect(@employee).not_to be_changed
|
105
98
|
@employee.reload
|
106
|
-
@employee.hire_date =
|
99
|
+
@employee.hire_date = ""
|
107
100
|
expect(@employee).not_to be_changed
|
108
101
|
end
|
109
102
|
|
@@ -114,30 +107,30 @@ if ActiveRecord::Base.method_defined?(:changed?)
|
|
114
107
|
|
115
108
|
expect(@employee).not_to be_changed
|
116
109
|
|
117
|
-
@employee.job_id =
|
110
|
+
@employee.job_id = "0"
|
118
111
|
expect(@employee).not_to be_changed
|
119
112
|
end
|
120
113
|
|
121
114
|
it "should not update unchanged CLOBs" do
|
122
115
|
@employee = TestEmployee.create!(
|
123
|
-
:
|
116
|
+
comments: "initial"
|
124
117
|
)
|
125
118
|
expect(@employee.save!).to be_truthy
|
126
119
|
@employee.reload
|
127
|
-
expect(@employee.comments).to eq(
|
120
|
+
expect(@employee.comments).to eq("initial")
|
128
121
|
|
129
|
-
oci_conn = @conn.instance_variable_get(
|
122
|
+
oci_conn = @conn.instance_variable_get("@connection")
|
130
123
|
class << oci_conn
|
131
124
|
def write_lob(lob, value, is_binary = false); raise "don't do this'"; end
|
132
125
|
end
|
133
|
-
expect{@employee.save!}.not_to raise_exception(RuntimeError, "don't do this'")
|
126
|
+
expect { @employee.save! }.not_to raise_exception(RuntimeError, "don't do this'")
|
134
127
|
class << oci_conn
|
135
128
|
remove_method :write_lob
|
136
129
|
end
|
137
130
|
end
|
138
131
|
|
139
132
|
it "should be able to handle attributes which are not backed by a column" do
|
140
|
-
TestEmployee.create!(:
|
133
|
+
TestEmployee.create!(comments: "initial")
|
141
134
|
@employee = TestEmployee.select("#{TestEmployee.quoted_table_name}.*, 24 ranking").first
|
142
135
|
expect { @employee.ranking = 25 }.to_not raise_error
|
143
136
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe "OracleEnhancedAdapter emulate OracleAdapter" do
|
4
2
|
|
5
3
|
before(:all) do
|
@@ -10,7 +8,7 @@ describe "OracleEnhancedAdapter emulate OracleAdapter" do
|
|
10
8
|
end
|
11
9
|
|
12
10
|
it "should be an OracleAdapter" do
|
13
|
-
@conn = ActiveRecord::Base.establish_connection(CONNECTION_PARAMS.merge(:
|
11
|
+
@conn = ActiveRecord::Base.establish_connection(CONNECTION_PARAMS.merge(emulate_oracle_adapter: true))
|
14
12
|
expect(ActiveRecord::Base.connection).not_to be_nil
|
15
13
|
expect(ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters::OracleAdapter)).to be_truthy
|
16
14
|
end
|
@@ -1,6 +1,4 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
require 'ruby-plsql'
|
1
|
+
require "ruby-plsql"
|
4
2
|
|
5
3
|
describe "OracleEnhancedAdapter custom methods for create, update and destroy" do
|
6
4
|
include LoggerSpecHelper
|
@@ -95,7 +93,6 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
95
93
|
END;
|
96
94
|
SQL
|
97
95
|
|
98
|
-
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = true
|
99
96
|
end
|
100
97
|
|
101
98
|
after(:all) do
|
@@ -115,55 +112,55 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
115
112
|
# should return ID of new record
|
116
113
|
set_create_method do
|
117
114
|
plsql.test_employees_pkg.create_employee(
|
118
|
-
:
|
119
|
-
:
|
120
|
-
:
|
121
|
-
:
|
122
|
-
:
|
123
|
-
:
|
115
|
+
p_first_name: first_name,
|
116
|
+
p_last_name: last_name,
|
117
|
+
p_hire_date: hire_date,
|
118
|
+
p_salary: salary,
|
119
|
+
p_description: "#{first_name} #{last_name}",
|
120
|
+
p_employee_id: nil
|
124
121
|
)[:p_employee_id]
|
125
122
|
end
|
126
123
|
|
127
124
|
# return value is ignored
|
128
125
|
set_update_method do
|
129
126
|
plsql.test_employees_pkg.update_employee(
|
130
|
-
:
|
131
|
-
:
|
132
|
-
:
|
133
|
-
:
|
134
|
-
:
|
135
|
-
:
|
127
|
+
p_employee_id: id,
|
128
|
+
p_first_name: first_name,
|
129
|
+
p_last_name: last_name,
|
130
|
+
p_hire_date: hire_date,
|
131
|
+
p_salary: salary,
|
132
|
+
p_description: "#{first_name} #{last_name}"
|
136
133
|
)
|
137
134
|
end
|
138
135
|
|
139
136
|
# return value is ignored
|
140
137
|
set_delete_method do
|
141
138
|
plsql.test_employees_pkg.delete_employee(
|
142
|
-
:
|
139
|
+
p_employee_id: id
|
143
140
|
)
|
144
141
|
end
|
145
142
|
|
146
143
|
private
|
147
144
|
|
148
|
-
|
149
|
-
|
150
|
-
|
145
|
+
def raise_make_transaction_rollback
|
146
|
+
raise "Make the transaction rollback"
|
147
|
+
end
|
151
148
|
end
|
152
149
|
|
153
|
-
@today = Date.new(2008,6,28)
|
150
|
+
@today = Date.new(2008, 6, 28)
|
154
151
|
@buffer = StringIO.new
|
155
152
|
end
|
156
153
|
|
157
154
|
after(:each) do
|
158
155
|
Object.send(:remove_const, "TestEmployee")
|
159
|
-
ActiveRecord::Base.clear_cache!
|
156
|
+
ActiveRecord::Base.clear_cache!
|
160
157
|
end
|
161
158
|
|
162
159
|
it "should create record" do
|
163
160
|
@employee = TestEmployee.create(
|
164
|
-
:
|
165
|
-
:
|
166
|
-
:
|
161
|
+
first_name: "First",
|
162
|
+
last_name: "Last",
|
163
|
+
hire_date: @today
|
167
164
|
)
|
168
165
|
@employee.reload
|
169
166
|
expect(@employee.first_name).to eq("First")
|
@@ -178,9 +175,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
178
175
|
TestEmployee.after_create :raise_make_transaction_rollback
|
179
176
|
|
180
177
|
@employee = TestEmployee.new(
|
181
|
-
:
|
182
|
-
:
|
183
|
-
:
|
178
|
+
first_name: "First",
|
179
|
+
last_name: "Last",
|
180
|
+
hire_date: @today
|
184
181
|
)
|
185
182
|
employees_count = TestEmployee.count
|
186
183
|
expect {
|
@@ -192,10 +189,10 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
192
189
|
|
193
190
|
it "should update record" do
|
194
191
|
@employee = TestEmployee.create(
|
195
|
-
:
|
196
|
-
:
|
197
|
-
:
|
198
|
-
:
|
192
|
+
first_name: "First",
|
193
|
+
last_name: "Last",
|
194
|
+
hire_date: @today,
|
195
|
+
description: "description"
|
199
196
|
)
|
200
197
|
@employee.reload
|
201
198
|
@employee.first_name = "Second"
|
@@ -208,10 +205,10 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
208
205
|
TestEmployee.after_update :raise_make_transaction_rollback
|
209
206
|
|
210
207
|
@employee = TestEmployee.create(
|
211
|
-
:
|
212
|
-
:
|
213
|
-
:
|
214
|
-
:
|
208
|
+
first_name: "First",
|
209
|
+
last_name: "Last",
|
210
|
+
hire_date: @today,
|
211
|
+
description: "description"
|
215
212
|
)
|
216
213
|
empl_id = @employee.id
|
217
214
|
@employee.reload
|
@@ -226,9 +223,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
226
223
|
it "should not update record if nothing is changed and partial writes are enabled" do
|
227
224
|
TestEmployee.partial_writes = true
|
228
225
|
@employee = TestEmployee.create(
|
229
|
-
:
|
230
|
-
:
|
231
|
-
:
|
226
|
+
first_name: "First",
|
227
|
+
last_name: "Last",
|
228
|
+
hire_date: @today
|
232
229
|
)
|
233
230
|
@employee.reload
|
234
231
|
@employee.save!
|
@@ -239,9 +236,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
239
236
|
it "should update record if nothing is changed and partial writes are disabled" do
|
240
237
|
TestEmployee.partial_writes = false
|
241
238
|
@employee = TestEmployee.create(
|
242
|
-
:
|
243
|
-
:
|
244
|
-
:
|
239
|
+
first_name: "First",
|
240
|
+
last_name: "Last",
|
241
|
+
hire_date: @today
|
245
242
|
)
|
246
243
|
@employee.reload
|
247
244
|
@employee.save!
|
@@ -251,9 +248,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
251
248
|
|
252
249
|
it "should delete record" do
|
253
250
|
@employee = TestEmployee.create(
|
254
|
-
:
|
255
|
-
:
|
256
|
-
:
|
251
|
+
first_name: "First",
|
252
|
+
last_name: "Last",
|
253
|
+
hire_date: @today
|
257
254
|
)
|
258
255
|
@employee.reload
|
259
256
|
empl_id = @employee.id
|
@@ -264,9 +261,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
264
261
|
|
265
262
|
it "should delete record and set destroyed flag" do
|
266
263
|
@employee = TestEmployee.create(
|
267
|
-
:
|
268
|
-
:
|
269
|
-
:
|
264
|
+
first_name: "First",
|
265
|
+
last_name: "Last",
|
266
|
+
hire_date: @today
|
270
267
|
)
|
271
268
|
@employee.reload
|
272
269
|
@employee.destroy
|
@@ -278,9 +275,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
278
275
|
TestEmployee.after_destroy :raise_make_transaction_rollback
|
279
276
|
|
280
277
|
@employee = TestEmployee.create(
|
281
|
-
:
|
282
|
-
:
|
283
|
-
:
|
278
|
+
first_name: "First",
|
279
|
+
last_name: "Last",
|
280
|
+
hire_date: @today
|
284
281
|
)
|
285
282
|
@employee.reload
|
286
283
|
empl_id = @employee.id
|
@@ -294,9 +291,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
294
291
|
|
295
292
|
it "should set timestamps when creating record" do
|
296
293
|
@employee = TestEmployee.create(
|
297
|
-
:
|
298
|
-
:
|
299
|
-
:
|
294
|
+
first_name: "First",
|
295
|
+
last_name: "Last",
|
296
|
+
hire_date: @today
|
300
297
|
)
|
301
298
|
expect(@employee.created_at).not_to be_nil
|
302
299
|
expect(@employee.updated_at).not_to be_nil
|
@@ -304,9 +301,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
304
301
|
|
305
302
|
it "should set timestamps when updating record" do
|
306
303
|
@employee = TestEmployee.create(
|
307
|
-
:
|
308
|
-
:
|
309
|
-
:
|
304
|
+
first_name: "First",
|
305
|
+
last_name: "Last",
|
306
|
+
hire_date: @today
|
310
307
|
)
|
311
308
|
@employee.reload
|
312
309
|
expect(@employee.created_at).to be_nil
|
@@ -320,9 +317,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
320
317
|
it "should log create record" do
|
321
318
|
set_logger
|
322
319
|
@employee = TestEmployee.create(
|
323
|
-
:
|
324
|
-
:
|
325
|
-
:
|
320
|
+
first_name: "First",
|
321
|
+
last_name: "Last",
|
322
|
+
hire_date: @today
|
326
323
|
)
|
327
324
|
expect(@logger.logged(:debug).last).to match(/^TestEmployee Create \(\d+\.\d+(ms)?\) custom create method$/)
|
328
325
|
clear_logger
|
@@ -331,9 +328,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
331
328
|
it "should log update record" do
|
332
329
|
(TestEmployee.partial_writes = false) rescue nil
|
333
330
|
@employee = TestEmployee.create(
|
334
|
-
:
|
335
|
-
:
|
336
|
-
:
|
331
|
+
first_name: "First",
|
332
|
+
last_name: "Last",
|
333
|
+
hire_date: @today
|
337
334
|
)
|
338
335
|
set_logger
|
339
336
|
@employee.save!
|
@@ -343,9 +340,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
343
340
|
|
344
341
|
it "should log delete record" do
|
345
342
|
@employee = TestEmployee.create(
|
346
|
-
:
|
347
|
-
:
|
348
|
-
:
|
343
|
+
first_name: "First",
|
344
|
+
last_name: "Last",
|
345
|
+
hire_date: @today
|
349
346
|
)
|
350
347
|
set_logger
|
351
348
|
@employee.destroy
|
@@ -355,8 +352,8 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
355
352
|
|
356
353
|
it "should validate new record before creation" do
|
357
354
|
@employee = TestEmployee.new(
|
358
|
-
:
|
359
|
-
:
|
355
|
+
last_name: "Last",
|
356
|
+
hire_date: @today
|
360
357
|
)
|
361
358
|
expect(@employee.save).to be_falsey
|
362
359
|
expect(@employee.errors[:first_name]).not_to be_blank
|
@@ -364,9 +361,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
364
361
|
|
365
362
|
it "should validate existing record before update" do
|
366
363
|
@employee = TestEmployee.create(
|
367
|
-
:
|
368
|
-
:
|
369
|
-
:
|
364
|
+
first_name: "First",
|
365
|
+
last_name: "Last",
|
366
|
+
hire_date: @today
|
370
367
|
)
|
371
368
|
@employee.first_name = nil
|
372
369
|
expect(@employee.save).to be_falsey
|