@@ -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