Skip to content

Commit 8a332fb

Browse files
committed
Tests cleanup
1 parent f3772d6 commit 8a332fb

File tree

1 file changed

+46
-75
lines changed

1 file changed

+46
-75
lines changed

test/lib/tailwindcss/engines_test.rb

Lines changed: 46 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,89 @@
11
require "test_helper"
2+
require "minitest/mock"
23

34
class Tailwindcss::EnginesTest < ActiveSupport::TestCase
5+
def setup
6+
super
7+
@tmpdir_path = Pathname.new(Dir.mktmpdir)
8+
@builds_dir = @tmpdir_path.join("app/assets/builds/tailwind")
9+
end
10+
411
test "bundle creates the builds directory" do
5-
Dir.mktmpdir do |tmpdir|
6-
@tmpdir = tmpdir
7-
tmpdir_path = Pathname.new(tmpdir)
8-
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
9-
10-
Rails.stub(:root, tmpdir_path) do
11-
Tailwindcss::Engines.bundle
12-
assert Dir.exist?(builds_dir), "Expected directory #{builds_dir} to be created"
13-
end
12+
Rails.stub(:root, @tmpdir_path) do
13+
Tailwindcss::Engines.bundle
14+
assert Dir.exist?(@builds_dir), "Expected directory #{@builds_dir} to be created"
1415
end
1516
end
1617

1718
test "bundle generates CSS files for engine's tailwind assets" do
18-
Dir.mktmpdir do |tmpdir|
19-
@tmpdir = tmpdir
20-
tmpdir_path = Pathname.new(tmpdir)
21-
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
22-
23-
Rails.stub(:root, tmpdir_path) do
24-
setup_mock_engine("mock_engine", tmpdir_path)
19+
Rails.stub(:root, @tmpdir_path) do
20+
setup_mock_engine("mock_engine", @tmpdir_path)
2521

26-
Tailwindcss::Engines.bundle
22+
Tailwindcss::Engines.bundle
2723

28-
css_file_path = builds_dir.join("mock_engine.css")
29-
assert File.exist?(css_file_path), "Expected file #{css_file_path} to be created"
24+
css_file_path = @builds_dir.join("mock_engine.css")
25+
assert File.exist?(css_file_path), "Expected file #{css_file_path} to be created"
3026

31-
content = File.read(css_file_path)
32-
assert_match(/DO NOT MODIFY THIS FILE/, content)
33-
assert_match(/@import ".*\/app\/assets\/tailwind\/mock_engine\/engine.css"/, content)
34-
end
27+
content = File.read(css_file_path)
28+
assert_match(/DO NOT MODIFY THIS FILE/, content)
29+
assert_match(/@import ".*\/app\/assets\/tailwind\/mock_engine\/engine.css"/, content)
3530
end
3631
end
3732

3833
test "bundle removes existing files before generating new ones" do
39-
Dir.mktmpdir do |tmpdir|
40-
@tmpdir = tmpdir
41-
tmpdir_path = Pathname.new(tmpdir)
42-
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
43-
44-
Rails.stub(:root, tmpdir_path) do
45-
setup_mock_engine("mock_engine", tmpdir_path)
34+
Rails.stub(:root, @tmpdir_path) do
35+
setup_mock_engine("mock_engine", @tmpdir_path)
4636

47-
FileUtils.mkdir_p(builds_dir)
48-
css_file_path = builds_dir.join("mock_engine.css")
49-
File.write(css_file_path, "OLD CONTENT")
37+
FileUtils.mkdir_p(@builds_dir)
38+
css_file_path = @builds_dir.join("mock_engine.css")
39+
File.write(css_file_path, "OLD CONTENT")
5040

51-
Tailwindcss::Engines.bundle
41+
Tailwindcss::Engines.bundle
5242

