11# frozen_string_literal: true
22
33require "test_helper"
4- require "open3"
54
6- class BuilderTest < ViteRuby :: Test
5+ describe "Builder" do
76 delegate :builder , :manifest , to : "ViteRuby.instance"
87
98 def last_build
@@ -25,105 +24,103 @@ def vite_env(*vars)
2524 ViteRuby . config . to_env ( *vars )
2625 end
2726
28- def test_custom_environment_variables
29- assert_nil vite_env [ "FOO" ]
27+ def stub_runner ( errors : "" , success : errors . empty? , &block )
28+ args = [ "stdout" , errors , MockProcessStatus . new ( success : success ) ]
29+ ViteRuby ::IO . stub ( :capture , args , &block )
30+ end
31+
32+ test "custom environment variables" do
33+ expect ( vite_env [ "FOO" ] ) == nil
3034 ViteRuby . env [ "FOO" ] = "BAR"
3135
32- assert_equal "BAR" , vite_env [ "FOO" ]
33- assert_equal "OTHER" , vite_env ( "FOO" => "OTHER" ) [ "FOO" ]
36+ expect ( vite_env [ "FOO" ] ) == "BAR"
37+ expect ( vite_env ( "FOO" => "OTHER" ) [ "FOO" ] ) == "OTHER"
3438 end
3539
36- def test_freshness
37- assert_predicate last_build , :stale?
38- refute_predicate last_build , :fresh?
40+ test "freshness" do
41+ expect ( last_build ) . to_be ( :stale? )
42+ expect ( last_build ) . not_to_be ( :fresh? )
3943 end
4044
41- def test_freshness_on_build_success
42- assert_predicate last_build , :stale?
45+ test "freshness on build success" do
46+ expect ( last_build ) . to_be ( :stale? )
4347 stub_runner ( success : true ) {
44- assert builder . build
45- assert last_build . success
46- assert_empty last_build . errors
47- assert_predicate last_build , :fresh?
48- assert last_build . digest
49- assert last_build . timestamp
48+ assert ( builder . build )
49+ assert ( last_build . success )
50+ expect ( last_build . errors ) . to_be ( :empty? )
51+ expect ( last_build ) . to_be ( :fresh? )
52+ assert ( last_build . digest )
53+ assert ( last_build . timestamp )
5054
5155 refresh_config ( auto_build : true )
5256
53- refute_nil manifest . send ( :lookup , "app.css" )
57+ expect ( manifest . send ( :lookup , "app.css" ) ) != nil
5458 }
5559 end
5660
57- def test_freshness_on_build_fail
58- assert_predicate last_build , :stale?
61+ test "freshness on build fail" do
62+ expect ( last_build ) . to_be ( :stale? )
5963 error_message = "SyntaxError: Hero.jsx: Unexpected token (6:6)"
6064 stub_runner ( errors : error_message ) {
61- refute builder . build
62- refute last_build . success
63- assert_equal last_build . errors , error_message
64- assert_predicate last_build , :fresh?
65- assert last_build . digest
66- assert last_build . timestamp
65+ refute ( builder . build )
66+ refute ( last_build . success )
67+ expect ( last_build . errors ) == error_message
68+ expect ( last_build ) . to_be ( :fresh? )
69+ assert ( last_build . digest )
70+ assert ( last_build . timestamp )
6771
6872 refresh_config ( auto_build : true )
6973
70- assert_nil manifest . send ( :lookup , "app.css" )
74+ expect ( manifest . send ( :lookup , "app.css" ) ) == nil
7175 }
7276 end
7377
74- def test_last_build_path
75- assert_equal builder . send ( :last_build_path , ssr : false ) . basename . to_s , "last-build-#{ ViteRuby . config . mode } .json"
76- assert_equal builder . send ( :last_build_path , ssr : true ) . basename . to_s , "last-ssr-build-#{ ViteRuby . config . mode } .json"
78+ test "last build path" do
79+ expect ( builder . send ( :last_build_path , ssr : false ) . basename . to_s ) == "last-build-#{ ViteRuby . config . mode } .json"
80+ expect ( builder . send ( :last_build_path , ssr : true ) . basename . to_s ) == "last-ssr-build-#{ ViteRuby . config . mode } .json"
7781 end
7882
79- def test_watched_files_digest
83+ test "watched files digest" do
8084 previous_digest = ViteRuby . digest
8185 refresh_config
8286
83- assert_equal previous_digest , ViteRuby . digest
87+ expect ( ViteRuby . digest ) == previous_digest
8488 end
8589
86- def test_external_env_variables
87- assert_equal "production" , vite_env [ "VITE_RUBY_MODE" ]
88- assert_equal Rails . root . to_s , vite_env [ "VITE_RUBY_ROOT" ]
90+ test "external env variables" do
91+ expect ( vite_env [ "VITE_RUBY_MODE" ] ) == "production"
92+ expect ( vite_env [ "VITE_RUBY_ROOT" ] ) == Rails . root . to_s
8993
9094 ENV [ "VITE_RUBY_MODE" ] = "foo.bar"
9195 ENV [ "VITE_RUBY_ROOT" ] = "/baz"
9296 refresh_config
9397
94- assert_equal "foo.bar" , vite_env [ "VITE_RUBY_MODE" ]
95- assert_equal "/baz" , vite_env [ "VITE_RUBY_ROOT" ]
98+ expect ( vite_env [ "VITE_RUBY_MODE" ] ) == "foo.bar"
99+ expect ( vite_env [ "VITE_RUBY_ROOT" ] ) == "/baz"
96100 ensure
97101 ENV . delete ( "VITE_RUBY_MODE" )
98102 ENV . delete ( "VITE_RUBY_ROOT" )
99103 refresh_config
100104 end
101105
102- def test_missing_executable
106+ test "missing executable" do
103107 refresh_config ( vite_bin_path : "none/vite" )
104108
105- # It fails because we stub the File.exist? check, so the binary is missing.
106- error = assert_raises ( ViteRuby :: MissingExecutableError ) {
109+ # It fails because we stub File.exist? so the binary appears missing.
110+ expect {
107111 File . stub ( :exist? , true ) { builder . build }
108- }
109-
110- assert_match "The vite binary is not available." , error . message
112+ } . to_raise ( ViteRuby :: MissingExecutableError ) do | error |
113+ expect ( error . message ) . to_include ( "The vite binary is not available." )
114+ end
111115
112116 # The provided binary does not exist, so it uses the default strategy.
113- stub_runner ( success : true ) { assert builder . build }
117+ stub_runner ( success : true ) { assert ( builder . build ) }
114118 end
115119
116- def test_build_cache
120+ test "build cache" do
117121 build = ViteRuby ::Build . from_previous ( Pathname . new ( __FILE__ ) , "digest" )
118122
119- assert_equal ( "never" , build . timestamp )
120- assert_predicate ( build , :retry_failed? )
121- end
122-
123- private
124-
125- def stub_runner ( errors : "" , success : errors . empty? , &block )
126- args = [ "stdout" , errors , MockProcessStatus . new ( success : success ) ]
127- ViteRuby ::IO . stub ( :capture , args , &block )
123+ expect ( build . timestamp ) == "never"
124+ expect ( build ) . to_be ( :retry_failed? )
128125 end
129126end
0 commit comments