ruby-plsql 0.5.3 → 0.8.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.
Files changed (57) hide show
  1. checksums.yaml +5 -5
  2. data/.github/stale.yml +37 -0
  3. data/.github/workflows/rubocop.yml +37 -0
  4. data/.github/workflows/test.yml +69 -0
  5. data/.rubocop.yml +147 -0
  6. data/.travis.yml +88 -0
  7. data/.travis/oracle/download.sh +15 -0
  8. data/.travis/oracle/install.sh +32 -0
  9. data/.travis/setup_accounts.sh +9 -0
  10. data/Gemfile +17 -9
  11. data/History.txt +76 -0
  12. data/README.md +29 -6
  13. data/Rakefile +31 -26
  14. data/VERSION +1 -1
  15. data/Vagrantfile +4 -4
  16. data/ci/network/admin/tnsnames.ora +7 -0
  17. data/ci/setup_accounts.sh +9 -0
  18. data/gemfiles/Gemfile.activerecord-5.0 +21 -0
  19. data/gemfiles/Gemfile.activerecord-5.1 +21 -0
  20. data/gemfiles/Gemfile.activerecord-5.2 +21 -0
  21. data/gemfiles/Gemfile.activerecord-6.0 +21 -0
  22. data/gemfiles/Gemfile.activerecord-6.1 +21 -0
  23. data/gemfiles/Gemfile.activerecord-main +21 -0
  24. data/lib/plsql/connection.rb +19 -22
  25. data/lib/plsql/helpers.rb +1 -3
  26. data/lib/plsql/jdbc_connection.rb +70 -68
  27. data/lib/plsql/oci8_patches.rb +2 -2
  28. data/lib/plsql/oci_connection.rb +62 -77
  29. data/lib/plsql/package.rb +61 -46
  30. data/lib/plsql/procedure.rb +358 -78
  31. data/lib/plsql/procedure_call.rb +508 -463
  32. data/lib/plsql/schema.rb +96 -101
  33. data/lib/plsql/sequence.rb +10 -13
  34. data/lib/plsql/sql_statements.rb +9 -11
  35. data/lib/plsql/table.rb +60 -63
  36. data/lib/plsql/type.rb +71 -76
  37. data/lib/plsql/variable.rb +90 -94
  38. data/lib/plsql/version.rb +1 -1
  39. data/lib/plsql/view.rb +16 -19
  40. data/ruby-plsql.gemspec +55 -35
  41. data/spec/plsql/connection_spec.rb +72 -66
  42. data/spec/plsql/package_spec.rb +63 -14
  43. data/spec/plsql/procedure_spec.rb +603 -261
  44. data/spec/plsql/schema_spec.rb +47 -23
  45. data/spec/plsql/sequence_spec.rb +2 -2
  46. data/spec/plsql/sql_statements_spec.rb +6 -6
  47. data/spec/plsql/table_spec.rb +84 -79
  48. data/spec/plsql/type_spec.rb +24 -30
  49. data/spec/plsql/variable_spec.rb +80 -88
  50. data/spec/plsql/version_spec.rb +4 -4
  51. data/spec/plsql/view_spec.rb +42 -42
  52. data/spec/spec_helper.rb +38 -35
  53. data/spec/support/create_arunit_user.sql +2 -0
  54. data/spec/support/custom_config.rb.sample +14 -0
  55. data/spec/support/test_db.rb +12 -13
  56. data/spec/support/unlock_and_setup_hr_user.sql +2 -0
  57. metadata +111 -34
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe "Type" do
4
4
  before(:all) do