53-
content = File.read(css_file_path)
54-
assert_no_match(/OLD CONTENT/, content)
55-
assert_match(/DO NOT MODIFY THIS FILE/, content)
56-
end
43+
content = File.read(css_file_path)
44+
assert_no_match(/OLD CONTENT/, content)
45+
assert_match(/DO NOT MODIFY THIS FILE/, content)
5746
end
5847
end
5948

6049
test "bundle only processes engines with tailwind assets" do
61-
Dir.mktmpdir do |tmpdir|
62-
@tmpdir = tmpdir
63-
tmpdir_path = Pathname.new(tmpdir)
64-
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
65-
66-
Rails.stub(:root, tmpdir_path) do
67-
setup_mock_engine("engine_with_assets", tmpdir_path)
50+
Rails.stub(:root, @tmpdir_path) do
51+
setup_mock_engine("engine_with_assets", @tmpdir_path)
6852

69-
root_path = tmpdir_path
70-
mock_engine_without_assets = Class.new(Rails::Engine) do
71-
define_singleton_method(:engine_name) { "engine_without_assets" }
72-
define_singleton_method(:root) { root_path }
73-
end
74-
Rails::Engine.instance_variable_set(:@subclasses, Rails::Engine.subclasses + [mock_engine_without_assets])
53+
Class.new(Rails::Engine) do
54+
define_singleton_method(:engine_name) { "engine_without_assets" }
55+
define_singleton_method(:root) { Pathname.new(Dir.mktmpdir) }
56+
end
7557

76-
Tailwindcss::Engines.bundle
58+
Tailwindcss::Engines.bundle
7759

78-
assert File.exist?(builds_dir.join("engine_with_assets.css")), "Expected CSS file for engine with assets"
79-
refute File.exist?(builds_dir.join("engine_without_assets.css")), "Expected no CSS file for engine without assets"
80-
end
60+
assert File.exist?(@builds_dir.join("engine_with_assets.css")), "Expected CSS file for engine with assets"
61+
refute File.exist?(@builds_dir.join("engine_without_assets.css")), "Expected no CSS file for engine without assets"
8162
end
8263
end
8364

8465
test "bundle handles multiple engines" do
85-
Dir.mktmpdir do |tmpdir|
86-
@tmpdir = tmpdir
87-
tmpdir_path = Pathname.new(tmpdir)
88-
builds_dir = tmpdir_path.join("app/assets/builds/tailwind")
66+
Rails.stub(:root, @tmpdir_path) do
67+
setup_mock_engine("engine1", @tmpdir_path)
68+
setup_mock_engine("engine2", @tmpdir_path)
8969

90-
Rails.stub(:root, tmpdir_path) do
91-
setup_mock_engine("engine1", tmpdir_path)
92-
setup_mock_engine("engine2", tmpdir_path)
70+
Tailwindcss::Engines.bundle
9371

94-
Tailwindcss::Engines.bundle
95-
96-
assert File.exist?(builds_dir.join("engine1.css")), "Expected CSS file for engine1"
97-
assert File.exist?(builds_dir.join("engine2.css")), "Expected CSS file for engine2"
98-
end
72+
assert File.exist?(@builds_dir.join("engine1.css")), "Expected CSS file for engine1"
73+
assert File.exist?(@builds_dir.join("engine2.css")), "Expected CSS file for engine2"
9974
end
10075
end
10176

10277
private
10378

10479
def setup_mock_engine(name, root_path)
105-
engine_name = name
106-
path = root_path
107-
mock_engine = Class.new(Rails::Engine) do
108-
define_singleton_method(:engine_name) { engine_name }
109-
define_singleton_method(:root) { path }
110-
end
111-
11280
tailwind_dir = root_path.join("app/assets/tailwind/#{name}")
11381
FileUtils.mkdir_p(tailwind_dir)
11482
File.write(tailwind_dir.join("engine.css"), "/* Test CSS */")
11583

116-
mock_engine
84+
Class.new(Rails::Engine) do
85+
define_singleton_method(:engine_name) { name }
86+
define_singleton_method(:root) { root_path.dup }
87+
end
11788
end
11889
end

0 commit comments

Comments
 (0)