activerecord-oracle_enhanced-adapter 1.6.9 → 1.7.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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