@@ -80,7 +80,7 @@ describe "Type" do
80
80
  CREATE OR REPLACE TYPE t_employee AS OBJECT (
81
81
  employee_id NUMBER(15),
82
82
  first_name VARCHAR2(50),
83
- last_name VARCHAR2(50),
83
+ last_name VARCHAR(50),
84
84
  hire_date DATE,
85
85
  address t_address,
86
86
  phones t_phones
@@ -167,28 +167,22 @@ describe "Type" do
167
167
  end
168
168
 
169
169
  it "should get attributes metadata" do
170
- expect(plsql.t_employee.attributes).to eq({
171
- :employee_id =>
172
- {:position=>1, :data_type=>"NUMBER", :data_length=>nil, :data_precision=>15, :data_scale=>0, :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
173
- :first_name =>
174
- {:position=>2, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
175
- :last_name =>
176
- {:position=>3, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
177
- :hire_date =>
178
- {:position=>4, :data_type=>"DATE", :data_length=>nil, :data_precision=>nil, :data_scale=>nil, :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil},
179
- :address =>
180
- {:position=>5, :data_type=>"OBJECT", :data_length=>nil, :data_precision=>nil, :data_scale=>nil, :type_owner=>"HR", :type_name=>"T_ADDRESS", :sql_type_name=>"HR.T_ADDRESS"},
181
- :phones =>
182
- {:position=>6, :data_type=>"TABLE", :data_length=>nil, :data_precision=>nil, :data_scale=>nil, :type_owner=>"HR", :type_name=>"T_PHONES", :sql_type_name=>"HR.T_PHONES"}
183
- })
170
+ expect(plsql.t_employee.attributes).to eq(
171
+ employee_id: { position: 1, data_type: "NUMBER", data_length: nil, data_precision: 15, data_scale: 0, type_owner: nil, type_name: nil, sql_type_name: nil },
172
+ first_name: { position: 2, data_type: "VARCHAR2", data_length: 50, data_precision: nil, data_scale: nil, type_owner: nil, type_name: nil, sql_type_name: nil },
173
+ last_name: { position: 3, data_type: "VARCHAR2", data_length: 50, data_precision: nil, data_scale: nil, type_owner: nil, type_name: nil, sql_type_name: nil },
174
+ hire_date: { position: 4, data_type: "DATE", data_length: nil, data_precision: nil, data_scale: nil, type_owner: nil, type_name: nil, sql_type_name: nil },
175
+ address: { position: 5, data_type: "OBJECT", data_length: nil, data_precision: nil, data_scale: nil, type_owner: "HR", type_name: "T_ADDRESS", sql_type_name: "HR.T_ADDRESS" },
176
+ phones: { position: 6, data_type: "TABLE", data_length: nil, data_precision: nil, data_scale: nil, type_owner: "HR", type_name: "T_PHONES", sql_type_name: "HR.T_PHONES" }
177
+ )
184
178
  end
185
179
 
186
180
  end
187
181
 
188
182
  describe "object instance" do
189
183
  before(:all) do
190
- @phone_attributes = {:type => 'mobile', :phone_number => '123456'}
191
- @address_attributes = {:street => 'Street', :city => 'City', :country => 'Country'}
184
+ @phone_attributes = { type: "mobile", phone_number: "123456" }
185
+ @address_attributes = { street: "Street", city: "City", country: "Country" }
192
186
  @full_address = "#{@address_attributes[:street]}, #{@address_attributes[:city]}, #{@address_attributes[:country]}"
193
187
  end
194
188
 
@@ -206,7 +200,7 @@ describe "Type" do
206
200
 
207
201
  it "should get new object instance using custom constructor" do
208
202
  expect(plsql.t_address(@full_address)).to eq(@address_attributes)
209
- expect(plsql.t_address(:p_full_address => @full_address)).to eq(@address_attributes)
203
+ expect(plsql.t_address(p_full_address: @full_address)).to eq(@address_attributes)
210
204
  end
211
205
 
212
206
  it "should get new object instance using default constructor when custom constructor exists" do
@@ -230,7 +224,7 @@ describe "Type" do
230
224
 
231
225
  describe "member procedures" do
232
226
  before(:all) do
233
- @address_attributes = {:street => 'Street', :city => 'City', :country => 'Country'}
227
+ @address_attributes = { street: "Street", city: "City", country: "Country" }
234
228
  @full_address = "#{@address_attributes[:street]}, #{@address_attributes[:city]}, #{@address_attributes[:country]}"
235
229
  end
236
230
 
@@ -239,36 +233,36 @@ describe "Type" do
239
233
  end
240
234
 
241
235
  it "should call object instance member function with parameters" do
242
- expect(plsql.t_address(@address_attributes).display_address(',')).to eq(@full_address)
236
+ expect(plsql.t_address(@address_attributes).display_address(",")).to eq(@full_address)
243
237
  end
244
238
 
245
239
  it "should call object instance member function with named parameters" do
246
- expect(plsql.t_address(@address_attributes).display_address(:p_separator => ',')).to eq(@full_address)
240
+ expect(plsql.t_address(@address_attributes).display_address(p_separator: ",")).to eq(@full_address)
247
241
  end
248
242
 
249
243
  it "should call object overloaded instance member function" do
250
244
  expect(plsql.t_address(@address_attributes).display_address(true)).to eq(@full_address.upcase)
251
- expect(plsql.t_address(@address_attributes).display_address(true, ',')).to eq(@full_address.upcase)
245
+ expect(plsql.t_address(@address_attributes).display_address(true, ",")).to eq(@full_address.upcase)
252
246
  end
253
247
 
254
248
  it "should call object instance member function with explicit first SELF parameter" do
255
- expect(plsql.t_address.display_address(@address_attributes, ',')).to eq(@full_address)
249
+ expect(plsql.t_address.display_address(@address_attributes, ",")).to eq(@full_address)
256
250
  end
257
251
 
258
252
  it "should call object instance member function with explicit named SELF parameter" do
259
- expect(plsql.t_address.display_address(:self => @address_attributes, :p_separator => ',')).to eq(@full_address)
253
+ expect(plsql.t_address.display_address(self: @address_attributes, p_separator: ",")).to eq(@full_address)
260
254
  end
261
255
 
262
256
  it "should call object instance member procedure" do
263
257
  other_country = "Other"
264
- expect(plsql.t_address(@address_attributes).set_country(other_country)).to eq(@address_attributes.merge(:country => other_country))
258
+ expect(plsql.t_address(@address_attributes).set_country(other_country)).to eq(@address_attributes.merge(country: other_country))
265
259
  end
266
260
 
267
261
  it "should call object instance member procedure with output parameters" do
268
262
  other_country = "Other"
269
263
  expect(plsql.t_address(@address_attributes).set_country2(other_country)).to eq(
270
- [@address_attributes.merge(:country => other_country),
271
- {:x_display_address => "#{@address_attributes[:street]}, #{@address_attributes[:city]}, #{other_country}"}]
264
+ [@address_attributes.merge(country: other_country),
265
+ { x_display_address: "#{@address_attributes[:street]}, #{@address_attributes[:city]}, #{other_country}" }]
272
266
  )
273
267
  end
274
268
 
@@ -282,7 +276,7 @@ describe "Type" do
282
276
 
283
277
  describe "static procedures" do
284
278
  before(:all) do
285
- @address_attributes = {:street => 'Street', :city => 'City', :country => 'Country'}
279
+ @address_attributes = { street: "Street", city: "City", country: "Country" }
286
280
  @full_address = "#{@address_attributes[:street]}, #{@address_attributes[:city]}, #{@address_attributes[:country]}"
287
281
  end
288
282
 
@@ -291,7 +285,7 @@ describe "Type" do
291
285
  end
292
286
 
293
287
  it "should call object type static function with named parameters" do
294
- expect(plsql.t_address.create_address(:p_full_address => @full_address)).to eq(@address_attributes)
288
+ expect(plsql.t_address.create_address(p_full_address: @full_address)).to eq(@address_attributes)
295
289
  end
296
290
 
297
291
  it "should raise error if invalid static procedure is called" do
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe "Package variables /" do
6
6
 
@@ -16,6 +16,7 @@ describe "Package variables /" do
16
16
  varchar2_default3 varchar2(50) NOT NULL := 'default';
17
17
  varchar2_3_char VARCHAR2(3 CHAR);
18
18
  varchar2_3_byte VARCHAR2(3 BYTE);
19
+ varchar_variable VARCHAR(50);
19
20
  char_variable char(10) ;
20
21
  nvarchar2_variable NVARCHAR2(50);
21
22
  nchar_variable NCHAR(10);
@@ -33,20 +34,25 @@ describe "Package variables /" do
33
34
  plsql.logoff
34
35
  end
35
36
 
37
+ it "should set and get VARCHAR variable" do
38
+ plsql.test_package.varchar_variable = "abc"
39
+ expect(plsql.test_package.varchar_variable).to eq("abc")
40
+ end
41
+
36
42
  it "should set and get VARCHAR2 variable" do
37
- plsql.test_package.varchar2_variable = 'abc'
38
- expect(plsql.test_package.varchar2_variable).to eq('abc')
43
+ plsql.test_package.varchar2_variable = "abc"
44
+ expect(plsql.test_package.varchar2_variable).to eq("abc")
39
45
  end
40
46
 
41
47
  it "should set and get VARCHAR2 variable with comment" do
42
- plsql.test_package.varchar2_variable2 = 'abc'
43
- expect(plsql.test_package.varchar2_variable2).to eq('abc')
48
+ plsql.test_package.varchar2_variable2 = "abc"
49
+ expect(plsql.test_package.varchar2_variable2).to eq("abc")
44
50
  end
45
51
 
46
52
  it "should get VARCHAR2 variable default value" do
47
- expect(plsql.test_package.varchar2_default).to eq('default')
48
- expect(plsql.test_package.varchar2_default2).to eq('default')
49
- expect(plsql.test_package.varchar2_default3).to eq('default')
53
+ expect(plsql.test_package.varchar2_default).to eq("default")
54
+ expect(plsql.test_package.varchar2_default2).to eq("default")
55
+ expect(plsql.test_package.varchar2_default3).to eq("default")
50
56
  end
51
57
 
52
58
  describe "with character or byte limit" do
@@ -64,56 +70,46 @@ describe "Package variables /" do
64
70
  end
65
71
 
66
72
  it "should set and get VARCHAR2(n CHAR) variable" do
67
- plsql.test_package.varchar2_3_char = 'āčē'
68
- expect(plsql.test_package.varchar2_3_char).to eq('āčē')
69
- expect { plsql.test_package.varchar2_3_char = 'aceg' }.to raise_error(/buffer too small/)
73
+ plsql.test_package.varchar2_3_char = "āčē"
74
+ expect(plsql.test_package.varchar2_3_char).to eq("āčē")
75
+ expect { plsql.test_package.varchar2_3_char = "aceg" }.to raise_error(/buffer too small/)
70
76
  end
71
77
 
72
78
  it "should set and get VARCHAR2(n BYTE) variable" do
73
- plsql.test_package.varchar2_3_byte = 'ace'
74
- expect(plsql.test_package.varchar2_3_byte).to eq('ace')
75
- expect { plsql.test_package.varchar2_3_byte = 'āce' }.to raise_error(/buffer too small/)
76
- expect { plsql.test_package.varchar2_3_byte = 'aceg' }.to raise_error(/buffer too small/)
79
+ plsql.test_package.varchar2_3_byte = "ace"
80
+ expect(plsql.test_package.varchar2_3_byte).to eq("ace")
81
+ expect { plsql.test_package.varchar2_3_byte = "āce" }.to raise_error(/buffer too small/)
82
+ expect { plsql.test_package.varchar2_3_byte = "aceg" }.to raise_error(/buffer too small/)
77
83
  end
78
84
 
79
85
  end
80
86
 
81
87
  it "should set and get CHAR variable" do
82
- plsql.test_package.char_variable = 'abc'
83
- expect(plsql.test_package.char_variable).to eq('abc' + ' '*7)
88
+ plsql.test_package.char_variable = "abc"
89
+ expect(plsql.test_package.char_variable).to eq("abc" + " " * 7)
84
90
  end
85
91
 
86
92
  it "should set and get NVARCHAR2 variable" do
87
- plsql.test_package.nvarchar2_variable = 'abc'
88
- expect(plsql.test_package.nvarchar2_variable).to eq('abc')
93
+ plsql.test_package.nvarchar2_variable = "abc"
94
+ expect(plsql.test_package.nvarchar2_variable).to eq("abc")
89
95
  end
90
96
 
91
97
  it "should set and get NCHAR variable" do
92
- plsql.test_package.nchar_variable = 'abc'
93
- expect(plsql.test_package.nchar_variable).to eq('abc' + ' '*7)
98
+ plsql.test_package.nchar_variable = "abc"
99
+ expect(plsql.test_package.nchar_variable).to eq("abc" + " " * 7)
94
100
  end
95
101
 
96
102
  end
97
103
 
98
- describe "Numeric" do
104
+ shared_examples "Numeric" do |ora_data_type, default, class_, given, expected|
105
+
99
106
  before(:all) do
100
107
  plsql.connect! CONNECTION_PARAMS
101
108
  plsql.execute <<-SQL
102
109
  CREATE OR REPLACE PACKAGE test_package IS
103
- integer_variable INTEGER;
104
- integer10_variable NUMBER(10);
105
- integer10_default NUMBER(10) := 1;
106
- number_variable NUMBER;
107
- number_with_scale NUMBER(15,2);
108
- pls_int_variable PLS_INTEGER;
109
- bin_int_variable BINARY_INTEGER;
110
+ numeric_var #{ora_data_type}#{default ? ':= ' + default.to_s : nil};
110
111
  END;
111
112
  SQL
112
- plsql.execute <<-SQL
113
- CREATE OR REPLACE PACKAGE BODY test_package IS
114
- END;
115
- SQL
116
-
117
113
  end
118
114
 
119
115
  after(:all) do
@@ -121,45 +117,41 @@ describe "Package variables /" do
121
117
  plsql.logoff
122
118
  end
123
119
 
124
- it "should set and get INTEGER variable" do
125
- plsql.test_package.integer_variable = 1
126
- expect(plsql.test_package.integer_variable).to be_a Fixnum
127
- expect(plsql.test_package.integer_variable).to eq(1)
128
- end
120
+ it "should get #{ora_data_type} variable default value" do
121
+ expect(plsql.test_package.numeric_var).to eq(default)
122
+ end if default
129
123
 
130
- it "should set and get integer variable with precision" do
131
- plsql.test_package.integer10_variable = 1
132
- expect(plsql.test_package.integer10_variable).to be_a Fixnum
133
- expect(plsql.test_package.integer10_variable).to eq(1)
124
+ it "should get #{ora_data_type} variable type mapped to #{class_.to_s}" do
125
+ plsql.test_package.numeric_var = given
126
+ expect(plsql.test_package.numeric_var).to be_a class_
134
127
  end
135
128
 
136
- it "should get integer variable default value" do
137
- expect(plsql.test_package.integer10_default).to eq(1)
129
+ it "should set and get #{ora_data_type} variable" do
130
+ plsql.test_package.numeric_var = given
131
+ expect(plsql.test_package.numeric_var).to eq(expected)
138
132
  end
139
133
 
140
- it "should set and get PLS_INTEGER variable" do
141
- plsql.test_package.pls_int_variable = 1
142
- expect(plsql.test_package.pls_int_variable).to be_a Fixnum
143
- expect(plsql.test_package.pls_int_variable).to eq(1)
144
- end
145
-
146
- it "should set and get BINARY_INTEGER variable" do
147
- plsql.test_package.bin_int_variable = 1
148
- expect(plsql.test_package.bin_int_variable).to be_a Fixnum
149
- expect(plsql.test_package.bin_int_variable).to eq(1)
150
- end
151
-
152
- it "should set and get NUMBER variable" do
153
- plsql.test_package.number_variable = 123.456
154
- expect(plsql.test_package.number_variable).to be_a BigDecimal
155
- expect(plsql.test_package.number_variable).to eq(123.456)
156
- end
134
+ end
157
135
 
158
- it "should set and get NUMBER variable with scale" do
159
- plsql.test_package.number_with_scale = 123.456
160
- expect(plsql.test_package.number_with_scale).to eq(123.46) # rounding to two decimal digits
136
+ [
137
+ { ora_data_type: "INTEGER", default: nil, class: Integer, given: 1, expected: 1 },
138
+ { ora_data_type: "NUMBER(10)", default: nil, class: Integer, given: 1, expected: 1 },
139
+ { ora_data_type: "NUMBER(10)", default: 5, class: Integer, given: 1, expected: 1 },
140
+ { ora_data_type: "NUMBER", default: nil, class: BigDecimal, given: 123.456, expected: 123.456 },
141
+ { ora_data_type: "NUMBER(15,2)", default: nil, class: BigDecimal, given: 123.456, expected: 123.46 },
142
+ { ora_data_type: "PLS_INTEGER", default: nil, class: Integer, given: 1, expected: 1 },
143
+ { ora_data_type: "BINARY_INTEGER", default: nil, class: Integer, given: 1, expected: 1 },
144
+ { ora_data_type: "SIMPLE_INTEGER", default: 10, class: Integer, given: 1, expected: 1 },
145
+ { ora_data_type: "NATURAL", default: nil, class: Integer, given: 1, expected: 1 },
146
+ { ora_data_type: "NATURALN", default: 0, class: Integer, given: 1, expected: 1 },
147
+ { ora_data_type: "POSITIVE", default: nil, class: Integer, given: 1, expected: 1 },
148
+ { ora_data_type: "POSITIVEN", default: 5, class: Integer, given: 1, expected: 1 },
149
+ { ora_data_type: "SIGNTYPE", default: -1, class: Integer, given: 1, expected: 1 },
150
+ ].each do |row|
151
+ ora_data_type, default, class_, given, expected = row.values
152
+ describe ora_data_type + (default ? " with default" : "") do
153
+ include_examples "Numeric", ora_data_type, default, class_, given, expected
161
154
  end
162
-
163
155
  end
164
156
 
165
157
  describe "Date and Time" do
@@ -178,8 +170,8 @@ describe "Package variables /" do
178
170
  CREATE OR REPLACE PACKAGE BODY test_package IS
179
171
  END;
180
172
  SQL
181
- @date = Time.local(2009,12,21)
182
- @timestamp = Time.local(2009,12,21,14,10,30,11)
173
+ @date = Time.local(2009, 12, 21)
174
+ @timestamp = Time.local(2009, 12, 21, 14, 10, 30, 11)
183
175
  end
184
176
 
185
177
  after(:all) do
@@ -241,17 +233,17 @@ describe "Package variables /" do
241
233
  end
242
234
 
243
235
  it "should set and get CLOB variable" do
244
- plsql.test_package.clob_variable = 'abc'
245
- expect(plsql.test_package.clob_variable).to eq('abc')
236
+ plsql.test_package.clob_variable = "abc"
237
+ expect(plsql.test_package.clob_variable).to eq("abc")
246
238
  end
247
239
 
248
240
  it "should get CLOB variable default value" do
249
- expect(plsql.test_package.clob_default).to eq('default')
241
+ expect(plsql.test_package.clob_default).to eq("default")
250
242
  end
251
243
 
252
244
  it "should set and get NCLOB variable" do
253
- plsql.test_package.nclob_variable = 'abc'
254
- expect(plsql.test_package.nclob_variable).to eq('abc')
245
+ plsql.test_package.nclob_variable = "abc"
246
+ expect(plsql.test_package.nclob_variable).to eq("abc")
255
247
  end
256
248
 
257
249
  it "should set and get BLOB variable" do
@@ -299,12 +291,12 @@ describe "Package variables /" do
299
291
  end
300
292
 
301
293
  it "should set and get VARCHAR2 variable" do
302
- plsql.test_package.first_name = 'First'
303
- expect(plsql.test_package.first_name).to eq('First')
294
+ plsql.test_package.first_name = "First"
295
+ expect(plsql.test_package.first_name).to eq("First")
304
296
  end
305
297
 
306
298
  it "should set and get DATE variable" do
307
- today = Time.local(2009,12,22)
299
+ today = Time.local(2009, 12, 22)
308
300
  plsql.test_package.hire_date = today
309
301
  expect(plsql.test_package.hire_date).to eq(today)
310
302
  end
@@ -337,7 +329,7 @@ describe "Package variables /" do
337
329
  end
338
330
 
339
331
  it "should get VARCHAR2 constant" do
340
- expect(plsql.test_package.string_constant).to eq('constant')
332
+ expect(plsql.test_package.string_constant).to eq("constant")
341
333
  end
342
334
 
343
335
  it "should raise error when trying to set constant" do
@@ -379,14 +371,14 @@ describe "Package variables /" do
379
371
  phones t_phones
380
372
  )
381
373
  SQL
382
- @phones = [{:type => 'mobile', :phone_number => '123456'}, {:type => 'home', :phone_number => '654321'}]
374
+ @phones = [{ type: "mobile", phone_number: "123456" }, { type: "home", phone_number: "654321" }]
383
375
  @employee = {
384
- :employee_id => 1,
385
- :first_name => 'First',
386
- :last_name => 'Last',
387
- :hire_date => Time.local(2000,01,31),
388
- :address => {:street => 'Main street 1', :city => 'Riga', :country => 'Latvia'},
389
- :phones => @phones
376
+ employee_id: 1,
377
+ first_name: "First",
378
+ last_name: "Last",
379
+ hire_date: Time.local(2000, 01, 31),
380
+ address: { street: "Main street 1", city: "Riga", country: "Latvia" },
381
+ phones: @phones
390
382
  }
391
383
 
392
384
  plsql.execute <<-SQL
@@ -441,10 +433,10 @@ describe "Package variables /" do
441
433
  )
442
434
  SQL
443
435
  @employee = {
444
- :employee_id => 1,
445
- :first_name => 'First',
446
- :last_name => 'Last',
447
- :hire_date => Time.local(2000,01,31)
436
+ employee_id: 1,
437
+ first_name: "First",
438
+ last_name: "Last",
439
+ hire_date: Time.local(2000, 01, 31)
448
440
  }
449
441
 
450
442
  plsql.execute <<-SQL
@@ -1,8 +1,8 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe "Version" do
4
4
  it "should return ruby-plsql version" do
5
- expect(PLSQL::VERSION).to eq(File.read(File.dirname(__FILE__)+'/../../VERSION').chomp)
5
+ expect(PLSQL::VERSION).to eq(File.read(File.dirname(__FILE__) + "/../../VERSION").chomp)
6
6
  end
7
-
8
- end
7
+
8
+ end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe "View" do
4
4
  before(:all) do
@@ -17,18 +17,18 @@ describe "View" do
17
17
 
18
18
  @employees = (1..10).map do |i|
19
19
  {
20
- :employee_id => i,
21
- :first_name => "First #{i}",
22
- :last_name => "Last #{i}",
23
- :hire_date => Time.local(2000,01,i),
24
- :status => 'A'
20
+ employee_id: i,
21
+ first_name: "First #{i}",
22
+ last_name: "Last #{i}",
23
+ hire_date: Time.local(2000, 01, i),
24
+ status: "A"
25
25
  }
26
26
  end
27
27
  @employees_all_fields = [:employee_id, :first_name, :last_name, :hire_date, :status]
28
- @employees_all_values = @employees.map{|e| @employees_all_fields.map{|f| e[f]}}
28
+ @employees_all_values = @employees.map { |e| @employees_all_fields.map { |f| e[f] } }
29
29
  @employees_some_fields = [:employee_id, :first_name, :last_name]
30
- @employees_some_values = @employees.map{|e| @employees_some_fields.map{|f| e[f]}}
31
- @employee_default_values = {:hire_date => nil, :status => 'N'}
30
+ @employees_some_values = @employees.map { |e| @employees_some_fields.map { |f| e[f] } }
31
+ @employee_default_values = { hire_date: nil, status: "N" }
32
32
  end
33
33
 
34
34
  after(:all) do
@@ -96,23 +96,23 @@ describe "View" do
96
96
  end
97
97
 
98
98
  it "should get columns metadata for view" do
99
- expect(plsql.test_employees_v.columns).to eq({
100
- :employee_id => {
101
- :position=>1, :data_type=>"NUMBER", :data_length=>22, :data_precision=>15, :data_scale=>0, :char_used=>nil,
102
- :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => false, :data_default => nil},
103
- :first_name => {
104
- :position=>2, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :char_used=>"B",
105
- :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => true, :data_default => nil},
106
- :last_name => {
107
- :position=>3, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :char_used=>"B",
108
- :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => true, :data_default => nil},
109
- :hire_date => {
110
- :position=>4, :data_type=>"DATE", :data_length=>7, :data_precision=>nil, :data_scale=>nil, :char_used=>nil,
111
- :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => true, :data_default => nil},
112
- :status => {
113
- :position=>5, :data_type=>"VARCHAR2", :data_length=>1, :data_precision=>nil, :data_scale=>nil, :char_used=>"B",
114
- :type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => true, :data_default => nil}
115
- })
99
+ expect(plsql.test_employees_v.columns).to eq(
100
+ employee_id: {
101
+ position: 1, data_type: "NUMBER", data_length: 22, data_precision: 15, data_scale: 0, char_used: nil,
102
+ type_owner: nil, type_name: nil, sql_type_name: nil, nullable: false, data_default: nil },
103
+ first_name: {
104
+ position: 2, data_type: "VARCHAR2", data_length: 50, data_precision: nil, data_scale: nil, char_used: "B",
105
+ type_owner: nil, type_name: nil, sql_type_name: nil, nullable: true, data_default: nil },
106
+ last_name: {
107
+ position: 3, data_type: "VARCHAR2", data_length: 50, data_precision: nil, data_scale: nil, char_used: "B",
108
+ type_owner: nil, type_name: nil, sql_type_name: nil, nullable: true, data_default: nil },
109
+ hire_date: {
110
+ position: 4, data_type: "DATE", data_length: 7, data_precision: nil, data_scale: nil, char_used: nil,
111
+ type_owner: nil, type_name: nil, sql_type_name: nil, nullable: true, data_default: nil },
112
+ status: {
113
+ position: 5, data_type: "VARCHAR2", data_length: 1, data_precision: nil, data_scale: nil, char_used: "B",
114
+ type_owner: nil, type_name: nil, sql_type_name: nil, nullable: true, data_default: nil }
115
+ )
116
116
  end
117
117
 
118
118
  end
@@ -125,12 +125,12 @@ describe "View" do
125
125
 
126
126
  it "should insert a record in view using partial list of columns" do
127
127
  plsql.test_employees_v.insert @employees.first.except(:hire_date)
128
- expect(plsql.test_employees_v.all).to eq([@employees.first.merge(:hire_date => nil)])
128
+ expect(plsql.test_employees_v.all).to eq([@employees.first.merge(hire_date: nil)])
129
129
  end
130
130
 
131
131
  it "should insert default value from table definition if value not provided" do
132
132
  plsql.test_employees_v.insert @employees.first.except(:status)
133
- expect(plsql.test_employees_v.all).to eq([@employees.first.merge(:status => 'N')])
133
+ expect(plsql.test_employees_v.all).to eq([@employees.first.merge(status: "N")])
134
134
  end
135
135
 
136
136
  it "should insert array of records in view" do
@@ -168,7 +168,7 @@ describe "View" do
168
168
 
169
169
  it "should insert many records with list of some fields and array of values" do
170
170
  plsql.test_employees_v.insert_values @employees_some_fields, *@employees_some_values
171
- expect(plsql.test_employees_v.all).to eq(@employees.map{|e| e.merge(@employee_default_values)})
171
+ expect(plsql.test_employees_v.all).to eq(@employees.map { |e| e.merge(@employee_default_values) })
172
172
  end
173
173
 
174
174
  end
@@ -186,13 +186,13 @@ describe "View" do
186
186
  it "should select all records in view" do
187
187
  expect(plsql.test_employees_v.select(:all, "ORDER BY employee_id")).to eq(@employees)
188
188
  expect(plsql.test_employees_v.all("ORDER BY employee_id")).to eq(@employees)
189
- expect(plsql.test_employees_v.all(:order_by => :employee_id)).to eq(@employees)
189
+ expect(plsql.test_employees_v.all(order_by: :employee_id)).to eq(@employees)
190
190
  end
191
191
 
192
192
  it "should select record in view using WHERE condition" do
193
193
  expect(plsql.test_employees_v.select(:first, "WHERE employee_id = :1", @employees.first[:employee_id])).to eq(@employees.first)
194
194
  expect(plsql.test_employees_v.first("WHERE employee_id = :1", @employees.first[:employee_id])).to eq(@employees.first)
195
- expect(plsql.test_employees_v.first(:employee_id => @employees.first[:employee_id])).to eq(@employees.first)
195
+ expect(plsql.test_employees_v.first(employee_id: @employees.first[:employee_id])).to eq(@employees.first)
196
196
  end
197
197
 
198
198
  it "should select record in view using :column => nil condition" do
@@ -201,7 +201,7 @@ describe "View" do
201
201
  employee[:hire_date] = nil
202
202
  plsql.test_employees_v.insert employee
203
203
  expect(plsql.test_employees_v.first("WHERE hire_date IS NULL")).to eq(employee)
204
- expect(plsql.test_employees_v.first(:hire_date => nil)).to eq(employee)
204
+ expect(plsql.test_employees_v.first(hire_date: nil)).to eq(employee)
205
205
  end
206
206
 
207
207
  it "should count records in view" do
@@ -220,26 +220,26 @@ describe "View" do
220
220
  it "should update a record in view" do
221
221
  employee_id = @employees.first[:employee_id]
222
222
  plsql.test_employees_v.insert @employees.first
223
- plsql.test_employees_v.update :first_name => 'Test', :where => {:employee_id => employee_id}
224
- expect(plsql.test_employees_v.first(:employee_id => employee_id)[:first_name]).to eq('Test')
223
+ plsql.test_employees_v.update first_name: "Test", where: { employee_id: employee_id }
224
+ expect(plsql.test_employees_v.first(employee_id: employee_id)[:first_name]).to eq("Test")
225
225
  end
226
226
 
227
227
  it "should update a record in view using String WHERE condition" do
228
228
  employee_id = @employees.first[:employee_id]
229
229
  plsql.test_employees_v.insert @employees
230
- plsql.test_employees_v.update :first_name => 'Test', :where => "employee_id = #{employee_id}"
231
- expect(plsql.test_employees_v.first(:employee_id => employee_id)[:first_name]).to eq('Test')
230
+ plsql.test_employees_v.update first_name: "Test", where: "employee_id = #{employee_id}"
231
+ expect(plsql.test_employees_v.first(employee_id: employee_id)[:first_name]).to eq("Test")
232
232
  # all other records should not be changed
233
233
  plsql.test_employees_v.all("WHERE employee_id > :1", employee_id) do |employee|
234
- expect(employee[:first_name]).not_to eq('Test')
234
+ expect(employee[:first_name]).not_to eq("Test")
235
235
  end
236
236
  end
237
237
 
238
238
  it "should update all records in view" do
239
239
  plsql.test_employees_v.insert @employees
240
- plsql.test_employees_v.update :first_name => 'Test'
240
+ plsql.test_employees_v.update first_name: "Test"
241
241
  plsql.test_employees_v.all do |employee|
242
- expect(employee[:first_name]).to eq('Test')
242
+ expect(employee[:first_name]).to eq("Test")
243
243
  end
244
244
  end
245
245
 
@@ -249,9 +249,9 @@ describe "View" do
249
249
  it "should delete record from view" do
250
250
  employee_id = @employees.first[:employee_id]
251
251
  plsql.test_employees_v.insert @employees
252
- plsql.test_employees_v.delete :employee_id => employee_id
253
- expect(plsql.test_employees_v.first(:employee_id => employee_id)).to be_nil
254
- expect(plsql.test_employees_v.all(:order_by => :employee_id)).to eq(@employees[1, @employees.size-1])
252
+ plsql.test_employees_v.delete employee_id: employee_id
253
+ expect(plsql.test_employees_v.first(employee_id: employee_id)).to be_nil
254
+ expect(plsql.test_employees_v.all(order_by: :employee_id)).to eq(@employees[1, @employees.size - 1])
255
255
  end
256
256
 
257
257
  it "should delete all records from view" do