ruby-plsql 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -344,13 +344,12 @@ describe "Parameter type mapping /" do
344
344
  end
345
345
 
346
346
  it "should raise exception if procedure cannot be found based on number of arguments" do
347
- lambda { plsql.test_package2.test_procedure() }.should raise_error(ArgumentError)
347
+ lambda { plsql.test_package2.test_procedure() }.should raise_error(/wrong number or types of arguments/i)
348
348
  end
349
349
 
350
- # TODO: should try to implement matching by types of arguments
351
- # it "should find procedure based on types of arguments" do
352
- # plsql.test_package2.test_procedure(111, nil).should == {:p_result => '111'}
353
- # end
350
+ it "should find procedure based on types of arguments" do
351
+ plsql.test_package2.test_procedure(111, nil).should == {:p_result => '111'}
352
+ end
354
353
 
355
354
  it "should find procedure based on names of named arguments" do
356
355
  plsql.test_package2.test_procedure(:p_number => 111, :p_result => nil).should == {:p_result => '111'}
@@ -559,6 +558,28 @@ describe "Parameter type mapping /" do
559
558
  RETURN p_employee.first_name || ' ' || p_employee.last_name;
560
559
  END test_full_name;
561
560
  SQL
561
+ plsql.execute <<-SQL
562
+ CREATE OR REPLACE PACKAGE test_record IS
563
+ TYPE t_employee IS RECORD(
564
+ employee_id NUMBER(15),
565
+ first_name VARCHAR2(50),
566
+ last_name VARCHAR2(50),
567
+ hire_date DATE
568
+ );
569
+ FUNCTION test_full_name (p_employee t_employee)
570
+ RETURN VARCHAR2;
571
+ END;
572
+ SQL
573
+ plsql.execute <<-SQL
574
+ CREATE OR REPLACE PACKAGE BODY test_record IS
575
+ FUNCTION test_full_name (p_employee t_employee)
576
+ RETURN VARCHAR2
577
+ IS
578
+ BEGIN
579
+ RETURN p_employee.first_name || ' ' || p_employee.last_name;
580
+ END;
581
+ END;
582
+ SQL
562
583
  plsql.execute <<-SQL
563
584
  CREATE OR REPLACE FUNCTION test_employee_record (p_employee test_employees%ROWTYPE)
564
585
  RETURN test_employees%ROWTYPE
@@ -568,7 +589,7 @@ describe "Parameter type mapping /" do
568
589
  END test_employee_record;
569
590
  SQL
570
591
  plsql.execute <<-SQL
571
- CREATE OR REPLACE FUNCTION test_employee_record2 (p_employee test_employees%ROWTYPE, x_employee OUT test_employees%ROWTYPE)
592
+ CREATE OR REPLACE FUNCTION test_employee_record2 (p_employee test_employees%ROWTYPE, x_employee IN OUT test_employees%ROWTYPE)
572
593
  RETURN test_employees%ROWTYPE
573
594
  IS
574
595
  BEGIN
@@ -595,6 +616,7 @@ describe "Parameter type mapping /" do
595
616
 
596
617
  after(:all) do
597
618
  plsql.execute "DROP FUNCTION test_full_name"
619
+ plsql.execute "DROP PACKAGE test_record"
598
620
  plsql.execute "DROP FUNCTION test_employee_record"
599
621
  plsql.execute "DROP FUNCTION test_employee_record2"
600
622
  plsql.execute "DROP TABLE test_employees"
@@ -627,7 +649,11 @@ describe "Parameter type mapping /" do
627
649
  end
628
650
 
629
651
  it "should return record return value and output record parameter value" do
630
- plsql.test_employee_record2(@p_employee, nil).should == [@p_employee, {:x_employee => @p_employee}]
652
+ plsql.test_employee_record2(@p_employee, @p_employee2).should == [@p_employee, {:x_employee => @p_employee}]
653
+ end
654
+
655
+ it "should execute package function with parameter with record type defined in package" do
656
+ plsql.test_record.test_full_name(@p_employee).should == 'First Last'
631
657
  end
