ruby-plsql 0.3.1 → 0.4.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/.gitignore +10 -0
- data/History.txt +7 -0
- data/README.rdoc +97 -29
- data/Rakefile +49 -0
- data/VERSION +1 -0
- data/lib/plsql/connection.rb +85 -11
- data/lib/plsql/jdbc_connection.rb +317 -165
- data/lib/plsql/oci_connection.rb +158 -78
- data/lib/plsql/package.rb +5 -5
- data/lib/plsql/procedure.rb +69 -134
- data/lib/plsql/procedure_call.rb +345 -0
- data/lib/plsql/schema.rb +58 -40
- data/lib/plsql/sequence.rb +49 -0
- data/lib/plsql/sql_statements.rb +61 -0
- data/lib/plsql/table.rb +285 -0
- data/lib/plsql/version.rb +3 -0
- data/lib/ruby-plsql.rb +1 -0
- data/lib/ruby_plsql.rb +7 -40
- data/spec/plsql/connection_spec.rb +40 -24
- data/spec/plsql/procedure_spec.rb +1145 -453
- data/spec/plsql/schema_spec.rb +9 -2
- data/spec/plsql/sequence_spec.rb +67 -0
- data/spec/plsql/sql_statements_spec.rb +109 -0
- data/spec/plsql/table_spec.rb +269 -0
- data/spec/spec_helper.rb +20 -10
- metadata +35 -34
- data/lib/ruby_plsql/version.rb +0 -3
data/spec/plsql/schema_spec.rb
CHANGED
@@ -34,7 +34,14 @@ describe "Schema connection" do
|
|
34
34
|
|
35
35
|
it "should return schema name" do
|
36
36
|
plsql.connection = @conn
|
37
|
-
plsql.schema_name.should ==
|
37
|
+
plsql.schema_name.should == DATABASE_USERS_AND_PASSWORDS[0][0].upcase
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return new schema name after reconnection" do
|
41
|
+
plsql.connection = @conn
|
42
|
+
plsql.schema_name.should == DATABASE_USERS_AND_PASSWORDS[0][0].upcase
|
43
|
+
plsql.connection = get_connection(1)
|
44
|
+
plsql.schema_name.should == DATABASE_USERS_AND_PASSWORDS[1][0].upcase
|
38
45
|
end
|
39
46
|
|
40
47
|
it "should return nil schema name if not connected" do
|
@@ -117,4 +124,4 @@ describe "ActiveRecord connection" do
|
|
117
124
|
it "should have the same connection as default schema" do
|
118
125
|
plsql.hr.connection.should == plsql.connection
|
119
126
|
end
|
120
|
-
end
|
127
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe "Table" do
|
4
|
+
before(:all) do
|
5
|
+
plsql.connection = get_connection
|
6
|
+
plsql.connection.autocommit = false
|
7
|
+
plsql.execute "CREATE SEQUENCE test_employees_seq"
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
plsql.execute "DROP SEQUENCE test_employees_seq"
|
12
|
+
plsql.logoff
|
13
|
+
end
|
14
|
+
|
15
|
+
after(:each) do
|
16
|
+
plsql.rollback
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "find" do
|
20
|
+
|
21
|
+
it "should find existing sequence" do
|
22
|
+
PLSQL::Sequence.find(plsql, :test_employees_seq).should_not be_nil
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should not find nonexisting table" do
|
26
|
+
PLSQL::Sequence.find(plsql, :qwerty123456).should be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should find existing sequence in schema" do
|
30
|
+
plsql.test_employees_seq.should be_a(PLSQL::Sequence)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "synonym" do
|
36
|
+
|
37
|
+
before(:all) do
|
38
|
+
plsql.connection.exec "CREATE SYNONYM test_employees_seq_synonym FOR hr.test_employees_seq"
|
39
|
+
end
|
40
|
+
|
41
|
+
after(:all) do
|
42
|
+
plsql.connection.exec "DROP SYNONYM test_employees_seq_synonym" rescue nil
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should find synonym to sequence" do
|
46
|
+
PLSQL::Sequence.find(plsql, :test_employees_seq_synonym).should_not be_nil
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should find sequence using synonym in schema" do
|
50
|
+
plsql.test_employees_seq_synonym.should be_a(PLSQL::Sequence)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "values" do
|
56
|
+
it "should get next value from sequence" do
|
57
|
+
next_value = plsql.select_one "SELECT test_employees_seq.NEXTVAL FROM dual"
|
58
|
+
plsql.test_employees_seq.nextval.should == next_value + 1
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should get current value from sequence" do
|
62
|
+
next_value = plsql.test_employees_seq.nextval
|
63
|
+
plsql.test_employees_seq.currval.should == next_value
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe "SQL statements /" do
|
4
|
+
before(:all) do
|
5
|
+
plsql.connection = get_connection
|
6
|
+
plsql.connection.autocommit = false
|
7
|
+
end
|
8
|
+
|
9
|
+
after(:all) do
|
10
|
+
plsql.logoff
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
plsql.rollback
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "SELECT" do
|
18
|
+
before(:all) do
|
19
|
+
plsql.execute "DROP TABLE test_employees" rescue nil
|
20
|
+
plsql.execute <<-SQL
|
21
|
+
CREATE TABLE test_employees (
|
22
|
+
employee_id NUMBER(15),
|
23
|
+
first_name VARCHAR2(50),
|
24
|
+
last_name VARCHAR2(50),
|
25
|
+
hire_date DATE
|
26
|
+
)
|
27
|
+
SQL
|
28
|
+
plsql.execute <<-SQL
|
29
|
+
CREATE OR REPLACE PROCEDURE test_insert_employee(p_employee test_employees%ROWTYPE)
|
30
|
+
IS
|
31
|
+
BEGIN
|
32
|
+
INSERT INTO test_employees
|
33
|
+
VALUES p_employee;
|
34
|
+
END;
|
35
|
+
SQL
|
36
|
+
@employees = (1..10).map do |i|
|
37
|
+
{
|
38
|
+
:employee_id => i,
|
39
|
+
:first_name => "First #{i}",
|
40
|
+
:last_name => "Last #{i}",
|
41
|
+
:hire_date => Time.local(2000,01,i)
|
42
|
+
}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
before(:each) do
|
47
|
+
@employees.each do |e|
|
48
|
+
plsql.test_insert_employee(e)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
after(:all) do
|
53
|
+
plsql.execute "DROP PROCEDURE test_insert_employee"
|
54
|
+
plsql.execute "DROP TABLE test_employees"
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should select first result" do
|
58
|
+
plsql.select(:first, "SELECT * FROM test_employees WHERE employee_id = :employee_id",
|
59
|
+
@employees.first[:employee_id]).should == @employees.first
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should select one value" do
|
63
|
+
plsql.select_one("SELECT count(*) FROM test_employees").should == @employees.size
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should return nil when selecting non-existing one value" do
|
67
|
+
plsql.select_one("SELECT employee_id FROM test_employees WHERE 1=2").should be_nil
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should select all results" do
|
71
|
+
plsql.select(:all, "SELECT * FROM test_employees ORDER BY employee_id").should == @employees
|
72
|
+
plsql.select("SELECT * FROM test_employees ORDER BY employee_id").should == @employees
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
# describe "INSERT" do
|
78
|
+
# before(:all) do
|
79
|
+
# plsql.execute "DROP TABLE test_employees" rescue nil
|
80
|
+
# plsql.execute <<-SQL
|
81
|
+
# CREATE TABLE test_employees (
|
82
|
+
# employee_id NUMBER(15),
|
83
|
+
# first_name VARCHAR2(50),
|
84
|
+
# last_name VARCHAR2(50),
|
85
|
+
# hire_date DATE
|
86
|
+
# )
|
87
|
+
# SQL
|
88
|
+
# @employees = (1..10).map do |i|
|
89
|
+
# {
|
90
|
+
# :employee_id => i,
|
91
|
+
# :first_name => "First #{i}",
|
92
|
+
# :last_name => "Last #{i}",
|
93
|
+
# :hire_date => Time.local(2000,01,i)
|
94
|
+
# }
|
95
|
+
# end
|
96
|
+
# end
|
97
|
+
#
|
98
|
+
# after(:all) do
|
99
|
+
# plsql.execute "DROP TABLE test_employees"
|
100
|
+
# end
|
101
|
+
#
|
102
|
+
# # it "should insert a record in table" do
|
103
|
+
# # plsql.test_employees.insert @employees.first
|
104
|
+
# # plsql.test_employees.select(:all).should == [@employees.first]
|
105
|
+
# # end
|
106
|
+
#
|
107
|
+
# end
|
108
|
+
|
109
|
+
end
|
@@ -0,0 +1,269 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe "Table" do
|
4
|
+
before(:all) do
|
5
|
+
plsql.connection = get_connection
|
6
|
+
plsql.connection.autocommit = false
|
7
|
+
plsql.execute <<-SQL
|
8
|
+
CREATE TABLE test_employees (
|
9
|
+
employee_id NUMBER(15),
|
10
|
+
first_name VARCHAR2(50),
|
11
|
+
last_name VARCHAR2(50),
|
12
|
+
hire_date DATE
|
13
|
+
)
|
14
|
+
SQL
|
15
|
+
|
16
|
+
plsql.connection.exec <<-SQL
|
17
|
+
CREATE OR REPLACE TYPE t_address AS OBJECT (
|
18
|
+
street VARCHAR2(50),
|
19
|
+
city VARCHAR2(50),
|
20
|
+
country VARCHAR2(50)
|
21
|
+
)
|
22
|
+
SQL
|
23
|
+
plsql.connection.exec <<-SQL
|
24
|
+
CREATE OR REPLACE TYPE t_phone AS OBJECT (
|
25
|
+
type VARCHAR2(10),
|
26
|
+
phone_number VARCHAR2(50)
|
27
|
+
)
|
28
|
+
SQL
|
29
|
+
plsql.connection.exec <<-SQL
|
30
|
+
CREATE OR REPLACE TYPE t_phones AS VARRAY(10) OF T_PHONE
|
31
|
+
SQL
|
32
|
+
plsql.connection.exec <<-SQL
|
33
|
+
CREATE TABLE test_employees2 (
|
34
|
+
employee_id NUMBER(15),
|
35
|
+
first_name VARCHAR2(50),
|
36
|
+
last_name VARCHAR2(50),
|
37
|
+
hire_date DATE,
|
38
|
+
address t_address,
|
39
|
+
phones t_phones
|
40
|
+
)
|
41
|
+
SQL
|
42
|
+
@employees = (1..10).map do |i|
|
43
|
+
{
|
44
|
+
:employee_id => i,
|
45
|
+
:first_name => "First #{i}",
|
46
|
+
:last_name => "Last #{i}",
|
47
|
+
:hire_date => Time.local(2000,01,i)
|
48
|
+
}
|
49
|
+
end
|
50
|
+
@employees2 = (1..10).map do |i|
|
51
|
+
{
|
52
|
+
:employee_id => i,
|
53
|
+
:first_name => "First #{i}",
|
54
|
+
:last_name => "Last #{i}",
|
55
|
+
:hire_date => Time.local(2000,01,i),
|
56
|
+
:address => {:street => "Street #{i}", :city => "City #{i}", :country => "County #{i}"},
|
57
|
+
:phones => [{:type => "mobile", :phone_number => "Mobile#{i}"}, {:type => "fixed", :phone_number => "Fixed#{i}"}]
|
58
|
+
}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
after(:all) do
|
63
|
+
plsql.execute "DROP TABLE test_employees"
|
64
|
+
plsql.execute "DROP TABLE test_employees2"
|
65
|
+
plsql.execute "DROP TYPE t_phones"
|
66
|
+
plsql.execute "DROP TYPE t_phone"
|
67
|
+
plsql.execute "DROP TYPE t_address"
|
68
|
+
plsql.logoff
|
69
|
+
end
|
70
|
+
|
71
|
+
after(:each) do
|
72
|
+
plsql.rollback
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "find" do
|
76
|
+
|
77
|
+
it "should find existing table" do
|
78
|
+
PLSQL::Table.find(plsql, :test_employees).should_not be_nil
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should not find nonexisting table" do
|
82
|
+
PLSQL::Table.find(plsql, :qwerty123456).should be_nil
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should find existing table in schema" do
|
86
|
+
plsql.test_employees.should be_a(PLSQL::Table)
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "synonym" do
|
92
|
+
|
93
|
+
before(:all) do
|
94
|
+
plsql.connection.exec "CREATE SYNONYM test_employees_synonym FOR hr.test_employees"
|
95
|
+
end
|
96
|
+
|
97
|
+
after(:all) do
|
98
|
+
plsql.connection.exec "DROP SYNONYM test_employees_synonym" rescue nil
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should find synonym to table" do
|
102
|
+
PLSQL::Table.find(plsql, :test_employees_synonym).should_not be_nil
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should find table using synonym in schema" do
|
106
|
+
plsql.test_employees_synonym.should be_a(PLSQL::Table)
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "public synonym" do
|
112
|
+
|
113
|
+
it "should find public synonym to table" do
|
114
|
+
PLSQL::Table.find(plsql, :dual).should_not be_nil
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should find table using public synonym in schema" do
|
118
|
+
plsql.dual.should be_a(PLSQL::Table)
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "columns" do
|
124
|
+
|
125
|
+
it "should get columns metadata for table" do
|
126
|
+
plsql.test_employees.columns.should == {
|
127
|
+
:employee_id =>
|
128
|
+
{:position=>1, :data_type=>"NUMBER", :data_length=>22, :data_precision=>15, :data_scale=>0, :char_used=>nil, :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
|
129
|
+
:first_name =>
|
130
|
+
{:position=>2, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :char_used=>"B", :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
|
131
|
+
:last_name =>
|
132
|
+
{:position=>3, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :char_used=>"B", :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
|
133
|
+
:hire_date =>
|
134
|
+
{:position=>4, :data_type=>"DATE", :data_length=>7, :data_precision=>nil, :data_scale=>nil, :char_used=>nil, :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil}
|
135
|
+
}
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should get columns metadata for table with object columns" do
|
139
|
+
plsql.test_employees2.columns.should == {
|
140
|
+
:employee_id =>
|
141
|
+
{:position=>1, :data_type=>"NUMBER", :data_length=>22, :data_precision=>15, :data_scale=>0, :char_used=>nil, :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
|
142
|
+
:first_name =>
|
143
|
+
{:position=>2, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :char_used=>"B", :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
|
144
|
+
:last_name =>
|
145
|
+
{:position=>3, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :char_used=>"B", :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
|
146
|
+
:hire_date =>
|
147
|
+
{:position=>4, :data_type=>"DATE", :data_length=>7, :data_precision=>nil, :data_scale=>nil, :char_used=>nil, :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
|
148
|
+
:address =>
|
149
|
+
{:position=>5, :data_type=>"OBJECT", :data_length=>nil, :data_precision=>nil, :data_scale=>nil, :char_used=>nil, :type_owner=>"HR", :type_name=>"T_ADDRESS", :sql_type_name=>"HR.T_ADDRESS"},
|
150
|
+
:phones =>
|
151
|
+
{:position=>6, :data_type=>"TABLE", :data_length=>nil, :data_precision=>nil, :data_scale=>nil, :char_used=>nil, :type_owner=>"HR", :type_name=>"T_PHONES", :sql_type_name=>"HR.T_PHONES"}
|
152
|
+
}
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
describe "insert" do
|
158
|
+
it "should insert a record in table" do
|
159
|
+
plsql.test_employees.insert @employees.first
|
160
|
+
plsql.test_employees.all.should == [@employees.first]
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should insert array of records in table" do
|
164
|
+
plsql.test_employees.insert @employees
|
165
|
+
plsql.test_employees.all("ORDER BY employee_id").should == @employees
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should insert a record in table with object types" do
|
169
|
+
plsql.test_employees2.insert @employees2.first
|
170
|
+
plsql.test_employees2.all.should == [@employees2.first]
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should insert array of records in table with object types" do
|
174
|
+
plsql.test_employees2.insert @employees2
|
175
|
+
plsql.test_employees2.all("ORDER BY employee_id").should == @employees2
|
176
|
+
end
|
177
|
+
|
178
|
+
end
|
179
|
+
|
180
|
+
describe "select" do
|
181
|
+
before(:each) do
|
182
|
+
plsql.test_employees.insert @employees
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should select first record in table" do
|
186
|
+
plsql.test_employees.select(:first, "ORDER BY employee_id").should == @employees.first
|
187
|
+
plsql.test_employees.first("ORDER BY employee_id").should == @employees.first
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should select all records in table" do
|
191
|
+
plsql.test_employees.select(:all, "ORDER BY employee_id").should == @employees
|
192
|
+
plsql.test_employees.all("ORDER BY employee_id").should == @employees
|
193
|
+
plsql.test_employees.all(:order_by => :employee_id).should == @employees
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should select record in table using WHERE condition" do
|
197
|
+
plsql.test_employees.select(:first, "WHERE employee_id = :1", @employees.first[:employee_id]).should == @employees.first
|
198
|
+
plsql.test_employees.first("WHERE employee_id = :1", @employees.first[:employee_id]).should == @employees.first
|
199
|
+
plsql.test_employees.first(:employee_id => @employees.first[:employee_id]).should == @employees.first
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should count records in table" do
|
203
|
+
plsql.test_employees.select(:count).should == @employees.size
|
204
|
+
plsql.test_employees.count.should == @employees.size
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should count records in table using condition" do
|
208
|
+
plsql.test_employees.select(:count, "WHERE employee_id <= :1", @employees[2][:employee_id]).should == 3
|
209
|
+
plsql.test_employees.count("WHERE employee_id <= :1", @employees[2][:employee_id]).should == 3
|
210
|
+
end
|
211
|
+
|
212
|
+
end
|
213
|
+
|
214
|
+
describe "update" do
|
215
|
+
it "should update a record in table" do
|
216
|
+
employee_id = @employees.first[:employee_id]
|
217
|
+
plsql.test_employees.insert @employees.first
|
218
|
+
plsql.test_employees.update :first_name => 'Test', :where => {:employee_id => employee_id}
|
219
|
+
plsql.test_employees.first(:employee_id => employee_id)[:first_name].should == 'Test'
|
220
|
+
end
|
221
|
+
|
222
|
+
it "should update a record in table using String WHERE condition" do
|
223
|
+
employee_id = @employees.first[:employee_id]
|
224
|
+
plsql.test_employees.insert @employees
|
225
|
+
plsql.test_employees.update :first_name => 'Test', :where => "employee_id = #{employee_id}"
|
226
|
+
plsql.test_employees.first(:employee_id => employee_id)[:first_name].should == 'Test'
|
227
|
+
# all other records should not be changed
|
228
|
+
plsql.test_employees.all("WHERE employee_id > :1", employee_id) do |employee|
|
229
|
+
employee[:first_name].should_not == 'Test'
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should update all records in table" do
|
234
|
+
plsql.test_employees.insert @employees
|
235
|
+
plsql.test_employees.update :first_name => 'Test'
|
236
|
+
plsql.test_employees.all do |employee|
|
237
|
+
employee[:first_name].should == 'Test'
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should update a record in table with object type" do
|
242
|
+
employee = @employees2[0]
|
243
|
+
employee2 = @employees2[1]
|
244
|
+
plsql.test_employees2.insert employee
|
245
|
+
plsql.test_employees2.update :address => employee2[:address], :phones => employee2[:phones], :where => {:employee_id => employee[:employee_id]}
|
246
|
+
updated_employee = plsql.test_employees2.first(:employee_id => employee[:employee_id])
|
247
|
+
updated_employee[:address].should == employee2[:address]
|
248
|
+
updated_employee[:phones].should == employee2[:phones]
|
249
|
+
end
|
250
|
+
|
251
|
+
end
|
252
|
+
|
253
|
+
describe "delete" do
|
254
|
+
it "should delete record from table" do
|
255
|
+
employee_id = @employees.first[:employee_id]
|
256
|
+
plsql.test_employees.insert @employees
|
257
|
+
plsql.test_employees.delete :employee_id => employee_id
|
258
|
+
plsql.test_employees.first(:employee_id => employee_id).should be_nil
|
259
|
+
plsql.test_employees.all(:order_by => :employee_id).should == @employees[1, @employees.size-1]
|
260
|
+
end
|
261
|
+
|
262
|
+
it "should delete all records from table" do
|
263
|
+
plsql.test_employees.insert @employees
|
264
|
+
plsql.test_employees.delete
|
265
|
+
plsql.test_employees.all.should be_empty
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
end
|