Skip to content

Commit f3772d6

Browse files
committed
Initial test cleanup
1 parent a253d67 commit f3772d6

File tree

1 file changed

+22
-112
lines changed

1 file changed

+22
-112
lines changed

test/lib/tailwindcss/engines_test.rb

Lines changed: 22 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,208 +1,118 @@
11
require "test_helper"
22

33
class Tailwindcss::EnginesTest < ActiveSupport::TestCase
4-
def setup
5-
super
6-
# Store original Rails state
7-
@original_rails_root = Rails.root
8-
@original_application = Rails.application
9-
@test_app_root = Pathname.new(TAILWINDCSS_TEST_APP_ROOT)
10-
11-
# Set up directories
12-
@builds_dir = @test_app_root.join("app/assets/builds/tailwind")
13-
FileUtils.rm_rf(@builds_dir) if Dir.exist?(@builds_dir)
14-
15-
# Save original subclasses to restore later
16-
@original_subclasses = Rails::Engine.subclasses.dup
17-
end
18-
19-
def teardown
20-
super
21-
# Restore original state
22-
Rails.application = @original_application if @original_application
23-
24-
# If we've modified the Rails::Engine subclasses, restore them
25-
if @original_subclasses
26-
Rails::Engine.instance_variable_set(:@subclasses, @original_subclasses)
27-
end
28-
29-
# Clean up test directory
30-
FileUtils.rm_rf(@builds_dir) if Dir.exist?(@builds_dir)
31-
end
32-
334
test "bundle creates the builds directory" do
34-
# Store the original Rails application for restoration later
35-
original_app = Rails.application
36-
375
Dir.mktmpdir do |tmpdir|
386
@tmpdir = tmpdir
397
tmpdir_path = Pathname.new(tmpdir)
408
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
419

4210
Rails.stub(:root, tmpdir_path) do
43-
# Execute the bundle method
4411
Tailwindcss::Engines.bundle
45-
46-
# Assert that the directory was created
4712
assert Dir.exist?(builds_dir), "Expected directory #{builds_dir} to be created"
4813
end
4914
end
50-
51-
# Restore the original Rails application
52-
Rails.application = original_app
5315
end
54-
16+
5517
test "bundle generates CSS files for engine's tailwind assets" do
56-
# Store the original Rails application and engine subclasses
57-
original_app = Rails.application
58-
original_subclasses = Rails::Engine.subclasses.dup
59-
6018
Dir.mktmpdir do |tmpdir|
6119
@tmpdir = tmpdir
6220
tmpdir_path = Pathname.new(tmpdir)
6321
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
6422

6523
Rails.stub(:root, tmpdir_path) do
66-
# Create a mock engine with tailwind assets
6724
setup_mock_engine("mock_engine", tmpdir_path)
68-
69-
# Execute the bundle method
25+
7026
Tailwindcss::Engines.bundle
71-
72-
# Assert that the CSS file was generated
27+
7328
css_file_path = builds_dir.join("mock_engine.css")
7429
assert File.exist?(css_file_path), "Expected file #{css_file_path} to be created"
75-
76-
# Check content of the generated file
30+
7731
content = File.read(css_file_path)
7832
assert_match(/DO NOT MODIFY THIS FILE/, content)
79-
assert_match(/@import ".*\/app\/assets\/tailwind\/mock_engine\/application.css"/, content)
33+
assert_match(/@import ".*\/app\/assets\/tailwind\/mock_engine\/engine.css"/, content)
8034
end
8135
end
82-
83-
# Restore the original Rails application and engine subclasses
84-
Rails.application = original_app
85-
Rails::Engine.instance_variable_set(:@subclasses, original_subclasses)
8636
end
87-
37+
8838
test "bundle removes existing files before generating new ones" do
89-
# Store the original Rails application and engine subclasses
90-
original_app = Rails.application
91-
original_subclasses = Rails::Engine.subclasses.dup
92-
9339
Dir.mktmpdir do |tmpdir|
9440
@tmpdir = tmpdir
9541
tmpdir_path = Pathname.new(tmpdir)
9642
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
9743