632
658
 
633
659
  end
@@ -852,12 +878,36 @@ describe "Parameter type mapping /" do
852
878
  END;
853
879
  SQL
854
880
 
855
- # Wrong type definition inside package
881
+ # Type definition inside package
856
882
  plsql.execute <<-SQL
857
883
  CREATE OR REPLACE PACKAGE test_collections IS
858
884
  TYPE t_numbers IS TABLE OF NUMBER(15);
859
885
  FUNCTION test_sum (p_numbers IN t_numbers)
860
886
  RETURN NUMBER;
887
+ FUNCTION test_numbers (p_numbers IN t_numbers, x_numbers OUT t_numbers)
888
+ RETURN t_numbers;
889
+ TYPE t_employee IS RECORD(
890
+ employee_id NUMBER(15),
891
+ first_name VARCHAR2(50),
892
+ last_name VARCHAR2(50),
893
+ hire_date DATE
894
+ );
895
+ TYPE t_employees IS TABLE OF t_employee;
896
+ FUNCTION test_employees (p_employees IN OUT t_employees)
897
+ RETURN t_employees;
898
+ -- these types with tables in lower level are not yet supported
899
+ TYPE t_employee2 IS RECORD(
900
+ employee_id NUMBER(15),
901
+ first_name VARCHAR2(50),
902
+ last_name VARCHAR2(50),
903
+ hire_date DATE,
904
+ numbers t_numbers
905
+ );
906
+ FUNCTION test_employee2 (p_employee IN OUT t_employee2)
907
+ RETURN t_employee2;
908
+ TYPE t_employees2 IS TABLE OF t_employee2;
909
+ FUNCTION test_employees2 (p_employees IN OUT t_employees2)
910
+ RETURN t_employees2;
861
911
  END;
862
912
  SQL
863
913
  plsql.execute <<-SQL
@@ -878,8 +928,41 @@ describe "Parameter type mapping /" do
878
928
  RETURN NULL;
879
929
  END IF;
880
930
  END;
931
+ FUNCTION test_numbers (p_numbers IN t_numbers, x_numbers OUT t_numbers)
932
+ RETURN t_numbers
933
+ IS
934
+ BEGIN
935
+ x_numbers := p_numbers;
936
+ RETURN p_numbers;
937
+ END;
938
+ FUNCTION test_employees (p_employees IN OUT t_employees)
939
+ RETURN t_employees
940
+ IS
941
+ BEGIN
942
+ RETURN p_employees;
943
+ END;
944
+ FUNCTION test_employee2 (p_employee IN OUT t_employee2)
945
+ RETURN t_employee2
946
+ IS
947
+ BEGIN
948
+ RETURN p_employee;
949
+ END;
950
+ FUNCTION test_employees2 (p_employees IN OUT t_employees2)
951
+ RETURN t_employees2
952
+ IS
953
+ BEGIN
954
+ RETURN p_employees;
955
+ END;
881
956
  END;
882
957
  SQL
958
+ @employees = (1..10).map do |i|
959
+ {
960
+ :employee_id => i,
961
+ :first_name => "First #{i}",
962
+ :last_name => "Last #{i}",
963
+ :hire_date => Time.local(2000,01,i),
964
+ }
965
+ end
883
966
 
884
967
  # Array of objects
885
968
  plsql.execute <<-SQL
@@ -912,6 +995,7 @@ describe "Parameter type mapping /" do
912
995
  plsql.execute "DROP TYPE t_strings"
913
996
  plsql.execute "DROP TYPE t_phones"
914
997
  plsql.execute "DROP TYPE t_phone"
998
+ plsql.connection.drop_session_ruby_temporary_tables
915
999
  end
916
1000
 
917
1001
  it "should find existing function" do
