activerecord-oracle_enhanced-adapter 1.6.9 → 1.7.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -11
  3. data/History.md +126 -14
  4. data/README.md +9 -6
  5. data/RUNNING_TESTS.md +1 -1
  6. data/Rakefile +1 -16
  7. data/VERSION +1 -1
  8. data/activerecord-oracle_enhanced-adapter.gemspec +15 -52
  9. data/lib/active_record/connection_adapters/oracle_enhanced/column.rb +8 -22
  10. data/lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb +53 -45
  11. data/lib/active_record/connection_adapters/oracle_enhanced/connection.rb +6 -1
  12. data/lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb +23 -62
  13. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb +46 -56
  14. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_quoting.rb +35 -0
  15. data/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +34 -21
  16. data/lib/active_record/connection_adapters/oracle_enhanced/oci_quoting.rb +36 -0
  17. data/lib/active_record/connection_adapters/oracle_enhanced/procedures.rb +1 -1
  18. data/lib/active_record/connection_adapters/oracle_enhanced/quoting.rb +174 -0
  19. data/lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb +17 -8
  20. data/lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb +17 -11
  21. data/lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb +160 -178
  22. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +42 -94
  23. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb +50 -54
  24. data/lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb +15 -11
  25. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +197 -301
  26. data/lib/active_record/oracle_enhanced/type/integer.rb +3 -2
  27. data/lib/active_record/oracle_enhanced/type/national_character_string.rb +25 -0
  28. data/lib/active_record/oracle_enhanced/type/raw.rb +14 -2
  29. data/lib/active_record/oracle_enhanced/type/string.rb +28 -0
  30. data/lib/active_record/oracle_enhanced/type/text.rb +32 -0
  31. data/lib/activerecord-oracle_enhanced-adapter.rb +12 -17
  32. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +113 -135
  33. data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +51 -59
  34. data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +40 -41
  35. data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +6 -6
  36. data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +281 -233
  37. data/spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb +7 -7
  38. data/spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb +10 -10
  39. data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +22 -22
  40. data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +2 -2
  41. data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +36 -37
  42. data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +86 -46
  43. data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +194 -294
  44. data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +53 -39
  45. data/spec/spec_helper.rb +0 -6
  46. metadata +42 -143
  47. data/.travis.yml +0 -39
  48. data/.travis/oracle/download.sh +0 -14
  49. data/.travis/oracle/install.sh +0 -31
  50. data/.travis/setup_accounts.sh +0 -9
  51. data/lib/active_record/connection_adapters/oracle_enhanced/dirty.rb +0 -40
  52. data/lib/active_record/oracle_enhanced/type/timestamp.rb +0 -11
  53. data/spec/spec_config.yaml.template +0 -11
  54. data/spec/support/alter_system_user_password.sql +0 -2
  55. data/spec/support/create_oracle_enhanced_users.sql +0 -31
@@ -25,7 +25,7 @@ describe "OracleEnhancedAdapter schema definition" do
25
25
  it 'creates a sequence when adding a column with create_sequence = true' do
26
26
  _, sequence_name = ActiveRecord::Base.connection.pk_and_sequence_for_without_cache(:keyboards)
27
27
 
28
- sequence_name.should == Keyboard.sequence_name
28
+ expect(sequence_name).to eq(Keyboard.sequence_name)
29
29
  end
30
30
  end
31
31
 
@@ -60,11 +60,11 @@ describe "OracleEnhancedAdapter schema definition" do
60
60
  end
61
61
 
62
62
  it "should create sequence for non-default primary key" do
63
- ActiveRecord::Base.connection.next_sequence_value(Keyboard.sequence_name).should_not be_nil
63
+ expect(ActiveRecord::Base.connection.next_sequence_value(Keyboard.sequence_name)).not_to be_nil
64
64
  end
65
65
 
66
66
  it "should create sequence for default primary key" do
67
- ActiveRecord::Base.connection.next_sequence_value(IdKeyboard.sequence_name).should_not be_nil
67
+ expect(ActiveRecord::Base.connection.next_sequence_value(IdKeyboard.sequence_name)).not_to be_nil
68
68
  end
69
69
  end
70
70
 
@@ -73,7 +73,7 @@ describe "OracleEnhancedAdapter schema definition" do
73
73
  it "should return sequence name without truncating too much" do
74
74
  seq_name_length = ActiveRecord::Base.connection.sequence_name_length
75
75
  tname = "#{DATABASE_USER}" + "." +"a"*(seq_name_length - DATABASE_USER.length) + "z"*(DATABASE_USER).length
76
- ActiveRecord::Base.connection.default_sequence_name(tname).should match (/z_seq$/)
76
+ expect(ActiveRecord::Base.connection.default_sequence_name(tname)).to match (/z_seq$/)
77
77
  end
78
78
  end
79
79
 
@@ -114,13 +114,13 @@ describe "OracleEnhancedAdapter schema definition" do
114
114
  end
115
115
 
116
116
  it "should use default sequence start value 10000" do
117
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.default_sequence_start_value.should == 10000
117
+ expect(ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.default_sequence_start_value).to eq(10000)
118
118
 
119
119
  create_test_employees_table
120
120
  class ::TestEmployee < ActiveRecord::Base; end
121
121
 
122
122
  employee = TestEmployee.create!
123
- employee.id.should == 10000
123
+ expect(employee.id).to eq(10000)
124
124
  end
125
125
 
126
126
  it "should use specified default sequence start value" do
@@ -130,7 +130,7 @@ describe "OracleEnhancedAdapter schema definition" do
130
130
  class ::TestEmployee < ActiveRecord::Base; end
131
131
 
132
132
  employee = TestEmployee.create!
133
- employee.id.should == 1
133
+ expect(employee.id).to eq(1)
134
134
  end
135
135
 
136
136
  it "should use sequence start value from table definition" do
@@ -138,7 +138,7 @@ describe "OracleEnhancedAdapter schema definition" do
138
138
  class ::TestEmployee < ActiveRecord::Base; end
139
139
 
140
140
  employee = TestEmployee.create!
141
- employee.id.should == 10
141
+ expect(employee.id).to eq(10)
142
142
  end
143
143
 
144
144
  it "should use sequence start value and other options from table definition" do
@@ -146,9 +146,9 @@ describe "OracleEnhancedAdapter schema definition" do
146
146
  class ::TestEmployee < ActiveRecord::Base; end
147
147
 
148
148
  employee = TestEmployee.create!
149
- employee.id.should == 100
149
+ expect(employee.id).to eq(100)
150
150
  employee = TestEmployee.create!
151
- employee.id.should == 110
151
+ expect(employee.id).to eq(110)
152
152
  end
153
153
 
154
154
  end
@@ -198,26 +198,26 @@ describe "OracleEnhancedAdapter schema definition" do
198
198
  end
199
199
 
200
200
  it "should populate primary key using trigger" do
201
- lambda do
201
+ expect do
202
202
  @conn.execute "INSERT INTO test_employees (first_name) VALUES ('Raimonds')"
