Skip to content

Commit 1cb766f

Browse files
committed
Fix specs
1 parent bf672b7 commit 1cb766f

File tree

1 file changed

+119
-8
lines changed

1 file changed

+119
-8
lines changed

spec/migration_lock_timeout/migration_spec.rb

Lines changed: 119 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,25 @@ def change
2424

2525
it 'runs migrate up with timeout' do
2626
migration = AddFoo.new
27+
expect(ActiveRecord::Base.connection).to receive(:execute).
28+
with("CREATE TABLE \"foo\" (\"id\" serial primary key, \"created_at\" timestamp, \"updated_at\" timestamp) ")
2729
expect(ActiveRecord::Base.connection).to receive(:execute).
2830
with("SET LOCAL lock_timeout = '5s'")
2931
migration.migrate(:up)
3032
end
3133

3234
it 'does not use timeout for down migration' do
3335
migration = AddFoo.new
34-
expect(ActiveRecord::Base.connection).not_to receive(:execute)
36+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
37+
with("SET LOCAL lock_timeout = '5s'")
3538
migration.migrate(:down)
3639
end
3740

3841
it 'allows migration to run if no default timeout set' do
3942
MigrationLockTimeout.config = nil
4043
migration = AddFoo.new
41-
expect(ActiveRecord::Base.connection).not_to receive(:execute)
44+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
45+
with("SET LOCAL lock_timeout = '5s'")
4246
migration.migrate(:up)
4347
end
4448
end
@@ -60,13 +64,111 @@ def down
6064
it 'runs migrate up with timeout' do
6165
migration = AddBar.new
6266
expect(ActiveRecord::Base.connection).to receive(:execute).
67+
with("CREATE TABLE \"bar\" (\"id\" serial primary key, \"created_at\" timestamp, \"updated_at\" timestamp) ")
68+
expect(ActiveRecord::Base.connection).to receive(:execute).
69+
with("SET LOCAL lock_timeout = '5s'")
70+
migration.migrate(:up)
71+
end
72+
73+
it 'does not use timeout for down migration' do
74+
migration = AddBar.new
75+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
76+
with("SET LOCAL lock_timeout = '5s'")
77+
migration.migrate(:down)
78+
end
79+
end
80+
81+
describe 'disable lock timeout' do
82+
83+
class AddBaz < ActiveRecord::Migration
84+
disable_lock_timeout!
85+
def up
86+
create_table :baz do |t|
87+
t.timestamps
88+
end
89+
end
90+
91+
def down
92+
drop_table :baz
93+
end
94+
end
95+
96+
it 'runs migrate up without timeout' do
97+
migration = AddBaz.new
98+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
99+
with("SET LOCAL lock_timeout = '5s'")
100+
migration.migrate(:up)
101+
end
102+
103+
it 'does not use timeout for down migration' do
104+
migration = AddBaz.new
105+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
106+
with("SET LOCAL lock_timeout = '5s'")
107+
migration.migrate(:down)
108+
end
109+
end
110+
111+
112+
describe 'change lock timeout' do
113+
114+
class AddBurn < ActiveRecord::Migration
115+
set_lock_timeout 10
116+
def up
117+
create_table :burn do |t|
118+
t.timestamps
119+
end
120+
end
121+
122+
def down
123+
drop_table :burn
124+
end
125+
end
126+
127+
it 'runs migrate up without timeout' do
128+
migration = AddBurn.new
129+
expect(ActiveRecord::Base.connection).to receive(:execute).
130+
with("CREATE TABLE \"burn\" (\"id\" serial primary key, \"created_at\" timestamp, \"updated_at\" timestamp) ")
131+
expect(ActiveRecord::Base.connection).to receive(:execute).
132+
with("SET LOCAL lock_timeout = '10s'")
133+
migration.migrate(:up)
134+
end
135+
136+
it 'does not use timeout for down migration' do
137+
migration = AddBurn.new
138+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
139+
with("SET LOCAL lock_timeout = '10s'")
140+
migration.migrate(:down)
141+
end
142+
end
143+
144+
describe 'with disable_ddl_transaction' do
145+
146+
class AddMonkey < ActiveRecord::Migration
147+
disable_ddl_transaction!
148+
def up
149+
create_table :monkey do |t|
150+
t.timestamps
151+
end
152+
end
153+
154+
def down
155+
drop_table :monkey
156+
end
157+
end
158+
159+
it 'runs migrate up without timeout' do
160+
migration = AddMonkey.new
161+
expect(ActiveRecord::Base.connection).to receive(:execute).
162+
with("CREATE TABLE \"monkey\" (\"id\" serial primary key, \"created_at\" timestamp, \"updated_at\" timestamp) ")
163+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
63164
with("SET LOCAL lock_timeout = '5s'")
64165
migration.migrate(:up)
65166
end
66167

67168
it 'does not use timeout for down migration' do
68169
migration = AddBar.new
69-
expect(ActiveRecord::Base.connection).not_to receive(:execute)
170+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
171+
with("SET LOCAL lock_timeout = '5s'")
70172
migration.migrate(:down)
71173
end
72174
end
@@ -88,13 +190,15 @@ def down
88190

89191
it 'runs migrate up without timeout' do
90192
migration = AddBaz.new
91-
expect(ActiveRecord::Base.connection).not_to receive(:execute)
193+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
194+
with("SET LOCAL lock_timeout = '5s'")
92195
migration.migrate(:up)
93196
end
94197

95198
it 'does not use timeout for down migration' do
96199
migration = AddBaz.new
97-
expect(ActiveRecord::Base.connection).not_to receive(:execute)
200+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
201+
with("SET LOCAL lock_timeout = '5s'")
98202
migration.migrate(:down)
99203
end
100204
end
@@ -117,14 +221,17 @@ def down
117221

118222
it 'runs migrate up without timeout' do
119223
migration = AddBurn.new
224+
expect(ActiveRecord::Base.connection).to receive(:execute).
225+
with("CREATE TABLE \"burn\" (\"id\" serial primary key, \"created_at\" timestamp, \"updated_at\" timestamp) ")
120226
expect(ActiveRecord::Base.connection).to receive(:execute).
121227
with("SET LOCAL lock_timeout = '10s'")
122228
migration.migrate(:up)
123229
end
124230

125231
it 'does not use timeout for down migration' do
126232
migration = AddBurn.new
127-
expect(ActiveRecord::Base.connection).not_to receive(:execute)
233+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
234+
with("SET LOCAL lock_timeout = '10s'")
128235
migration.migrate(:down)
129236
end
130237
end
@@ -146,13 +253,17 @@ def down
146253

147254
it 'runs migrate up without timeout' do
148255
migration = AddMonkey.new
149-
expect(ActiveRecord::Base.connection).not_to receive(:execute)
256+
expect(ActiveRecord::Base.connection).to receive(:execute).
257+
with("CREATE TABLE \"monkey\" (\"id\" serial primary key, \"created_at\" timestamp, \"updated_at\" timestamp) ")
258+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
259+
with("SET LOCAL lock_timeout = '10s'")
150260
migration.migrate(:up)
151261
end
152262

153263
it 'does not use timeout for down migration' do
154264
migration = AddMonkey.new
155-
expect(ActiveRecord::Base.connection).not_to receive(:execute)
265+
expect(ActiveRecord::Base.connection).not_to receive(:execute).
266+
with("SET LOCAL lock_timeout = '10s'")
156267
migration.migrate(:down)
157268
end
158269
end

0 commit comments

Comments
 (0)