@@ -931,10 +1015,32 @@ describe "Parameter type mapping /" do
931
1015
  plsql.test_copy_strings(strings).should == [strings, {:x_strings => strings}]
932
1016
  end
933
1017
 
934
- it "should raise error if parameter type is defined inside package" do
935
- lambda do
936
- plsql.test_collections.test_sum([1,2,3,4])
937
- end.should raise_error(ArgumentError)
1018
+ it "should execute function with table of numbers type (defined inside package) parameter" do
1019
+ plsql.test_collections.test_sum([1,2,3,4]).should == 10
1020
+ end
1021
+
1022
+ it "should return table of numbers type (defined inside package)" do
1023
+ plsql.test_collections.test_numbers([1,2,3,4]).should == [[1,2,3,4], {:x_numbers => [1,2,3,4]}]
1024
+ end
1025
+
1026
+ it "should clear temporary tables after executing function with table of numbers type (defined inside package) parameter" do
1027
+ plsql.test_collections.test_numbers([1,2,3,4]).should == [[1,2,3,4], {:x_numbers => [1,2,3,4]}]
1028
+ # after first call temporary tables should be cleared
1029
+ plsql.test_collections.test_numbers([1,2,3,4]).should == [[1,2,3,4], {:x_numbers => [1,2,3,4]}]
1030
+ end
1031
+
1032
+ it "should clear temporary tables when autocommit with table of numbers type (defined inside package) parameter" do
1033
+ old_autocommit = plsql.connection.autocommit?
1034
+ plsql.connection.autocommit = true
1035
+ numbers_array = (1..400).to_a
1036
+ plsql.test_collections.test_numbers(numbers_array).should == [numbers_array, {:x_numbers => numbers_array}]
1037
+ # after first call temporary tables should be cleared
1038
+ plsql.test_collections.test_numbers(numbers_array).should == [numbers_array, {:x_numbers => numbers_array}]
1039
+ plsql.connection.autocommit = old_autocommit
1040
+ end
1041
+
1042
+ it "should execute function with table of records type (defined inside package) parameter" do
1043
+ plsql.test_collections.test_employees(@employees).should == [@employees, {:p_employees => @employees}]
938
1044
  end
939
1045
 
940
1046
  it "should execute function with object array and return object array output parameter" do
@@ -947,8 +1053,165 @@ describe "Parameter type mapping /" do
947
1053
  plsql.test_copy_objects(phones).should == [phones, {:x_phones => phones}]
948
1054
  end
949
1055
 
1056
+ it "should raise error with record parameter that has table as element" do
1057
+ lambda {
1058
+ plsql.test_collections.test_employee2(@employees[0]).should == [@employees[0], {:p_employee => @employees[0]}]
1059
+ }.should raise_error(ArgumentError, /TEST_COLLECTIONS\.T_NUMBERS definition inside package is not supported/)
1060
+ end
1061
+
1062
+ it "should raise error with table of records parameter when record has table as element" do
1063
+ lambda {
1064
+ plsql.test_collections.test_employees2(@employees).should == [@employees, {:p_employees => @employees}]
1065
+ }.should raise_error(ArgumentError, /TEST_COLLECTIONS\.T_NUMBERS definition inside package is not supported/)
1066
+ end
1067
+
950
1068
  end
951
1069
 
