1
SEQUEL_ADAPTER_TEST = :firebird
1
3
require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
3
unless defined?(FIREBIRD_DB)
4
FIREBIRD_URL = 'firebird://sysdba:masterkey@localhost/reality_spec' unless defined? FIREBIRD_URL
5
FIREBIRD_DB = Sequel.connect(ENV['SEQUEL_FB_SPEC_DB']||FIREBIRD_URL)
7
INTEGRATION_DB = FIREBIRD_DB unless defined?(INTEGRATION_DB)
13
9
def logger.method_missing(m, msg)
14
FIREBIRD_DB.sqls.push(msg)
16
FIREBIRD_DB.loggers = [logger]
18
FIREBIRD_DB.create_table! :test do
14
DB.create_table! :test do
19
15
varchar :name, :size => 50
20
16
integer :val, :index => true
23
FIREBIRD_DB.create_table! :test2 do
28
FIREBIRD_DB.create_table! :test3 do
33
FIREBIRD_DB.create_table! :test5 do
19
DB.create_table! :test2 do
24
DB.create_table! :test3 do
29
DB.create_table! :test5 do
38
FIREBIRD_DB.create_table! :test6 do
34
DB.create_table! :test6 do
247
243
describe "A Firebird database" do
250
246
@db.drop_table?(:posts)
254
250
specify "should allow us to name the sequences" do
255
251
@db.create_table(:posts){primary_key :id, :sequence_name => "seq_test"}
257
"DROP SEQUENCE SEQ_TEST",
258
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
259
"CREATE SEQUENCE SEQ_TEST",
260
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_test;\n end\n end\n\n"
254
"DROP SEQUENCE SEQ_TEST",
255
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
256
"CREATE SEQUENCE SEQ_TEST",
257
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_test;\n end\n end\n\n"
264
262
specify "should allow us to set the starting position for the sequences" do
265
263
@db.create_table(:posts){primary_key :id, :sequence_start_position => 999}
267
"DROP SEQUENCE SEQ_POSTS_ID",
268
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
269
"CREATE SEQUENCE SEQ_POSTS_ID",
270
"ALTER SEQUENCE SEQ_POSTS_ID RESTART WITH 999",
271
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
266
"DROP SEQUENCE SEQ_POSTS_ID",
267
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
268
"CREATE SEQUENCE SEQ_POSTS_ID",
269
"ALTER SEQUENCE SEQ_POSTS_ID RESTART WITH 999",
270
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
275
275
specify "should allow us to name and set the starting position for the sequences" do
276
276
@db.create_table(:posts){primary_key :id, :sequence_name => "seq_test", :sequence_start_position => 999}
278
"DROP SEQUENCE SEQ_TEST",
279
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
280
"CREATE SEQUENCE SEQ_TEST",
281
"ALTER SEQUENCE SEQ_TEST RESTART WITH 999",
282
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_test;\n end\n end\n\n"
279
"DROP SEQUENCE SEQ_TEST",
280
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
281
"CREATE SEQUENCE SEQ_TEST",
282
"ALTER SEQUENCE SEQ_TEST RESTART WITH 999",
283
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_test;\n end\n end\n\n"
286
288
specify "should allow us to name the triggers" do
287
289
@db.create_table(:posts){primary_key :id, :trigger_name => "trig_test"}
289
"DROP SEQUENCE SEQ_POSTS_ID",
290
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
291
"CREATE SEQUENCE SEQ_POSTS_ID",
292
" CREATE TRIGGER TRIG_TEST for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
292
"DROP SEQUENCE SEQ_POSTS_ID",
293
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
294
"CREATE SEQUENCE SEQ_POSTS_ID",
295
" CREATE TRIGGER TRIG_TEST for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
296
300
specify "should allow us to not create the sequence" do
297
301
@db.create_table(:posts){primary_key :id, :create_sequence => false}
299
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
300
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
304
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
305
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
304
310
specify "should allow us to not create the trigger" do
305
311
@db.create_table(:posts){primary_key :id, :create_trigger => false}
307
"DROP SEQUENCE SEQ_POSTS_ID",
308
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
309
"CREATE SEQUENCE SEQ_POSTS_ID",
314
"DROP SEQUENCE SEQ_POSTS_ID",
315
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
316
"CREATE SEQUENCE SEQ_POSTS_ID",
313
321
specify "should allow us to not create either the sequence nor the trigger" do
314
322
@db.create_table(:posts){primary_key :id, :create_sequence => false, :create_trigger => false}
316
"CREATE TABLE POSTS (ID integer PRIMARY KEY )"
325
"CREATE TABLE POSTS (ID integer PRIMARY KEY )"
320
330
specify "should support column operations" do