203
- end.should_not raise_error
203
+ end.not_to raise_error
204
204
  end
205
205
 
206
206
  it "should return new key value using connection insert method" do
207
207
  insert_id = @conn.insert("INSERT INTO test_employees (first_name) VALUES ('Raimonds')", nil, "id")
208
- @conn.select_value("SELECT test_employees_seq.currval FROM dual").should == insert_id
208
+ expect(@conn.select_value("SELECT test_employees_seq.currval FROM dual")).to eq(insert_id)
209
209
  end
210
210
 
211
211
  it "should create new record for model" do
212
212
  e = TestEmployee.create!(:first_name => 'Raimonds')
213
- @conn.select_value("SELECT test_employees_seq.currval FROM dual").should == e.id
213
+ expect(@conn.select_value("SELECT test_employees_seq.currval FROM dual")).to eq(e.id)
214
214
  end
215
215
 
216
216
  it "should not generate NoMethodError for :returning_id:Symbol" do
217
217
  set_logger
218
218
  @conn.reconnect! unless @conn.active?
219
219
  insert_id = @conn.insert("INSERT INTO test_employees (first_name) VALUES ('Yasuo')", nil, "id")
220
- @logger.output(:error).should_not match(/^Could not log "sql.active_record" event. NoMethodError: undefined method `name' for :returning_id:Symbol/)
220
+ expect(@logger.output(:error)).not_to match(/^Could not log "sql.active_record" event. NoMethodError: undefined method `name' for :returning_id:Symbol/)
221
221
  clear_logger
222
222
  end
223
223
 
@@ -237,19 +237,19 @@ describe "OracleEnhancedAdapter schema definition" do
237
237
  end
238
238
 
239
239
  it "should populate primary key using trigger" do
240
- lambda do
240
+ expect do
241
241
  @conn.execute "INSERT INTO test_employees (first_name) VALUES ('Raimonds')"
242
- end.should_not raise_error
242
+ end.not_to raise_error
243
243
  end
244
244
 
245
245
  it "should return new key value using connection insert method" do
246
246
  insert_id = @conn.insert("INSERT INTO test_employees (first_name) VALUES ('Raimonds')", nil, "id")
247
- @conn.select_value("SELECT test_employees_seq.currval FROM dual").should == insert_id
247
+ expect(@conn.select_value("SELECT test_employees_seq.currval FROM dual")).to eq(insert_id)
248
248
  end
249
249
 
250
250
  it "should create new record for model" do
251
251
  e = TestEmployee.create!(:first_name => 'Raimonds')
252
- @conn.select_value("SELECT test_employees_seq.currval FROM dual").should == e.id
252
+ expect(@conn.select_value("SELECT test_employees_seq.currval FROM dual")).to eq(e.id)
253
253
  end
254
254
  end
255
255
 
@@ -270,19 +270,19 @@ describe "OracleEnhancedAdapter schema definition" do
270
270
  end
271
271
 
272
272
  it "should populate primary key using trigger" do
273
- lambda do
273
+ expect do
274
274
  @conn.execute "INSERT INTO test_employees (first_name) VALUES ('Raimonds')"
275
- end.should_not raise_error
275
+ end.not_to raise_error
276
276
  end
277
277
 
278
278
  it "should return new key value using connection insert method" do
279
279
  insert_id = @conn.insert("INSERT INTO test_employees (first_name) VALUES ('Raimonds')", nil, @primary_key)
280
- @conn.select_value("SELECT #{@sequence_name}.currval FROM dual").should == insert_id
280
+ expect(@conn.select_value("SELECT #{@sequence_name}.currval FROM dual")).to eq(insert_id)
281
281
  end
282
282
 
283
283
  it "should create new record for model with autogenerated sequence option" do
284
284
  e = TestEmployee.create!(:first_name => 'Raimonds')
285
- @conn.select_value("SELECT #{@sequence_name}.currval FROM dual").should == e.id
285
+ expect(@conn.select_value("SELECT #{@sequence_name}.currval FROM dual")).to eq(e.id)
286
286
  end
287
287
  end
288
288
 
@@ -302,19 +302,19 @@ describe "OracleEnhancedAdapter schema definition" do
302
302
  end
303
303
 
304
304
  it "should populate primary key using trigger" do
305
- lambda do
305
+ expect do
306
306
  @conn.execute "INSERT INTO test_employees (first_name) VALUES ('Raimonds')"
307
- end.should_not raise_error
307
+ end.not_to raise_error
308
308
  end
309
309
 
310
310
  it "should return new key value using connection insert method" do
311
311
  insert_id = @conn.insert("INSERT INTO test_employees (first_name) VALUES ('Raimonds')", nil, "id")
312
- @conn.select_value("SELECT #{@sequence_name}.currval FROM dual").should == insert_id
312
+ expect(@conn.select_value("SELECT #{@sequence_name}.currval FROM dual")).to eq(insert_id)
313
313
  end
314
314
 
315
315
  it "should create new record for model with autogenerated sequence option" do
316
316
  e = TestEmployee.create!(:first_name => 'Raimonds')
317
- @conn.select_value("SELECT #{@sequence_name}.currval FROM dual").should == e.id
317
+ expect(@conn.select_value("SELECT #{@sequence_name}.currval FROM dual")).to eq(e.id)
318
318
  end
319
319
  end
320
320
 
@@ -349,8 +349,8 @@ describe "OracleEnhancedAdapter schema definition" do
349
349
  create_test_employees_table(table_comment)
350
350
  class ::TestEmployee < ActiveRecord::Base; end
351
351
 
352
- @conn.table_comment("test_employees").should == table_comment
353
- TestEmployee.table_comment.should == table_comment
352
+ expect(@conn.table_comment("test_employees")).to eq(table_comment)
353
+ expect(TestEmployee.table_comment).to eq(table_comment)
354
354
  end
355
355
 
356
356
  it "should create table with columns comment" do
@@ -359,11 +359,12 @@ describe "OracleEnhancedAdapter schema definition" do
359
359
  class ::TestEmployee < ActiveRecord::Base; end
360
360
 
361
361
  [:first_name, :last_name].each do |attr|
362
- @conn.column_comment("test_employees", attr.to_s).should == column_comments[attr]
363
- end
364
- [:first_name, :last_name].each do |attr|
365
- TestEmployee.columns_hash[attr.to_s].comment.should == column_comments[attr]
362
+ expect(@conn.column_comment("test_employees", attr.to_s)).to eq(column_comments[attr])
366
363
  end
364
+ # may drop support this syntax
365
+ # [:first_name, :last_name].each do |attr|
366
+ # expect(TestEmployee.columns_hash[attr.to_s].comment).to eq(column_comments[attr])
367
+ # end
367
368
  end
368
369
 
369
370
  it "should create table with table and columns comment and custom table name prefix" do
@@ -373,14 +374,15 @@ describe "OracleEnhancedAdapter schema definition" do
373
374
  create_test_employees_table(table_comment, column_comments)
374
375
  class ::TestEmployee < ActiveRecord::Base; end
375
376
 
376
- @conn.table_comment(TestEmployee.table_name).should == table_comment
377
- TestEmployee.table_comment.should == table_comment
378
- [:first_name, :last_name].each do |attr|
379
- @conn.column_comment(TestEmployee.table_name, attr.to_s).should == column_comments[attr]
380
- end
377
+ expect(@conn.table_comment(TestEmployee.table_name)).to eq(table_comment)
378
+ expect(TestEmployee.table_comment).to eq(table_comment)
381
379
  [:first_name, :last_name].each do |attr|
382
- TestEmployee.columns_hash[attr.to_s].comment.should == column_comments[attr]
380
+ expect(@conn.column_comment(TestEmployee.table_name, attr.to_s)).to eq(column_comments[attr])
383
381
  end
382
+ # may drop support this syntax
383
+ # [:first_name, :last_name].each do |attr|
384
+ # expect(TestEmployee.columns_hash[attr.to_s].comment).to eq(column_comments[attr])
385
+ # end
384
386
  end
385
387
 
386
388
  end
@@ -391,9 +393,9 @@ describe "OracleEnhancedAdapter schema definition" do
391
393
  end
392
394
 
393
395
  it "should drop table with :if_exists option no raise error" do
394
- lambda do
396
+ expect do
395
397
  @conn.drop_table("nonexistent_table", if_exists: true)
396
- end.should_not raise_error
398
+ end.not_to raise_error
397
399
  end
398
400
  end
399
401
 
@@ -428,27 +430,27 @@ describe "OracleEnhancedAdapter schema definition" do
428
430
  end
429
431
 
430
432
  it "should rename table name with new one" do
431
- lambda do
433
+ expect do
432
434
  @conn.rename_table("test_employees","new_test_employees")
433
- end.should_not raise_error
435
+ end.not_to raise_error
434
436
  end
435
437
 
436
438
  it "should raise error when new table name length is too long" do
437
- lambda do
439
+ expect do
438
440
  @conn.rename_table("test_employees","a"*31)
439
- end.should raise_error
441
+ end.to raise_error
440
442
  end
441
443
 
442
444
  it "should not raise error when new sequence name length is too long" do
443
- lambda do
445
+ expect do
444
446
  @conn.rename_table("test_employees","a"*27)
445
- end.should_not raise_error
447
+ end.not_to raise_error
446
448
  end
447
449
 
448
450
  it "should rename table when table has no primary key and sequence" do
449
- lambda do
451
+ expect do
450
452
  @conn.rename_table("test_employees_no_pkey","new_test_employees_no_pkey")
451
- end.should_not raise_error
453
+ end.not_to raise_error
452
454
  end
453
455
 
454
456
  end
@@ -475,7 +477,7 @@ describe "OracleEnhancedAdapter schema definition" do
475
477
  end
476
478
 
477
479
  it "should create table trigger with :new reference" do
478
- lambda do
480
+ expect do
479
481
  @conn.execute <<-SQL
480
482
  CREATE OR REPLACE TRIGGER test_employees_pkt
481
483
  BEFORE INSERT ON test_employees FOR EACH ROW
@@ -487,7 +489,7 @@ describe "OracleEnhancedAdapter schema definition" do
487
489
  END IF;
488
490
  END;
489
491
  SQL
490
- end.should_not raise_error
492
+ end.not_to raise_error
491
493
  end
492
494
  end
493
495
 
@@ -497,20 +499,21 @@ describe "OracleEnhancedAdapter schema definition" do
497
499
  end
498
500
 
499
501
  it "should return default index name if it is not larger than 30 characters" do
500
- @conn.index_name("employees", :column => "first_name").should == "index_employees_on_first_name"
502
+ expect(@conn.index_name("employees", :column => "first_name")).to eq("index_employees_on_first_name")
501
503
  end
502
504
 
503
505
  it "should return shortened index name by removing 'index', 'on' and 'and' keywords" do
504
- @conn.index_name("employees", :column => ["first_name", "email"]).should == "i_employees_first_name_email"
506
+ expect(@conn.index_name("employees", :column => ["first_name", "email"])).to eq("i_employees_first_name_email")
505
507
  end
506
508
 
507
509
  it "should return shortened index name by shortening table and column names" do
508
- @conn.index_name("employees", :column => ["first_name", "last_name"]).should == "i_emp_fir_nam_las_nam"
510
+ expect(@conn.index_name("employees", :column => ["first_name", "last_name"])).to eq("i_emp_fir_nam_las_nam")
509
511
  end
510
512
 
511
513
  it "should raise error if too large index name cannot be shortened" do
512
- @conn.index_name("test_employees", :column => ["first_name", "middle_name", "last_name"]).should ==
514
+ expect(@conn.index_name("test_employees", :column => ["first_name", "middle_name", "last_name"])).to eq(
513
515
  'i'+Digest::SHA1.hexdigest("index_test_employees_on_first_name_and_middle_name_and_last_name")[0,29]
516
+ )
514
517
  end
515
518
 
516
519
  end
@@ -537,27 +540,27 @@ describe "OracleEnhancedAdapter schema definition" do
537
540
  end
538
541
 
539
542
  it "should raise error when current index name and new index name are identical" do
540
- lambda do
543
+ expect do
541
544
  @conn.rename_index("test_employees","i_test_employees_first_name","i_test_employees_first_name")
542
- end.should raise_error
545
+ end.to raise_error
543
546
  end
544
547
 
545
548
  it "should raise error when new index name length is too long" do
546
- lambda do
549
+ expect do
547
550
  @conn.rename_index("test_employees","i_test_employees_first_name","a"*31)
548
- end.should raise_error
551
+ end.to raise_error
549
552
  end
550
553
 
551
554
  it "should raise error when current index name does not exist" do
552
- lambda do
555
+ expect do
553
556
  @conn.rename_index("test_employees","nonexist_index_name","new_index_name")
554
- end.should raise_error
557
+ end.to raise_error
555
558
  end
556
559
 
557
560
  it "should rename index name with new one" do
558
- lambda do
561
+ expect do
559
562
  @conn.rename_index("test_employees","i_test_employees_first_name","new_index_name")
560
- end.should_not raise_error
563
+ end.not_to raise_error
561
564
  end
562
565
  end
563
566
 
@@ -569,23 +572,23 @@ end
569
572
  end
570
573
 
571
574
  it "should ignore :limit option for :text column" do
572
- lambda do
575
+ expect do
573
576
  schema_define do
574
577
  create_table :test_posts, :force => true do |t|
575
578
  t.text :body, :limit => 10000
576
579
  end
577
580
  end
578
- end.should_not raise_error
581
+ end.not_to raise_error
579
582
  end
580
583
 
581
584
  it "should ignore :limit option for :binary column" do
582
- lambda do
585
+ expect do
583
586
  schema_define do
584
587
  create_table :test_posts, :force => true do |t|
585
588
  t.binary :picture, :limit => 10000
586
589
  end
587
590
  end
588
- end.should_not raise_error
591
+ end.not_to raise_error
589
592
  end
590
593
 
591
594
  end
@@ -633,9 +636,9 @@ end
633
636
  schema_define do
634
637
  add_foreign_key :test_comments, :test_posts
635
638
  end
636
- lambda do
639
+ expect do
637
640
  TestComment.create(:body => "test", :test_post_id => 1)
638
- end.should raise_error() {|e| e.message.should =~ /ORA-02291.*\.#{fk_name}/i}
641
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291.*\.#{fk_name}/i)}
639
642
  end
640
643
 
641
644
  context "with table_name_prefix" do
@@ -647,9 +650,9 @@ end
647
650
  add_foreign_key :test_comments, :test_posts
648
651
  end
649
652
 
650
- lambda do
653
+ expect do
651
654
  TestComment.create(:body => "test", :test_post_id => 1)
652
- end.should raise_error() {|e| e.message.should =~ /ORA-02291.*\.#{fk_name}/i}
655
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291.*\.#{fk_name}/i)}
653
656
  end
654
657
  end
655
658
 
@@ -662,9 +665,9 @@ end
662
665
  add_foreign_key :test_comments, :test_posts
663
666
  end
664
667
 
665
- lambda do
668
+ expect do
666
669
  TestComment.create(:body => "test", :test_post_id => 1)
667
- end.should raise_error() {|e| e.message.should =~ /ORA-02291.*\.#{fk_name}/i}
670
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291.*\.#{fk_name}/i)}
668
671
  end
669
672
  end
670
673
 
@@ -672,29 +675,31 @@ end
672
675
  schema_define do
673
676
  add_foreign_key :test_comments, :test_posts, :name => "comments_posts_fk"
674
677
  end
675
- lambda do
678
+ expect do
676
679
  TestComment.create(:body => "test", :test_post_id => 1)
677
- end.should raise_error() {|e| e.message.should =~ /ORA-02291.*\.COMMENTS_POSTS_FK/}
680
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291.*\.COMMENTS_POSTS_FK/)}
678
681
  end
679
682
 
680
683
  it "should add foreign key with long name which is shortened" do
681
684
  schema_define do
682
685
  add_foreign_key :test_comments, :test_posts, :name => "test_comments_test_post_id_foreign_key"
683
686
  end
684
- lambda do
687
+ expect do
685
688
  TestComment.create(:body => "test", :test_post_id => 1)
686
- end.should raise_error() {|e| e.message.should =~
687
- /ORA-02291.*\.C#{Digest::SHA1.hexdigest("test_comments_test_post_id_foreign_key")[0,29].upcase}/}
689
+ end.to raise_error() {|e| expect(e.message).to match(
690
+ /ORA-02291.*\.C#{Digest::SHA1.hexdigest("test_comments_test_post_id_foreign_key")[0,29].upcase}/
691
+ )}
688
692
  end
689
693
 
690
694
  it "should add foreign key with very long name which is shortened" do
691
695
  schema_define do
692
696
  add_foreign_key :test_comments, :test_posts, :name => "long_prefix_test_comments_test_post_id_foreign_key"
693
697
  end
694
- lambda do
698
+ expect do
695
699
  TestComment.create(:body => "test", :test_post_id => 1)
696
- end.should raise_error() {|e| e.message.should =~
697
- /ORA-02291.*\.C#{Digest::SHA1.hexdigest("long_prefix_test_comments_test_post_id_foreign_key")[0,29].upcase}/}
700
+ end.to raise_error() {|e| expect(e.message).to match(
701
+ /ORA-02291.*\.C#{Digest::SHA1.hexdigest("long_prefix_test_comments_test_post_id_foreign_key")[0,29].upcase}/
702
+ )}
698
703
  end
699
704
 
700
705
  it "should add foreign key with column" do
@@ -703,9 +708,9 @@ end
703
708
  schema_define do
704
709
  add_foreign_key :test_comments, :test_posts, :column => "post_id"
705
710
  end
706
- lambda do
711
+ expect do
707
712
  TestComment.create(:body => "test", :post_id => 1)
708
- end.should raise_error() {|e| e.message.should =~ /ORA-02291.*\.#{fk_name}/i}
713
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291.*\.#{fk_name}/i)}
709
714
  end
710
715
 
711
716
  it "should add foreign key with delete dependency" do
@@ -715,7 +720,7 @@ end
715
720
  p = TestPost.create(:title => "test")
716
721
  c = TestComment.create(:body => "test", :test_post => p)
717
722
  TestPost.delete(p.id)
718
- TestComment.find_by_id(c.id).should be_nil
723
+ expect(TestComment.find_by_id(c.id)).to be_nil
719
724
  end
720
725
 
721
726
  it "should add foreign key with nullify dependency" do
@@ -725,7 +730,7 @@ end
725
730
  p = TestPost.create(:title => "test")
726
731
  c = TestComment.create(:body => "test", :test_post => p)
727
732
  TestPost.delete(p.id)
728
- TestComment.find_by_id(c.id).test_post_id.should be_nil
733
+ expect(TestComment.find_by_id(c.id).test_post_id).to be_nil
729
734
  end
730
735
 
731
736
  it "should add a composite foreign key" do
@@ -745,10 +750,11 @@ end
745
750
  add_foreign_key :test_comments, :test_posts, :columns => ["baz_id", "fooz_id"]
746
751
  end
747
752
 
748
- lambda do
753
+ expect do
749
754
  TestComment.create(:body => "test", :fooz_id => 1, :baz_id => 1)
750
- end.should raise_error() {|e| e.message.should =~
751
- /ORA-02291.*\.TES_COM_BAZ_ID_FOO_ID_FK/}
755
+ end.to raise_error() {|e| expect(e.message).to match(
756
+ /ORA-02291.*\.TES_COM_BAZ_ID_FOO_ID_FK/
757
+ )}
752
758
  end
753
759
 
754
760
  it "should add a composite foreign key with name" do
@@ -768,9 +774,9 @@ end
768
774
  add_foreign_key :test_comments, :test_posts, :columns => ["baz_id", "fooz_id"], :name => 'comments_posts_baz_fooz_fk'
769
775
  end
770
776
 
771
- lambda do
777
+ expect do
772
778
  TestComment.create(:body => "test", :baz_id => 1, :fooz_id => 1)
773
- end.should raise_error() {|e| e.message.should =~ /ORA-02291.*\.COMMENTS_POSTS_BAZ_FOOZ_FK/}
779
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291.*\.COMMENTS_POSTS_BAZ_FOOZ_FK/)}
774
780
  end
775
781
 
776
782
  it "should remove foreign key by table name" do
@@ -778,9 +784,9 @@ end
778
784
  add_foreign_key :test_comments, :test_posts
779
785
  remove_foreign_key :test_comments, :test_posts
780
786
  end
781
- lambda do
787
+ expect do
782
788
  TestComment.create(:body => "test", :test_post_id => 1)
783
- end.should_not raise_error
789
+ end.not_to raise_error
784
790
  end
785
791
 
786
792
  it "should remove foreign key by constraint name" do
@@ -788,9 +794,9 @@ end
788
794
  add_foreign_key :test_comments, :test_posts, :name => "comments_posts_fk"
789
795
  remove_foreign_key :test_comments, :name => "comments_posts_fk"
790
796
  end
791
- lambda do
797
+ expect do
792
798
  TestComment.create(:body => "test", :test_post_id => 1)
793
- end.should_not raise_error
799
+ end.not_to raise_error
794
800
  end
795
801
 
796
802
  it "should remove foreign key by column name" do
@@ -798,9 +804,9 @@ end
798
804
  add_foreign_key :test_comments, :test_posts
799
805
  remove_foreign_key :test_comments, :column => "test_post_id"
800
806
  end
801
- lambda do
807
+ expect do
802
808
  TestComment.create(:body => "test", :test_post_id => 1)
803
- end.should_not raise_error
809
+ end.not_to raise_error
804
810
  end
805
811
 
806
812
  end
@@ -819,8 +825,8 @@ end
819
825
  t.binary :test_blob
820
826
  end
821
827
  end
822
- TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'TEST_CLOB'").should == DATABASE_NON_DEFAULT_TABLESPACE
823
- TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'TEST_BLOB'").should_not == DATABASE_NON_DEFAULT_TABLESPACE
828
+ expect(TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'TEST_CLOB'")).to eq(DATABASE_NON_DEFAULT_TABLESPACE)
829
+ expect(TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'TEST_BLOB'")).not_to eq(DATABASE_NON_DEFAULT_TABLESPACE)
824
830
  end
825
831
 
826
832
  it 'should use default tablespace for blobs' do
@@ -832,8 +838,8 @@ end
832
838
  t.binary :test_blob
833
839
  end
834
840
  end
835
- TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'TEST_BLOB'").should == DATABASE_NON_DEFAULT_TABLESPACE
836
- TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'TEST_CLOB'").should_not == DATABASE_NON_DEFAULT_TABLESPACE
841
+ expect(TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'TEST_BLOB'")).to eq(DATABASE_NON_DEFAULT_TABLESPACE)
842
+ expect(TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'TEST_CLOB'")).not_to eq(DATABASE_NON_DEFAULT_TABLESPACE)
837
843
  end
838
844
 
839
845
  after do
@@ -844,53 +850,6 @@ end
844
850
  end
845
851
  end
846
852
 
847
- describe "primary key in table definition" do
848
- before do
849
- @conn = ActiveRecord::Base.connection
850
-
851
- class ::TestPost < ActiveRecord::Base
852
- end
853
- end
854
-
855
- it 'should use default tablespace for primary key' do
856
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.default_tablespaces[:index] = nil
857
- schema_define do
858
- create_table :test_posts, :force => true
859
- end
860
-
861
- index_name = @conn.select_value(
862
- "SELECT index_name FROM all_constraints
863
- WHERE table_name = 'TEST_POSTS'
864
- AND constraint_type = 'P'
865
- AND owner = SYS_CONTEXT('userenv', 'current_schema')")
866
-
867
- expect(TestPost.connection.select_value("SELECT tablespace_name FROM user_indexes WHERE index_name = '#{index_name}'")).to eq('USERS')
868
- end
869
-
870
- it 'should use non default tablespace for primary key' do
871
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.default_tablespaces[:index] = DATABASE_NON_DEFAULT_TABLESPACE
872
- schema_define do
873
- create_table :test_posts, :force => true
874
- end
875
-
876
- index_name = @conn.select_value(
877
- "SELECT index_name FROM all_constraints
878
- WHERE table_name = 'TEST_POSTS'
879
- AND constraint_type = 'P'
880
- AND owner = SYS_CONTEXT('userenv', 'current_schema')")
881
-
882
- expect(TestPost.connection.select_value("SELECT tablespace_name FROM user_indexes WHERE index_name = '#{index_name}'")).to eq(DATABASE_NON_DEFAULT_TABLESPACE)
883
- end
884
-
885
- after do
886
- Object.send(:remove_const, "TestPost")
887
- schema_define do
888
- drop_table :test_posts rescue nil
889
- end
890
- ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.default_tablespaces[:index] = nil
891
- end
892
- end
893
-
894
853
  describe "foreign key in table definition" do
895
854
  before(:each) do
896
855
  schema_define do
@@ -924,9 +883,9 @@ end
924
883
  t.foreign_key :test_posts
925
884
  end
926
885
  end
927
- lambda do
886
+ expect do
928
887
  TestComment.create(:body => "test", :test_post_id => 1)
929
- end.should raise_error() {|e| e.message.should =~ /ORA-02291/}
888
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291/)}
930
889
  end
931
890
 
932
891
  it "should add foreign key in create_table references" do
@@ -936,9 +895,9 @@ end
936
895
  t.references :test_post, :foreign_key => true
937
896
  end
938
897
  end
939
- lambda do
898
+ expect do
940
899
  TestComment.create(:body => "test", :test_post_id => 1)
941
- end.should raise_error() {|e| e.message.should =~ /ORA-02291/}
900
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291/)}
942
901
  end
943
902
 
944
903
  it "should add foreign key in change_table" do
@@ -951,9 +910,9 @@ end
951
910
  t.foreign_key :test_posts
952
911
  end
953
912
  end
954
- lambda do
913
+ expect do
955
914
  TestComment.create(:body => "test", :test_post_id => 1)
956
- end.should raise_error() {|e| e.message.should =~ /ORA-02291/}
915
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291/)}
957
916
  end
958
917
 
959
918
  it "should add foreign key in change_table references" do
@@ -965,9 +924,9 @@ end
965
924
  t.references :test_post, :foreign_key => true
966
925
  end
967
926
  end
968
- lambda do
927
+ expect do
969
928
  TestComment.create(:body => "test", :test_post_id => 1)
970
- end.should raise_error() {|e| e.message.should =~ /ORA-02291/}
929
+ end.to raise_error() {|e| expect(e.message).to match(/ORA-02291/)}
971
930
  end
972
931
 
973
932
  it "should remove foreign key by table name" do
@@ -983,9 +942,9 @@ end
983
942
  t.remove_foreign_key :test_posts
984
943
  end
985
944
  end
986
- lambda do
945
+ expect do
987
946
  TestComment.create(:body => "test", :test_post_id => 1)
988
- end.should_not raise_error
947
+ end.not_to raise_error
989
948
  end
990
949
 
991
950
  end
@@ -1015,18 +974,18 @@ end
1015
974
  end
1016
975
 
1017
976
  it "should disable all foreign keys" do
1018
- lambda do
977
+ expect do
1019
978
  @conn.execute "INSERT INTO test_comments (id, body, test_post_id) VALUES (1, 'test', 1)"
1020
- end.should raise_error
979
+ end.to raise_error
1021
980
  @conn.disable_referential_integrity do
1022
- lambda do
981
+ expect do
1023
982
  @conn.execute "INSERT INTO test_comments (id, body, test_post_id) VALUES (2, 'test', 2)"
1024
983
  @conn.execute "INSERT INTO test_posts (id, title) VALUES (2, 'test')"
1025
- end.should_not raise_error
984
+ end.not_to raise_error
1026
985
  end
1027
- lambda do
986
+ expect do
1028
987
  @conn.execute "INSERT INTO test_comments (id, body, test_post_id) VALUES (3, 'test', 3)"
1029
- end.should raise_error
988
+ end.to raise_error
1030
989
  end
1031
990
 
1032
991
  end
@@ -1075,9 +1034,9 @@ end
1075
1034
  add_synonym :synonym_to_posts, "#{schema_name}.test_posts", :force => true
1076
1035
  add_synonym :synonym_to_posts_seq, "#{schema_name}.test_posts_seq", :force => true
1077
1036
  end
1078
- lambda do
1037
+ expect do
1079
1038
  TestPost.create(:title => "test")
1080
- end.should_not raise_error
1039
+ end.not_to raise_error
1081
1040
  end
1082
1041
 
1083
1042
  it "should create synonym to table over database link" do
@@ -1086,9 +1045,9 @@ end
1086
1045
  add_synonym :synonym_to_posts, "test_posts@#{db_link}", :force => true
1087
1046
  add_synonym :synonym_to_posts_seq, "test_posts_seq@#{db_link}", :force => true
1088
1047
  end
1089
- lambda do
1048
+ expect do
1090
1049
  TestPost.create(:title => "test")
1091
- end.should_not raise_error
1050
+ end.not_to raise_error
1092
1051
  end
1093
1052
 
1094
1053
  end
@@ -1116,7 +1075,7 @@ end
1116
1075
  end
1117
1076
  end
1118
1077
  class ::TestPost < ActiveRecord::Base; end
1119
- TestPost.columns_hash['title'].null.should be false
1078
+ expect(TestPost.columns_hash['title'].null).to be_falsey
1120
1079
  end
1121
1080
 
1122
1081
  after(:each) do
@@ -1130,7 +1089,7 @@ end
1130
1089
  change_column :test_posts, :title, :string, :null => true
1131
1090
  end
1132
1091
  TestPost.reset_column_information
1133
- TestPost.columns_hash['title'].null.should be true
1092
+ expect(TestPost.columns_hash['title'].null).to be_truthy
1134
1093
  end
1135
1094
 
1136
1095
  it "should add column" do
@@ -1138,7 +1097,7 @@ end
1138
1097
  add_column :test_posts, :body, :string
1139
1098
  end
1140
1099
  TestPost.reset_column_information
1141
- TestPost.columns_hash['body'].should_not be_nil
1100
+ expect(TestPost.columns_hash['body']).not_to be_nil
1142
1101
  end
1143
1102
 
1144
1103
  it "should add lob column with non_default tablespace" do
@@ -1146,7 +1105,7 @@ end
1146
1105
  schema_define do
1147
1106
  add_column :test_posts, :body, :text
1148
1107
  end
1149
- TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'BODY'").should == DATABASE_NON_DEFAULT_TABLESPACE
1108
+ expect(TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'BODY'")).to eq(DATABASE_NON_DEFAULT_TABLESPACE)
1150
1109
  end
1151
1110
 
1152
1111
  it "should add blob column with non_default tablespace" do
@@ -1154,7 +1113,7 @@ end
1154
1113
  schema_define do
1155
1114
  add_column :test_posts, :attachment, :binary
1156
1115
  end
1157
- TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'ATTACHMENT'").should == DATABASE_NON_DEFAULT_TABLESPACE
1116
+ expect(TestPost.connection.select_value("SELECT tablespace_name FROM user_lobs WHERE table_name='TEST_POSTS' and column_name = 'ATTACHMENT'")).to eq(DATABASE_NON_DEFAULT_TABLESPACE)
1158
1117
  end
1159
1118
 
1160
1119
  it "should rename column" do
@@ -1162,8 +1121,8 @@ end
1162
1121
  rename_column :test_posts, :title, :subject
1163
1122
  end
1164
1123
  TestPost.reset_column_information
1165
- TestPost.columns_hash['subject'].should_not be_nil
1166
- TestPost.columns_hash['title'].should be_nil
1124
+ expect(TestPost.columns_hash['subject']).not_to be_nil
1125
+ expect(TestPost.columns_hash['title']).to be_nil
1167
1126
  end
1168
1127
 
1169
1128
  it "should remove column" do
@@ -1171,7 +1130,7 @@ end
1171
1130
  remove_column :test_posts, :title
1172
1131
  end
1173
1132
  TestPost.reset_column_information
1174
- TestPost.columns_hash['title'].should be_nil
1133
+ expect(TestPost.columns_hash['title']).to be_nil
1175
1134
  end
1176
1135
 
1177
1136
  it "should remove column when using change_table" do
@@ -1181,7 +1140,7 @@ end
1181
1140
  end
1182
1141
  end
1183
1142
  TestPost.reset_column_information
1184
- TestPost.columns_hash['title'].should be_nil
1143
+ expect(TestPost.columns_hash['title']).to be_nil
1185
1144
  end
1186
1145
 
1187
1146
  it "should remove multiple columns when using change_table" do
@@ -1191,8 +1150,8 @@ end
1191
1150
  end
1192
1151
  end
1193
1152
  TestPost.reset_column_information
1194
- TestPost.columns_hash['title'].should be_nil
1195
- TestPost.columns_hash['content'].should be_nil
1153
+ expect(TestPost.columns_hash['title']).to be_nil
1154
+ expect(TestPost.columns_hash['content']).to be_nil
1196
1155
  end
1197
1156
 
1198
1157
  it "should ignore type and options parameter and remove column" do
@@ -1200,7 +1159,7 @@ end
1200
1159
  remove_column :test_posts, :title, :string, {}
1201
1160
  end
1202
1161
  TestPost.reset_column_information
1203
- TestPost.columns_hash['title'].should be_nil
1162
+ expect(TestPost.columns_hash['title']).to be_nil
1204
1163
  end
1205
1164
  end
1206
1165
 
@@ -1222,16 +1181,16 @@ end
1222
1181
 
1223
1182
  TestFraction.reset_column_information
1224
1183
  tf = TestFraction.columns.detect { |c| c.virtual? }
1225
- tf.should_not be nil
1226
- tf.name.should == "field2"
1227
- tf.virtual?.should be true
1228
- lambda do
1184
+ expect(tf).not_to be nil
1185
+ expect(tf.name).to eq("field2")
1186
+ expect(tf.virtual?).to be true
1187
+ expect do
1229
1188
  tf = TestFraction.new(:field1=>10)
1230
- tf.field2.should be nil # not whatever is in DATA_DEFAULT column
1189
+ expect(tf.field2).to be nil # not whatever is in DATA_DEFAULT column
1231
1190
  tf.save!
1232
1191
  tf.reload
1233
- end.should_not raise_error
1234
- tf.field2.to_i.should == 11
1192
+ end.not_to raise_error
1193
+ expect(tf.field2.to_i).to eq(11)
1235
1194
 
1236
1195
  schema_define do
1237
1196
  drop_table :test_fractions
@@ -1239,14 +1198,14 @@ end
1239
1198
  end
1240
1199
 
1241
1200
  it 'should raise error if column expression is not provided' do
1242
- lambda {
1201
+ expect {
1243
1202
  schema_define do
1244
1203
  create_table :test_fractions do |t|
1245
1204
  t.integer :field1
1246
1205
  t.virtual :field2
1247
1206
  end
1248
1207
  end
1249
- }.should raise_error
1208
+ }.to raise_error
1250
1209
  end
1251
1210
  end
1252
1211
 
@@ -1277,16 +1236,16 @@ end
1277
1236
 
1278
1237
  it 'should include virtual columns and not try to update them' do
1279
1238
  tf = TestFraction.columns.detect { |c| c.virtual? }
1280
- tf.should_not be nil
1281
- tf.name.should == "percent"
1282
- tf.virtual?.should be true
1283
- lambda do
1239
+ expect(tf).not_to be nil
1240
+ expect(tf.name).to eq("percent")
1241
+ expect(tf.virtual?).to be true
1242
+ expect do
1284
1243
  tf = TestFraction.new(:numerator=>20, :denominator=>100)
1285
- tf.percent.should be nil # not whatever is in DATA_DEFAULT column
1244
+ expect(tf.percent).to be nil # not whatever is in DATA_DEFAULT column
1286
1245
  tf.save!
1287
1246
  tf.reload
1288
- end.should_not raise_error
1289
- tf.percent.to_i.should == 20
1247
+ end.not_to raise_error
1248
+ expect(tf.percent.to_i).to eq(20)
1290
1249
  end
1291
1250
 
1292
1251
  it 'should add virtual column' do
@@ -1295,15 +1254,15 @@ end
1295
1254
  end
1296
1255
  TestFraction.reset_column_information
1297
1256
  tf = TestFraction.columns.detect { |c| c.name == 'rem' }
1298
- tf.should_not be nil
1299
- tf.virtual?.should be true
1300
- lambda do
1257
+ expect(tf).not_to be nil
1258
+ expect(tf.virtual?).to be true
1259
+ expect do
1301
1260
  tf = TestFraction.new(:numerator=>7, :denominator=>5)
1302
- tf.rem.should be nil
1261
+ expect(tf.rem).to be nil
1303
1262
  tf.save!
1304
1263
  tf.reload
1305
- end.should_not raise_error
1306
- tf.rem.to_i.should == 2
1264
+ end.not_to raise_error
1265
+ expect(tf.rem.to_i).to eq(2)
1307
1266
  end
1308
1267
 
1309
1268
  it 'should add virtual column with explicit type' do
@@ -1312,17 +1271,17 @@ end
1312
1271
  end
1313
1272
  TestFraction.reset_column_information
1314
1273
  tf = TestFraction.columns.detect { |c| c.name == 'expression' }
1315
- tf.should_not be nil
1316
- tf.virtual?.should be true
1317
- tf.type.should be :string
1318
- tf.limit.should be 100
1319
- lambda do
1274
+ expect(tf).not_to be nil
1275
+ expect(tf.virtual?).to be true
1276
+ expect(tf.type).to be :string
1277
+ expect(tf.limit).to be 100
1278
+ expect do
1320
1279
  tf = TestFraction.new(:numerator=>7, :denominator=>5)
1321
- tf.expression.should be nil
1280
+ expect(tf.expression).to be nil
1322
1281
  tf.save!
1323
1282
  tf.reload
1324
- end.should_not raise_error
1325
- tf.expression.should == '7/5'
1283
+ end.not_to raise_error
1284
+ expect(tf.expression).to eq('7/5')
1326
1285
  end
1327
1286
 
1328
1287
  it 'should change virtual column definition' do
@@ -1332,18 +1291,18 @@ end
1332
1291
  end
1333
1292
  TestFraction.reset_column_information
1334
1293
  tf = TestFraction.columns.detect { |c| c.name == 'percent' }
1335
- tf.should_not be nil
1336
- tf.virtual?.should be true
1337
- tf.type.should be :decimal
1338
- tf.precision.should be 15
1339
- tf.scale.should be 2
1340
- lambda do
1294
+ expect(tf).not_to be nil
1295
+ expect(tf.virtual?).to be true
1296
+ expect(tf.type).to be :decimal
1297
+ expect(tf.precision).to be 15
1298
+ expect(tf.scale).to be 2
1299
+ expect do
1341
1300
  tf = TestFraction.new(:numerator=>11, :denominator=>17)
1342
- tf.percent.should be nil
1301
+ expect(tf.percent).to be nil
1343
1302
  tf.save!
1344
1303
  tf.reload
1345
- end.should_not raise_error
1346
- tf.percent.should == '64.71'.to_d
1304
+ end.not_to raise_error
1305
+ expect(tf.percent).to eq('64.71'.to_d)
1347
1306
  end
1348
1307
 
1349
1308
  it 'should change virtual column type' do
@@ -1352,18 +1311,18 @@ end
1352
1311
  end
1353
1312
  TestFraction.reset_column_information
1354
1313
  tf = TestFraction.columns.detect { |c| c.name == 'percent' }
1355
- tf.should_not be nil
1356
- tf.virtual?.should be true
1357
- tf.type.should be :decimal
1358
- tf.precision.should be 12
1359
- tf.scale.should be 5
1360
- lambda do
1314
+ expect(tf).not_to be nil
1315
+ expect(tf.virtual?).to be true
1316
+ expect(tf.type).to be :decimal
1317
+ expect(tf.precision).to be 12
1318
+ expect(tf.scale).to be 5
1319
+ expect do
1361
1320
  tf = TestFraction.new(:numerator=>11, :denominator=>17)
1362
- tf.percent.should be nil
1321
+ expect(tf.percent).to be nil
1363
1322
  tf.save!
1364
1323
  tf.reload
1365
- end.should_not raise_error
1366
- tf.percent.should == '64.70588'.to_d
1324
+ end.not_to raise_error
1325
+ expect(tf.percent).to eq('64.70588'.to_d)
1367
1326
  end
1368
1327
  end
1369
1328
 
@@ -1393,7 +1352,7 @@ end
1393
1352
  t.string :title, :null => false
1394
1353
  end
1395
1354
  end
1396
- @would_execute_sql.should =~ /CREATE +TABLE .* \(.*\) NOLOGGING/
1355
+ expect(@would_execute_sql).to match(/CREATE +TABLE .* \(.*\) NOLOGGING/)
1397
1356
  end
1398
1357
 
1399
1358
  it "should support the :tablespace option to create_table" do
@@ -1402,7 +1361,7 @@ end
1402
1361
  t.string :title, :null => false
1403
1362
  end
1404
1363
  end
1405
- @would_execute_sql.should =~ /CREATE +TABLE .* \(.*\) TABLESPACE bogus/
1364
+ expect(@would_execute_sql).to match(/CREATE +TABLE .* \(.*\) TABLESPACE bogus/)
1406
1365
  end
1407
1366
 
1408
1367
  describe "creating a table with a tablespace defaults set" do
@@ -1415,7 +1374,7 @@ end
1415
1374
  @conn.create_table :tablespace_tests do |t|
1416
1375
  t.string :foo
1417
1376
  end
1418
- @would_execute_sql.should =~ /CREATE +TABLE .* \(.*\) TABLESPACE #{DATABASE_NON_DEFAULT_TABLESPACE}/
1377
+ expect(@would_execute_sql).to match(/CREATE +TABLE .* \(.*\) TABLESPACE #{DATABASE_NON_DEFAULT_TABLESPACE}/)
1419
1378
  end
1420
1379
  end
1421
1380
 
@@ -1428,7 +1387,7 @@ end
1428
1387
  @conn.create_table :tablespace_tests, :id=>false, :organization=>'INDEX INITRANS 4 COMPRESS 1', :tablespace=>'bogus' do |t|
1429
1388
  t.integer :id
1430
1389
  end
1431
- @would_execute_sql.should =~ /CREATE +TABLE .*\(.*\)\s+ORGANIZATION INDEX INITRANS 4 COMPRESS 1 TABLESPACE bogus/
1390
+ expect(@would_execute_sql).to match(/CREATE +TABLE .*\(.*\)\s+ORGANIZATION INDEX INITRANS 4 COMPRESS 1 TABLESPACE bogus/)
1432
1391
  end
1433
1392
  end
1434
1393
 
@@ -1436,14 +1395,14 @@ end
1436
1395
  schema_define do
1437
1396
  add_index :keyboards, :name, :options=>'NOLOGGING'
1438
1397
  end
1439
- @would_execute_sql.should =~ /CREATE +INDEX .* ON .* \(.*\) NOLOGGING/
1398
+ expect(@would_execute_sql).to match(/CREATE +INDEX .* ON .* \(.*\) NOLOGGING/)
1440
1399
  end
1441
1400
 
1442
1401
  it "should support the :tablespace option to add_index" do
1443
1402
  schema_define do
1444
1403
  add_index :keyboards, :name, :tablespace=>'bogus'
1445
1404
  end
1446
- @would_execute_sql.should =~ /CREATE +INDEX .* ON .* \(.*\) TABLESPACE bogus/
1405
+ expect(@would_execute_sql).to match(/CREATE +INDEX .* ON .* \(.*\) TABLESPACE bogus/)
1447
1406
  end
1448
1407
 
1449
1408
  it "should use default_tablespaces in add_index" do
@@ -1452,74 +1411,15 @@ end
1452
1411
  add_index :keyboards, :name
1453
1412
  end
1454
1413
  ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.default_tablespaces.delete(:index)
1455
- @would_execute_sql.should =~ /CREATE +INDEX .* ON .* \(.*\) TABLESPACE #{DATABASE_NON_DEFAULT_TABLESPACE}/
1414
+ expect(@would_execute_sql).to match(/CREATE +INDEX .* ON .* \(.*\) TABLESPACE #{DATABASE_NON_DEFAULT_TABLESPACE}/)
1456
1415
  end
1457
1416
 
1458
1417
  it "should create unique function index but not create unique constraints" do
1459
1418
  schema_define do
1460
1419
  add_index :keyboards, 'lower(name)', unique: true, name: :index_keyboards_on_lower_name
1461
1420
  end
1462
- @would_execute_sql.should_not =~ /ALTER +TABLE .* ADD CONSTRAINT .* UNIQUE \(.*\(.*\)\)/
1421
+ expect(@would_execute_sql).not_to match(/ALTER +TABLE .* ADD CONSTRAINT .* UNIQUE \(.*\(.*\)\)/)
1463
1422
  end
1464
1423
 
1465
- describe "#initialize_schema_migrations_table" do
1466
- # In Rails 2.3 to 3.2.x the index name for the migrations
1467
- # table is hard-coded. We can modify the index name here
1468
- # so we can support prefixes/suffixes that would
1469
- # cause the index to be too long.
1470
- #
1471
- # Rails 4 can use this solution as well.
1472
- after(:each) do
1473
- ActiveRecord::Base.table_name_prefix = ''
1474
- ActiveRecord::Base.table_name_suffix = ''
1475
- end
1476
-
1477
- def add_schema_migrations_index
1478
- schema_define do
1479
- initialize_schema_migrations_table
1480
- end
1481
- end
1482
-
1483
- context "without prefix or suffix" do
1484
- it "should not truncate the index name" do
1485
- add_schema_migrations_index
1486
-
1487
- @would_execute_sql.should include('CREATE UNIQUE INDEX "UNIQUE_SCHEMA_MIGRATIONS" ON "SCHEMA_MIGRATIONS" ("VERSION")')
1488
- end
1489
- end
1490
-
1491
- context "with prefix" do
1492
- before { ActiveRecord::Base.table_name_prefix = 'toolong_' }
1493
-
1494
- it "should truncate the 'unique_schema_migrations' portion of the index name to fit the prefix within the limit" do
1495
- add_schema_migrations_index
1496
-
1497
- @would_execute_sql.should include('CREATE UNIQUE INDEX "TOOLONG_UNIQUE_SCHEMA_MIGRATIO" ON "TOOLONG_SCHEMA_MIGRATIONS" ("VERSION")')
1498
- end
1499
- end
1500
-
1501
- context "with suffix" do
1502
- before { ActiveRecord::Base.table_name_suffix = '_toolong' }
1503
-
1504
- it "should truncate the 'unique_schema_migrations' portion of the index name to fit the suffix within the limit" do
1505
- add_schema_migrations_index
1506
-
1507
- @would_execute_sql.should include('CREATE UNIQUE INDEX "UNIQUE_SCHEMA_MIGRATIO_TOOLONG" ON "SCHEMA_MIGRATIONS_TOOLONG" ("VERSION")')
1508
- end
1509
- end
1510
-
1511
- context "with prefix and suffix" do
1512
- before do
1513
- ActiveRecord::Base.table_name_prefix = 'begin_'
1514
- ActiveRecord::Base.table_name_suffix = '_end'
1515
- end
1516
-
1517
- it "should truncate the 'unique_schema_migrations' portion of the index name to fit the suffix within the limit" do
1518
- add_schema_migrations_index
1519
-
1520
- @would_execute_sql.should include('CREATE UNIQUE INDEX "BEGIN_UNIQUE_SCHEMA_MIGRAT_END" ON "BEGIN_SCHEMA_MIGRATIONS_END" ("VERSION")')
1521
- end
1522
- end
1523
- end
1524
1424
  end
1525
1425
  end