1070
+ describe "Function with table indexed by bynary integer parameter" do
1071
+
1072
+ before(:all) do
1073
+ plsql.execute <<-SQL
1074
+ CREATE TABLE test_employees (
1075
+ employee_id NUMBER(15),
1076
+ first_name VARCHAR2(50),
1077
+ last_name VARCHAR2(50),
1078
+ hire_date DATE
1079
+ )
1080
+ SQL
1081
+ # Type definition inside package
1082
+ plsql.execute <<-SQL
1083
+ CREATE OR REPLACE PACKAGE test_collections IS
1084
+ TYPE t_numbers IS TABLE OF NUMBER(15)
1085
+ INDEX BY BINARY_INTEGER;
1086
+ FUNCTION test_sum (p_numbers IN t_numbers)
1087
+ RETURN NUMBER;
1088
+ FUNCTION test_numbers (p_numbers IN t_numbers, x_numbers OUT t_numbers)
1089
+ RETURN t_numbers;
1090
+ TYPE t_employee IS RECORD(
1091
+ employee_id NUMBER(15),
1092
+ first_name VARCHAR2(50),
1093
+ last_name VARCHAR2(50),
1094
+ hire_date DATE
1095
+ );
1096
+ TYPE t_employees IS TABLE OF t_employee
1097
+ INDEX BY BINARY_INTEGER;
1098
+ FUNCTION test_employees (p_employees IN OUT t_employees)
1099
+ RETURN t_employees;
1100
+ PROCEDURE insert_employees(p_employees IN t_employees);
1101
+ END;
1102
+ SQL
1103
+ plsql.execute <<-SQL
1104
+ CREATE OR REPLACE PACKAGE BODY test_collections IS
1105
+ FUNCTION test_sum (p_numbers IN t_numbers)
1106
+ RETURN NUMBER
1107
+ IS
1108
+ l_sum NUMBER(15) := 0;
1109
+ i BINARY_INTEGER;
1110
+ BEGIN
1111
+ IF p_numbers.COUNT > 0 THEN
1112
+ i := p_numbers.FIRST;
1113
+ LOOP
1114
+ EXIT WHEN i IS NULL;
1115
+ l_sum := l_sum + p_numbers(i);
1116
+ i := p_numbers.NEXT(i);
1117
+ END LOOP;
1118
+ RETURN l_sum;
1119
+ ELSE
1120
+ RETURN NULL;
1121
+ END IF;
1122
+ END;
1123
+ FUNCTION test_numbers (p_numbers IN t_numbers, x_numbers OUT t_numbers)
1124
+ RETURN t_numbers
1125
+ IS
1126
+ BEGIN
1127
+ x_numbers := p_numbers;
1128
+ RETURN p_numbers;
1129
+ END;
1130
+ FUNCTION test_employees (p_employees IN OUT t_employees)
1131
+ RETURN t_employees
1132
+ IS
1133
+ BEGIN
1134
+ RETURN p_employees;
1135
+ END;
1136
+ PROCEDURE insert_employees(p_employees IN t_employees) IS
1137
+ BEGIN
1138
+ FORALL i IN p_employees.FIRST..p_employees.LAST
1139
+ INSERT INTO test_employees VALUES p_employees(i);
1140
+ END;
1141
+ END;
1142
+ SQL
1143
+ # test with negative PL/SQL table indexes
1144
+ @numbers = Hash[*(1..4).map{|i|[-i,i]}.flatten]
1145
+ # test with reversed PL/SQL table indexes
1146
+ @employees = Hash[*(1..10).map do |i|
1147
+ [11-i, {
1148
+ :employee_id => i,
1149
+ :first_name => "First #{i}",
1150
+ :last_name => "Last #{i}",
1151
+ :hire_date => Time.local(2000,01,i)
1152
+ }]
1153
+ end.flatten]
1154
+ end
1155
+
1156
+ after(:all) do
1157
+ plsql.execute "DROP PACKAGE test_collections"
1158
+ plsql.execute "DROP TABLE test_employees"
1159
+ plsql.connection.drop_session_ruby_temporary_tables
1160
+ end
1161
+
1162
+ it "should execute function with index-by table of numbers type (defined inside package) parameter" do
1163
+ plsql.test_collections.test_sum(@numbers).should == 10
1164
+ end
1165
+
1166
+ it "should return index-by table of numbers type (defined inside package)" do
1167
+ plsql.test_collections.test_numbers(@numbers).should == [@numbers, {:x_numbers => @numbers}]
1168
+ end
1169
+
1170
+ it "should clear temporary tables when autocommit with index-by table of numbers type (defined inside package) parameter" do
1171
+ old_autocommit = plsql.connection.autocommit?
1172
+ plsql.connection.autocommit = true
1173
+ numbers_hash = Hash[*(1..400).map{|i|[i,i]}.flatten]
1174
+ plsql.test_collections.test_numbers(numbers_hash).should == [numbers_hash, {:x_numbers => numbers_hash}]
1175
+ # after first call temporary tables should be cleared
1176
+ plsql.test_collections.test_numbers(numbers_hash).should == [numbers_hash, {:x_numbers => numbers_hash}]
1177
+ plsql.connection.autocommit = old_autocommit
1178
+ end
1179
+
1180
+ it "should execute function with index-by table of records type (defined inside package) parameter" do
1181
+ plsql.test_collections.test_employees(@employees).should == [@employees, {:p_employees => @employees}]
1182
+ end
1183
+
1184
+ it "should create temporary tables in autonomous transaction" do
1185
+ old_autocommit = plsql.connection.autocommit?
1186
+ plsql.connection.autocommit = false
1187
+ plsql.test_employees.insert @employees[1]
1188
+ # procedure call should not commit initial insert
1189
+ plsql.test_collections.insert_employees(2=>@employees[2], 3=>@employees[3])
1190
+ plsql.rollback
1191
+ plsql.test_employees.all.should be_empty
1192
+ plsql.connection.autocommit = old_autocommit
1193
+ end
1194
+
1195
+ describe "using Oracle 9.2" do
1196
+ before(:all) do
1197
+ # simulate Oracle 9.2 connection
1198
+ plsql(:oracle_9).connection = get_connection
1199
+ plsql(:oracle_9).connection.stub!(:database_version).and_return([9, 2])
1200
+ end
1201
+
1202
+ after(:all) do
1203
+ plsql(:oracle_9).logoff
1204
+ end
1205
+
1206
+ it "should create temporary tables when using Oracle 9.2" do
1207
+ plsql(:oracle_9).test_collections.test_numbers(@numbers).should == [@numbers, {:x_numbers => @numbers}]
1208
+ end
1209
+
1210
+ end
1211
+
1212
+ end
1213
+
1214
+
952
1215
  describe "Function with VARRAY parameter" do
