Skip to content

Commit df6dc1b

Browse files
committed
Added missing test case for migrations when using sql structure
1 parent 4ae90a7 commit df6dc1b

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

railties/test/application/test_test.rb

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def test_failure
6767
assert_match %r{/app/test/unit/failing_test\.rb}, output
6868
end
6969

70-
test "migrations" do
70+
test "ruby schema migrations" do
7171
output = script('generate model user name:string')
7272
version = output.match(/(\d+)_create_users\.rb/)[1]
7373

@@ -104,6 +104,45 @@ class UserTest < ActiveSupport::TestCase
104104
assert !result.include?("create_table(:users)")
105105
end
106106

107+
test "sql structure migrations" do
108+
output = script('generate model user name:string')
109+
version = output.match(/(\d+)_create_users\.rb/)[1]
110+
111+
app_file 'test/models/user_test.rb', <<-RUBY
112+
require 'test_helper'
113+
114+
class UserTest < ActiveSupport::TestCase
115+
test "user" do
116+
User.create! name: "Jon"
117+
end
118+
end
119+
RUBY
120+
121+
app_file 'db/structure.sql', ''
122+
app_file 'config/initializers/enable_sql_schema_format.rb', <<-RUBY
123+
Rails.application.config.active_record.schema_format = :sql
124+
RUBY
125+
126+
assert_unsuccessful_run "models/user_test.rb", "Migrations are pending"
127+
128+
app_file 'db/structure.sql', <<-RUBY
129+
CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL);
130+
CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version");
131+
CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255));
132+
INSERT INTO schema_migrations (version) VALUES ('#{version}');
133+
RUBY
134+
135+
app_file 'config/initializers/disable_maintain_test_schema.rb', <<-RUBY
136+
Rails.application.config.active_record.maintain_test_schema = false
137+
RUBY
138+
139+
assert_unsuccessful_run "models/user_test.rb", "Could not find table 'users'"
140+
141+
File.delete "#{app_path}/config/initializers/disable_maintain_test_schema.rb"
142+
143+
assert_successful_test_run('models/user_test.rb')
144+
end
145+
107146
private
108147
def assert_unsuccessful_run(name, message)
109148
result = run_test_file(name)

0 commit comments

Comments
 (0)