9844
Rails.stub(:root, tmpdir_path) do
99-
# Create a mock engine with tailwind assets
10045
setup_mock_engine("mock_engine", tmpdir_path)
101-
102-
# Create an existing file that should be replaced
46+
10347
FileUtils.mkdir_p(builds_dir)
10448
css_file_path = builds_dir.join("mock_engine.css")
10549
File.write(css_file_path, "OLD CONTENT")
106-
107-
# Execute the bundle method
50+
10851
Tailwindcss::Engines.bundle
109-
110-
# Assert that the old content was removed
52+
11153
content = File.read(css_file_path)
11254
assert_no_match(/OLD CONTENT/, content)
11355
assert_match(/DO NOT MODIFY THIS FILE/, content)
11456
end
11557
end
116-
117-
# Restore the original Rails application and engine subclasses
118-
Rails.application = original_app
119-
Rails::Engine.instance_variable_set(:@subclasses, original_subclasses)
12058
end
121-
59+
12260
test "bundle only processes engines with tailwind assets" do
123-
# Store the original Rails application and engine subclasses
124-
original_app = Rails.application
125-
original_subclasses = Rails::Engine.subclasses.dup
126-
12761
Dir.mktmpdir do |tmpdir|
12862
@tmpdir = tmpdir
12963
tmpdir_path = Pathname.new(tmpdir)
13064
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
13165

13266
Rails.stub(:root, tmpdir_path) do
133-
# Create a mock engine with tailwind assets
13467
setup_mock_engine("engine_with_assets", tmpdir_path)
135-
136-
# Create a mock engine without tailwind assets
68+
13769
root_path = tmpdir_path
13870
mock_engine_without_assets = Class.new(Rails::Engine) do
13971
define_singleton_method(:engine_name) { "engine_without_assets" }
14072
define_singleton_method(:root) { root_path }
14173
end
14274
Rails::Engine.instance_variable_set(:@subclasses, Rails::Engine.subclasses + [mock_engine_without_assets])
143-
144-
# Execute the bundle method
75+
14576
Tailwindcss::Engines.bundle
146-
147-
# Assert that only the engine with assets has a CSS file generated
77+
14878
assert File.exist?(builds_dir.join("engine_with_assets.css")), "Expected CSS file for engine with assets"
14979
refute File.exist?(builds_dir.join("engine_without_assets.css")), "Expected no CSS file for engine without assets"
15080
end
15181
end
152-
153-
# Restore the original Rails application and engine subclasses
154-
Rails.application = original_app
155-
Rails::Engine.instance_variable_set(:@subclasses, original_subclasses)
15682
end
157-
83+
15884
test "bundle handles multiple engines" do
159-
# Store the original Rails application and engine subclasses
160-
original_app = Rails.application
161-
original_subclasses = Rails::Engine.subclasses.dup
162-
16385
Dir.mktmpdir do |tmpdir|
16486
@tmpdir = tmpdir
16587
tmpdir_path = Pathname.new(tmpdir)
16688
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
16789

16890
Rails.stub(:root, tmpdir_path) do
169-
# Create multiple mock engines with tailwind assets
17091
setup_mock_engine("engine1", tmpdir_path)
17192
setup_mock_engine("engine2", tmpdir_path)
172-
173-
# Execute the bundle method
93+
17494
Tailwindcss::Engines.bundle
175-
176-
# Assert that CSS files were generated for both engines
95+
17796
assert File.exist?(builds_dir.join("engine1.css")), "Expected CSS file for engine1"
17897
assert File.exist?(builds_dir.join("engine2.css")), "Expected CSS file for engine2"
17998
end
18099
end
181-
182-
# Restore the original Rails application and engine subclasses
183-
Rails.application = original_app
184-
Rails::Engine.instance_variable_set(:@subclasses, original_subclasses)
185100
end
186-
101+
187102
private
188-
103+
189104
def setup_mock_engine(name, root_path)
190-
# Create a mock Rails engine with captured local variables
191105
engine_name = name
192106
path = root_path
193107
mock_engine = Class.new(Rails::Engine) do
194108
define_singleton_method(:engine_name) { engine_name }
195109
define_singleton_method(:root) { path }
196110
end
197-
198-
# Create the required tailwind asset file for the mock engine
111+
199112
tailwind_dir = root_path.join("app/assets/tailwind/#{name}")
200113
FileUtils.mkdir_p(tailwind_dir)
201-
File.write(tailwind_dir.join("application.css"), "/* Test CSS */")
202-
203-
# Add the mock engine to Rails::Engine.subclasses
204-
Rails::Engine.instance_variable_set(:@subclasses, Rails::Engine.subclasses + [mock_engine])
205-
114+
File.write(tailwind_dir.join("engine.css"), "/* Test CSS */")
115+
206116
mock_engine
207117
end
208-
end
118+
end

0 commit comments

Comments
 (0)