953
1216
 
954
1217
  before(:all) do
@@ -1293,6 +1556,50 @@ describe "Synonyms /" do
1293
1556
 
1294
1557
  end
1295
1558
 
1559
+ describe "invalid objects" do
1560
+ before(:all) do
1561
+ plsql.execute <<-SQL
1562
+ CREATE OR REPLACE FUNCTION test_invalid_function(p_dummy VARCHAR2) RETURN VARCHAR2 IS
1563
+ l_dummy invalid_table.invalid_column%TYPE;
1564
+ BEGIN
1565
+ RETURN p_dummy;
1566
+ END;
1567
+ SQL
1568
+ plsql.execute <<-SQL
1569
+ CREATE OR REPLACE PACKAGE test_invalid_package IS
1570
+ FUNCTION test_invalid_function(p_dummy VARCHAR2) RETURN VARCHAR2;
1571
+ END;
1572
+ SQL
1573
+ plsql.execute <<-SQL
1574
+ CREATE OR REPLACE PACKAGE BODY test_invalid_package IS
1575
+ FUNCTION test_invalid_function(p_dummy VARCHAR2) RETURN VARCHAR2 IS
1576
+ l_dummy1 invalid_table.invalid_column%TYPE;
1577
+ l_dummy2 invalid_table.invalid_column%TYPE;
1578
+ BEGIN
1579
+ RETURN p_dummy;
1580
+ END;
1581
+ END;
1582
+ SQL
1583
+ end
1584
+
1585
+ after(:all) do
1586
+ plsql.execute "DROP FUNCTION test_invalid_function"
1587
+ plsql.execute "DROP PACKAGE test_invalid_package"
1588
+ end
1589
+
1590
+ it "should raise error when invalid function is called" do
1591
+ lambda {
1592
+ plsql.test_invalid_function('test')
1593
+ }.should raise_error(ArgumentError, /is not in valid status/)
1594
+ end
1595
+
1596
+ it "should raise error when function from invalid package body is called" do
1597
+ lambda {
1598
+ plsql.test_invalid_package.test_invalid_function('test')
1599
+ }.should raise_error(ArgumentError, /body is not in valid status/)
1600
+ end
1601
+ end
1602
+
1296
1603
  end
1297
1604
 
1298
1605
  describe "SYS.STANDARD procedures /" do
@@ -1309,4 +1616,21 @@ describe "SYS.STANDARD procedures /" do
1309
1616
  plsql.upper('abc').should == 'ABC'
1310
1617
  end
1311
1618
 
1619
+ it "should find function overload based on types of sequential arguments" do
1620
+ plsql.nvl(1, 2).should == 1
1621
+ plsql.nvl(nil, 2).should == 2
1622
+ plsql.nvl(1.1, 2.2).should == 1.1
1623
+ plsql.nvl(nil, 2.2).should == 2.2
1624
+ plsql.nvl(BigDecimal('1.1'), BigDecimal('2.2')).should == BigDecimal('1.1')
1625
+ plsql.nvl(nil, BigDecimal('2.2')).should == BigDecimal('2.2')
1626
+ plsql.nvl('a', 'b').should == 'a'
1627
+ plsql.nvl(nil, 'b').should == 'b'
1628
+ plsql.nvl(Date.new(2010,1,13), Date.new(2010,1,19)).should == Time.local(2010,1,13)
1629
+ plsql.nvl(nil, Date.new(2010,1,19)).should == Time.local(2010,1,19)
1630
+ plsql.nvl(Time.local(2010,1,13), Time.local(2010,1,19)).should == Time.local(2010,1,13)
1631
+ plsql.nvl(nil, Time.local(2010,1,19)).should == Time.local(2010,1,19)
1632
+ plsql.nvl(true, false).should == true
1633
+ plsql.nvl(nil, false).should == false
1634
+ end
1635
+
1312
1636
  end
@@ -50,6 +50,52 @@ describe "Schema connection" do
50
50
 
51
51
  end
52
52
 
53
+ describe "Connection with connect!" do
54
+
55
+ before(:all) do
56
+ @username, @password = DATABASE_USERS_AND_PASSWORDS[0]
57
+ @database = DATABASE_NAME
58
+ @host = DATABASE_HOST
59
+ @port = DATABASE_PORT
60
+ end
61
+
62
+ after(:each) do
63
+ plsql.logoff if plsql.connection
64
+ end
65
+
66
+ it "should connect with username, password and database alias" do
67
+ plsql.connect! @username, @password, @database
68
+ plsql.connection.should_not be_nil
69
+ plsql.schema_name.should == @username.upcase
70
+ end
71
+
72
+ it "should connect with username, password, host, port and database name" do
73
+ plsql.connect! @username, @password, :host => @host, :port => @port, :database => @database
74
+ plsql.connection.should_not be_nil
75
+ plsql.schema_name.should == @username.upcase
76
+ end
77
+
78
+ it "should connect with username, password, host, database name and default port" do
79
+ pending "Non-default port used for test database" unless @port == 1521
80
+ plsql.connect! @username, @password, :host => @host, :database => @database
81
+ plsql.connection.should_not be_nil
82
+ plsql.schema_name.should == @username.upcase
83
+ end
84
+
85
+ it "should not connect with wrong port number" do
86
+ lambda {
87
+ plsql.connect! @username, @password, :host => @host, :port => 9999, :database => @database
88
+ }.should raise_error(/no listener|could not establish the connection/)
89
+ end
90
+
91
+ it "should connect with one Hash parameter" do
92
+ plsql.connect! :username => @username, :password => @password, :database => @database
93
+ plsql.connection.should_not be_nil
94
+ plsql.schema_name.should == @username.upcase
95
+ end
96
+
97
+ end
98
+
53
99
  describe "Named Schema" do
54
100
  before(:all) do
55
101
  plsql.connection = @conn = get_connection
@@ -80,30 +126,54 @@ end
80
126
  describe "Schema commit and rollback" do
81
127
  before(:all) do
82
128
  plsql.connection = @conn = get_connection
129
+ plsql.connection.autocommit = false
130
+ plsql.execute "CREATE TABLE test_commit (dummy VARCHAR2(100))"
131
+ @data = {:dummy => 'test'}
132
+ @data2 = {:dummy => 'test2'}
83
133
  end
84
134
 
85
135
  after(:all) do
86
- plsql.connection.logoff
136
+ plsql.execute "DROP TABLE test_commit"
137
+ plsql.logoff
138
+ end
139
+
140
+ after(:each) do
141
+ plsql.test_commit.delete
142
+ plsql.commit
87
143
  end
88
144
 
89
145
  it "should do commit" do
146
+ plsql.test_commit.insert @data
90
147
  plsql.commit
148
+ plsql.test_commit.first.should == @data
91
149
  end
92
-
150
+
93
151
  it "should do rollback" do
152
+ plsql.test_commit.insert @data
94
153
  plsql.rollback
154
+ plsql.test_commit.first.should be_nil
95
155
  end
156
+
157
+ it "should create savepoint and rollback to savepoint" do
158
+ plsql.test_commit.insert @data
159
+ plsql.savepoint 'test'
160
+ plsql.test_commit.insert @data2
161
+ plsql.test_commit.all.should == [@data, @data2]
162
+ plsql.rollback_to 'test'
163
+ plsql.test_commit.all.should == [@data]
164
+ end
165
+
96
166
  end
97
167
 
98
168
  describe "ActiveRecord connection" do
99
169
  before(:all) do
100
170
  ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
101
171
  end
102
-
172
+
103
173
  before(:each) do
104
174
  plsql.activerecord_class = ActiveRecord::Base
105
175
  end
106
-
176
+
107
177
  it "should connect to test database" do
108
178
  unless defined?(JRUBY_VERSION)
109
179
  plsql.connection.is_a?(PLSQL::OCIConnection).should be_true
@@ -111,20 +181,20 @@ describe "ActiveRecord connection" do
111
181
  plsql.connection.is_a?(PLSQL::JDBCConnection).should be_true
112
182
  end
113
183
  end
114
-
184
+
115
185
  it "should return schema name" do
116
186
  plsql.schema_name.should == 'HR'
117
187
  end
118
-
188
+
119
189
  it "should use ActiveRecord::Base.default_timezone as default" do
120
190
  ActiveRecord::Base.default_timezone = :utc
121
191
  plsql.default_timezone.should == :utc
122
192
  end
123
-
193
+
124
194
  it "should have the same connection as default schema" do
125
195
  plsql.hr.connection.should == plsql.connection
126
196
  end
127
- end
197
+ end if defined?(ActiveRecord)
128
198
 
129
199
  describe "DBMS_OUTPUT logging" do
130
200
 
@@ -158,6 +228,7 @@ describe "DBMS_OUTPUT logging" do
158
228
  after(:all) do
159
229
  plsql.dbms_output_stream = nil
160
230
  plsql.execute "DROP PROCEDURE test_dbms_output"
231
+ plsql.execute "DROP PROCEDURE test_dbms_output_large"
161
232
  plsql.logoff
162
233
  end
163
234
 
@@ -230,6 +301,6 @@ describe "DBMS_OUTPUT logging" do
230
301
  @buffer.string.should == "DBMS_OUTPUT: after reconnection\n"
231
302
  end
232
303
 
233
- end
304
+ end if defined?(ActiveRecord)
234
305
 
235
306
  end