vite_rails 1.0.5 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/CONTRIBUTING.md +0 -1
- data/README.md +31 -69
- data/lib/install/javascript/entrypoints/application.js +8 -4
- data/lib/install/template.rb +1 -1
- data/lib/tasks/vite/build.rake +2 -6
- data/lib/tasks/vite/clean.rake +1 -3
- data/lib/tasks/vite/info.rake +0 -1
- data/lib/tasks/vite/verify_install.rake +3 -3
- data/lib/vite_rails.rb +14 -25
- data/lib/vite_rails/builder.rb +11 -13
- data/lib/vite_rails/commands.rb +51 -10
- data/lib/vite_rails/config.rb +65 -30
- data/lib/vite_rails/dev_server_proxy.rb +26 -18
- data/lib/vite_rails/helper.rb +15 -8
- data/lib/vite_rails/manifest.rb +6 -4
- data/lib/vite_rails/runner.rb +3 -6
- data/lib/vite_rails/version.rb +1 -1
- data/package.json +5 -1
- data/package/default.vite.json +2 -1
- data/test/builder_test.rb +27 -22
- data/test/commands_test.rb +67 -0
- data/test/config_test.rb +133 -0
- data/test/dev_server_proxy_test.rb +101 -0
- data/test/dev_server_test.rb +0 -30
- data/test/engine_rake_tasks_test.rb +55 -17
- data/test/helper_test.rb +37 -105
- data/test/manifest_test.rb +33 -29
- data/test/mode_test.rb +6 -11
- data/test/mounted_app/test/dummy/config/vite.json +5 -11
- data/test/mounted_app/test/dummy/package.json +2 -1
- data/test/mounted_app/test/dummy/yarn.lock +208 -0
- data/test/rake_tasks_test.rb +5 -19
- data/test/runner_test.rb +31 -0
- data/test/test_app/app/frontend/entrypoints/application.js +2 -0
- data/test/test_app/config/vite.json +0 -2
- data/test/test_app/config/vite_additional_paths.json +5 -0
- data/test/test_app/config/vite_public_dir.json +5 -0
- data/test/test_app/public/vite-production/manifest.json +22 -0
- data/test/test_helper.rb +48 -14
- metadata +23 -25
- data/test/command_test.rb +0 -35
- data/test/configuration_test.rb +0 -80
- data/test/dev_server_runner_test.rb +0 -83
- data/test/test_app/app/javascript/entrypoints/application.js +0 -10
- data/test/test_app/app/javascript/entrypoints/multi_entry.css +0 -4
- data/test/test_app/app/javascript/entrypoints/multi_entry.js +0 -4
- data/test/test_app/config/vite_public_root.yml +0 -20
- data/test/test_app/public/vite/manifest.json +0 -36
- data/test/vite_runner_test.rb +0 -59
- data/test/webpacker_test.rb +0 -15
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class CommandsTest < ViteRails::Test
|
6
|
+
def stub_builder(stale:, build_with_vite:)
|
7
|
+
ViteRails.builder.stub :stale?, stale do
|
8
|
+
ViteRails.builder.stub :build_with_vite, build_with_vite do
|
9
|
+
yield
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_bootstrap
|
15
|
+
assert ViteRails.bootstrap
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_build_returns_success_status_when_stale
|
19
|
+
stub_builder(stale: true, build_with_vite: true) {
|
20
|
+
assert_equal true, ViteRails.build
|
21
|
+
assert_equal true, ViteRails.build_from_rake
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_build_returns_success_status_when_fresh
|
26
|
+
stub_builder(stale: false, build_with_vite: true) {
|
27
|
+
assert_equal true, ViteRails.build
|
28
|
+
assert_equal true, ViteRails.build_from_rake
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_build_returns_failure_status_when_stale
|
33
|
+
stub_builder(stale: true, build_with_vite: false) {
|
34
|
+
assert_equal false, ViteRails.build
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_clean
|
39
|
+
with_rails_env('test') { |config|
|
40
|
+
manifest = config.build_output_dir.join('manifest.json')
|
41
|
+
|
42
|
+
# Should not clean, the manifest does not exist.
|
43
|
+
config.build_output_dir.mkdir unless config.build_output_dir.exist?
|
44
|
+
refute ViteRails.clean
|
45
|
+
|
46
|
+
# Should not clean, the file is recent.
|
47
|
+
manifest.write('{}')
|
48
|
+
assert ViteRails.clean_from_rake(OpenStruct.new)
|
49
|
+
assert manifest.exist?
|
50
|
+
|
51
|
+
# Should clean if we remove age restrictions.
|
52
|
+
assert ViteRails.clean(keep_up_to: 0, age_in_seconds: 0)
|
53
|
+
assert config.build_output_dir.exist?
|
54
|
+
refute manifest.exist?
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_clobber
|
59
|
+
with_rails_env('test') { |config|
|
60
|
+
config.build_output_dir.mkdir unless config.build_output_dir.exist?
|
61
|
+
config.build_output_dir.join('manifest.json').write('{}')
|
62
|
+
assert config.build_output_dir.exist?
|
63
|
+
ViteRails.clobber
|
64
|
+
refute config.build_output_dir.exist?
|
65
|
+
}
|
66
|
+
end
|
67
|
+
end
|
data/test/config_test.rb
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class ConfigTest < ViteRails::Test
|
6
|
+
def expand_path(path)
|
7
|
+
File.expand_path(Pathname.new(__dir__).join(path).to_s)
|
8
|
+
end
|
9
|
+
|
10
|
+
def assert_path(expected, actual)
|
11
|
+
assert_equal expand_path(expected), actual.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
def assert_pathname(expected, actual)
|
15
|
+
assert_equal Pathname.new(expand_path("test_app/#{ expected }")), actual
|
16
|
+
end
|
17
|
+
|
18
|
+
def resolve_config(mode: 'production', root: test_app_path, **attrs)
|
19
|
+
ViteRails::Config.resolve_config(mode: mode, root: root, **attrs)
|
20
|
+
end
|
21
|
+
|
22
|
+
def setup
|
23
|
+
@config = resolve_config
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_source_code_dir
|
27
|
+
assert_equal 'app/frontend', @config.source_code_dir
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_entrypoints_dir
|
31
|
+
assert_path 'test_app/app/frontend/entrypoints', @config.resolved_entrypoints_dir
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_public_dir
|
35
|
+
assert_equal 'public', @config.public_dir
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_build_output_dir
|
39
|
+
assert_path 'test_app/public/vite-production', @config.build_output_dir
|
40
|
+
|
41
|
+
@config = resolve_config(config_path: 'config/vite_public_dir.json')
|
42
|
+
assert_path 'public/vite', @config.build_output_dir
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_manifest_path
|
46
|
+
assert_path 'test_app/public/vite-production/manifest.json', @config.manifest_path
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_build_cache_dir
|
50
|
+
assert_path 'test_app/tmp/cache/vite', @config.build_cache_dir
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_watch_additional_paths
|
54
|
+
assert_equal [], @config.watch_additional_paths
|
55
|
+
@config = resolve_config(config_path: 'config/vite_additional_paths.json')
|
56
|
+
assert_equal ['config/*'], @config.watch_additional_paths
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_auto_build
|
60
|
+
refute @config.auto_build
|
61
|
+
|
62
|
+
with_rails_env('development') do |config|
|
63
|
+
assert config.auto_build
|
64
|
+
end
|
65
|
+
|
66
|
+
with_rails_env('test') do |config|
|
67
|
+
assert config.auto_build
|
68
|
+
end
|
69
|
+
|
70
|
+
with_rails_env('staging') do |config|
|
71
|
+
refute config.auto_build
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_protocol
|
76
|
+
assert_equal 'http', @config.protocol
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_host_with_port
|
80
|
+
assert_equal 3036, @config.port
|
81
|
+
|
82
|
+
with_rails_env('development') do |config|
|
83
|
+
assert_equal 3535, config.port
|
84
|
+
assert_equal 'localhost:3535', config.host_with_port
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_to_env
|
89
|
+
env = @config.to_env
|
90
|
+
assert_nil env['VITE_RUBY_ASSET_HOST']
|
91
|
+
|
92
|
+
Rails.application.config.action_controller.asset_host = 'assets-cdn.com'
|
93
|
+
env = refresh_config.to_env
|
94
|
+
assert_equal env['VITE_RUBY_ASSET_HOST'], 'assets-cdn.com'
|
95
|
+
ensure
|
96
|
+
Rails.application.config.action_controller.asset_host = nil
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_environment_vars
|
100
|
+
ViteRails.env = {
|
101
|
+
'VITE_RUBY_AUTO_BUILD' => 'true',
|
102
|
+
'VITE_RUBY_HOST' => 'example.com',
|
103
|
+
'VITE_RUBY_PORT' => '1920',
|
104
|
+
'VITE_RUBY_HTTPS' => 'true',
|
105
|
+
'VITE_RUBY_CONFIG_PATH' => 'config/vite_additional_paths.json',
|
106
|
+
'VITE_RUBY_BUILD_CACHE_DIR' => 'tmp/vitebuild',
|
107
|
+
'VITE_RUBY_PUBLIC_DIR' => 'pb',
|
108
|
+
'VITE_RUBY_PUBLIC_OUTPUT_DIR' => 'ft',
|
109
|
+
'VITE_RUBY_ASSETS_DIR' => 'as',
|
110
|
+
'VITE_RUBY_SOURCE_CODE_DIR' => 'app',
|
111
|
+
'VITE_RUBY_ENTRYPOINTS_DIR' => 'frontend/entrypoints',
|
112
|
+
'VITE_RUBY_HIDE_BUILD_CONSOLE_OUTPUT' => 'true',
|
113
|
+
}
|
114
|
+
@config = resolve_config
|
115
|
+
assert_equal true, @config.auto_build
|
116
|
+
assert_equal 'example.com', @config.host
|
117
|
+
assert_equal 1920, @config.port
|
118
|
+
assert_equal true, @config.https
|
119
|
+
assert_equal 'https', @config.protocol
|
120
|
+
assert_equal 'config/vite_additional_paths.json', @config.config_path
|
121
|
+
assert_pathname 'tmp/vitebuild', @config.build_cache_dir
|
122
|
+
assert_equal 'pb', @config.public_dir
|
123
|
+
assert_equal Pathname.new('ft'), @config.public_output_dir
|
124
|
+
assert_pathname 'pb/ft', @config.build_output_dir
|
125
|
+
assert_equal 'as', @config.assets_dir
|
126
|
+
assert_equal 'app', @config.source_code_dir
|
127
|
+
assert_equal 'frontend/entrypoints', @config.entrypoints_dir
|
128
|
+
assert_pathname 'app/frontend/entrypoints', @config.resolved_entrypoints_dir
|
129
|
+
assert_equal true, @config.hide_build_console_output
|
130
|
+
ensure
|
131
|
+
ViteRails.env = {}
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class DevServerProxyTest < ViteRails::Test
|
6
|
+
include Rack::Test::Methods
|
7
|
+
|
8
|
+
def app
|
9
|
+
# Capture all changes to the env made by the proxy.
|
10
|
+
capture_app = Rack::Builder.new.run(->(env) {
|
11
|
+
[200, { 'Content-Type' => 'application/json' }, env.to_json]
|
12
|
+
})
|
13
|
+
# Avoid actually using the proxy.
|
14
|
+
Rack::Proxy.define_method(:perform_request) { |env| capture_app.call(env) }
|
15
|
+
|
16
|
+
ViteRails::DevServerProxy.new(capture_app)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_non_asset
|
20
|
+
get_with_dev_server_running '/'
|
21
|
+
assert_not_forwarded
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_non_vite_asset
|
25
|
+
get_with_dev_server_running '/example_import.js'
|
26
|
+
assert_not_forwarded
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_vite_asset
|
30
|
+
get_with_dev_server_running '/vite-production/application.js'
|
31
|
+
assert_forwarded to: '/application.js'
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_vite_client
|
35
|
+
get_with_dev_server_running '/@vite/client'
|
36
|
+
assert_forwarded to: '/@vite/client'
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_vite_import
|
40
|
+
get_with_dev_server_running '/@fs//package/example/app/frontend/App.vue?import&t=1611322300214&vue&type=style&index=0&lang.css'
|
41
|
+
assert_forwarded to: '/@fs//package/example/app/frontend/App.vue?import&t=1611322300214&vue&type=style&index=0&lang.css'
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_hmr_for_stylesheet
|
45
|
+
get_with_dev_server_running '/colored.css?t=1611322562923'
|
46
|
+
assert_forwarded to: '/colored.css?t=1611322562923'
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_hmr_for_imported_entrypoint
|
50
|
+
get_with_dev_server_running '/colored.css?import&t=1611322562923'
|
51
|
+
assert_forwarded to: '/colored.css?import&t=1611322562923'
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_entrypoint_imported_from_entrypoint
|
55
|
+
header 'Referer', 'http://localhost:3000/vite-production/application.js'
|
56
|
+
get_with_dev_server_running '/example_import.js'
|
57
|
+
assert_forwarded to: '/example_import.js'
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_without_dev_server_running
|
61
|
+
get '/vite-production/application.js'
|
62
|
+
assert_not_forwarded
|
63
|
+
|
64
|
+
get '/colored.css?import&t=1611322562923'
|
65
|
+
assert_not_forwarded
|
66
|
+
|
67
|
+
header 'Referer', 'http://localhost:3000/vite-production/application.js'
|
68
|
+
get '/example_import.js'
|
69
|
+
assert_not_forwarded
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def get_with_dev_server_running(*args)
|
75
|
+
with_dev_server_running {
|
76
|
+
get(*args)
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
def assert_not_forwarded
|
81
|
+
assert last_response.ok?
|
82
|
+
env = JSON.parse(last_response.body)
|
83
|
+
assert_nil env['HTTP_X_FORWARDED_HOST']
|
84
|
+
assert_nil env['HTTP_X_FORWARDED_PORT']
|
85
|
+
end
|
86
|
+
|
87
|
+
def assert_forwarded(to: nil)
|
88
|
+
assert last_response.ok?
|
89
|
+
env = JSON.parse(last_response.body)
|
90
|
+
|
91
|
+
assert_equal ViteRails.config.host, env['HTTP_X_FORWARDED_HOST']
|
92
|
+
assert_equal ViteRails.config.port, Integer(env['HTTP_X_FORWARDED_PORT'])
|
93
|
+
|
94
|
+
return unless to
|
95
|
+
|
96
|
+
path, query = to.split('?')
|
97
|
+
assert_equal path, env['PATH_INFO']
|
98
|
+
assert_equal query, env['QUERY_STRING']
|
99
|
+
assert_equal to, env['REQUEST_URI']
|
100
|
+
end
|
101
|
+
end
|
data/test/dev_server_test.rb
CHANGED
@@ -6,34 +6,4 @@ class DevServerTest < ViteRails::Test
|
|
6
6
|
def test_running?
|
7
7
|
refute ViteRails.dev_server.running?
|
8
8
|
end
|
9
|
-
|
10
|
-
def test_host
|
11
|
-
with_rails_env('development') do
|
12
|
-
assert_equal ViteRails.config.host, 'localhost'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_port
|
17
|
-
with_rails_env('development') do
|
18
|
-
assert_equal ViteRails.config.port, 3035
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_https?
|
23
|
-
with_rails_env('development') do
|
24
|
-
assert_equal ViteRails.config.https, false
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_protocol
|
29
|
-
with_rails_env('development') do
|
30
|
-
assert_equal ViteRails.config.protocol, 'http'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_host_with_port
|
35
|
-
with_rails_env('development') do
|
36
|
-
assert_equal ViteRails.config.host_with_port, 'localhost:3035'
|
37
|
-
end
|
38
|
-
end
|
39
9
|
end
|
@@ -4,39 +4,77 @@ require 'test_helper'
|
|
4
4
|
|
5
5
|
class EngineRakeTasksTest < Minitest::Test
|
6
6
|
def setup
|
7
|
-
|
7
|
+
remove_vite_files
|
8
8
|
end
|
9
9
|
|
10
10
|
def teardown
|
11
|
-
|
11
|
+
remove_vite_files
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
output =
|
14
|
+
def test_tasks_mounted
|
15
|
+
output = within_mounted_app { `bundle exec rake -T` }
|
16
16
|
assert_includes output, 'app:vite'
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
19
|
+
def test_rake_tasks
|
20
|
+
within_mounted_app { `bundle exec rake app:vite:binstubs` }
|
21
|
+
assert vite_binstub_path.exist?
|
22
|
+
|
23
|
+
within_mounted_app { `bundle exec rake app:vite:install` }
|
24
|
+
assert vite_config_ts_path.exist?
|
25
|
+
assert app_frontend_dir.exist?
|
26
|
+
|
27
|
+
within_mounted_app { `bundle exec rake app:vite:build` }
|
28
|
+
assert app_public_dir.exist?
|
29
|
+
assert app_public_dir.join('manifest.json').exist?
|
30
|
+
assert app_public_dir.join('assets').exist?
|
31
|
+
|
32
|
+
within_mounted_app { `bundle exec rake app:vite:clean` }
|
33
|
+
assert app_public_dir.join('manifest.json').exist? # Still fresh
|
34
|
+
|
35
|
+
within_mounted_app { `bundle exec rake app:vite:clean[0,0]` }
|
36
|
+
refute app_public_dir.join('manifest.json').exist?
|
37
|
+
|
38
|
+
within_mounted_app { `bundle exec rake app:vite:clobber` }
|
39
|
+
refute app_public_dir.exist?
|
40
|
+
rescue Minitest::Assertion => error
|
41
|
+
raise error unless Rails.gem_version >= Gem::Version.new('6.1.0')
|
22
42
|
end
|
23
43
|
|
24
44
|
private
|
25
45
|
|
46
|
+
def within_mounted_app
|
47
|
+
Dir.chdir(mounted_app_path) { yield }
|
48
|
+
end
|
49
|
+
|
26
50
|
def mounted_app_path
|
27
|
-
File.expand_path('mounted_app'
|
51
|
+
Pathname.new(File.expand_path(__dir__)).join('mounted_app')
|
52
|
+
end
|
53
|
+
|
54
|
+
def root_dir
|
55
|
+
mounted_app_path.join('test/dummy')
|
56
|
+
end
|
57
|
+
|
58
|
+
def vite_binstub_path
|
59
|
+
root_dir.join('bin/vite')
|
60
|
+
end
|
61
|
+
|
62
|
+
def vite_config_ts_path
|
63
|
+
root_dir.join('vite.config.ts')
|
64
|
+
end
|
65
|
+
|
66
|
+
def app_frontend_dir
|
67
|
+
root_dir.join('app/frontend')
|
28
68
|
end
|
29
69
|
|
30
|
-
def
|
31
|
-
|
32
|
-
"#{ mounted_app_path }/test/dummy/bin/vite",
|
33
|
-
"#{ mounted_app_path }/test/dummy/bin/vite-dev-server",
|
34
|
-
]
|
70
|
+
def app_public_dir
|
71
|
+
root_dir.join('public/vite-dev')
|
35
72
|
end
|
36
73
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
|
74
|
+
def remove_vite_files
|
75
|
+
vite_binstub_path.delete if vite_binstub_path.exist?
|
76
|
+
vite_config_ts_path.delete if vite_config_ts_path.exist?
|
77
|
+
app_frontend_dir.rmtree if app_frontend_dir.exist?
|
78
|
+
app_public_dir.rmtree if app_public_dir.exist?
|
41
79
|
end
|
42
80
|
end
|
data/test/helper_test.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
5
|
class HelperTest < ActionView::TestCase
|
6
|
+
include ViteRailsTestHelpers
|
7
|
+
|
6
8
|
tests ViteRails::Helper
|
7
9
|
|
8
10
|
attr_reader :request
|
@@ -17,122 +19,52 @@ class HelperTest < ActionView::TestCase
|
|
17
19
|
end.new
|
18
20
|
end
|
19
21
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
def test_asset_pack_url
|
26
|
-
assert_equal 'https://example.com/packs/bootstrap-300631c4f0e0f9c865bc.js', asset_pack_url('bootstrap.js')
|
27
|
-
assert_equal 'https://example.com/packs/bootstrap-c38deda30895059837cf.css', asset_pack_url('bootstrap.css')
|
22
|
+
def test_vite_client_tag
|
23
|
+
assert_nil vite_client_tag
|
24
|
+
with_dev_server_running {
|
25
|
+
assert_equal '<script src="/@vite/client" type="module"></script>', vite_client_tag
|
26
|
+
}
|
28
27
|
end
|
29
28
|
|
30
|
-
def
|
31
|
-
assert_equal '/
|
32
|
-
assert_equal '/
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
def test_vite_asset_path
|
30
|
+
assert_equal '/vite-production/assets/colored.1173bfe0.js', vite_asset_path('colored.js')
|
31
|
+
assert_equal '/vite-production/assets/colored.84277fd6.css', vite_asset_path('colored.css')
|
32
|
+
with_dev_server_running {
|
33
|
+
assert_equal '/vite-production/colored.js', vite_asset_path('colored.js')
|
34
|
+
assert_equal '/vite-production/colored.css', vite_asset_path('colored.css')
|
35
|
+
}
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
assert_equal
|
40
|
-
|
41
|
-
assert_equal 'https://example.com/packs/media/images/image-c38deda30895059837cf.jpg', image_pack_url('media/images/image.jpg')
|
42
|
-
assert_equal 'https://example.com/packs/media/images/nested/image-c38deda30895059837cf.jpg', image_pack_url('nested/image.jpg')
|
43
|
-
assert_equal 'https://example.com/packs/media/images/nested/image-c38deda30895059837cf.jpg', image_pack_url('media/images/nested/image.jpg')
|
44
|
-
end
|
38
|
+
def test_vite_stylesheet_tag
|
39
|
+
assert_equal %(<link rel="stylesheet" media="screen" href="/vite-production/assets/colored.84277fd6.css" />),
|
40
|
+
vite_stylesheet_tag('colored')
|
45
41
|
|
46
|
-
|
47
|
-
assert_equal \
|
48
|
-
'<img alt="Edit Entry" src="/packs/application-k344a6d59eef8632c9d1.png" width="16" height="10" />',
|
49
|
-
image_pack_tag('application.png', size: '16x10', alt: 'Edit Entry')
|
50
|
-
assert_equal \
|
51
|
-
'<img alt="Edit Entry" src="/packs/media/images/image-c38deda30895059837cf.jpg" width="16" height="10" />',
|
52
|
-
image_pack_tag('image.jpg', size: '16x10', alt: 'Edit Entry')
|
53
|
-
assert_equal \
|
54
|
-
'<img alt="Edit Entry" src="/packs/media/images/image-c38deda30895059837cf.jpg" width="16" height="10" />',
|
55
|
-
image_pack_tag('media/images/image.jpg', size: '16x10', alt: 'Edit Entry')
|
56
|
-
assert_equal \
|
57
|
-
'<img alt="Edit Entry" src="/packs/media/images/nested/image-c38deda30895059837cf.jpg" width="16" height="10" />',
|
58
|
-
image_pack_tag('nested/image.jpg', size: '16x10', alt: 'Edit Entry')
|
59
|
-
assert_equal \
|
60
|
-
'<img alt="Edit Entry" src="/packs/media/images/nested/image-c38deda30895059837cf.jpg" width="16" height="10" />',
|
61
|
-
image_pack_tag('media/images/nested/image.jpg', size: '16x10', alt: 'Edit Entry')
|
62
|
-
assert_equal \
|
63
|
-
'<img srcset="/packs/media/images/image-2x-7cca48e6cae66ec07b8e.jpg 2x" src="/packs/media/images/image-c38deda30895059837cf.jpg" />',
|
64
|
-
image_pack_tag('media/images/image.jpg', srcset: { 'media/images/image-2x.jpg' => '2x' })
|
65
|
-
end
|
42
|
+
assert_equal vite_stylesheet_tag('colored'), vite_stylesheet_tag('colored.css')
|
66
43
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
favicon_pack_tag('application.png', rel: 'apple-touch-icon', type: 'image/png')
|
71
|
-
assert_equal \
|
72
|
-
'<link rel="apple-touch-icon" type="image/png" href="/packs/media/images/mb-icon-c38deda30895059837cf.png" />',
|
73
|
-
favicon_pack_tag('mb-icon.png', rel: 'apple-touch-icon', type: 'image/png')
|
74
|
-
assert_equal \
|
75
|
-
'<link rel="apple-touch-icon" type="image/png" href="/packs/media/images/mb-icon-c38deda30895059837cf.png" />',
|
76
|
-
favicon_pack_tag('media/images/mb-icon.png', rel: 'apple-touch-icon', type: 'image/png')
|
77
|
-
assert_equal \
|
78
|
-
'<link rel="apple-touch-icon" type="image/png" href="/packs/media/images/nested/mb-icon-c38deda30895059837cf.png" />',
|
79
|
-
favicon_pack_tag('nested/mb-icon.png', rel: 'apple-touch-icon', type: 'image/png')
|
80
|
-
assert_equal \
|
81
|
-
'<link rel="apple-touch-icon" type="image/png" href="/packs/media/images/nested/mb-icon-c38deda30895059837cf.png" />',
|
82
|
-
favicon_pack_tag('media/images/nested/mb-icon.png', rel: 'apple-touch-icon', type: 'image/png')
|
83
|
-
end
|
44
|
+
with_dev_server_running {
|
45
|
+
assert_equal %(<link rel="stylesheet" media="screen" href="/vite-production/colored.css" />),
|
46
|
+
vite_stylesheet_tag('colored')
|
84
47
|
|
85
|
-
|
86
|
-
|
87
|
-
%(<script src="/packs/bootstrap-300631c4f0e0f9c865bc.js"></script>),
|
88
|
-
javascript_pack_tag('bootstrap.js')
|
48
|
+
assert_equal vite_stylesheet_tag('colored'), vite_stylesheet_tag('colored.css')
|
49
|
+
}
|
89
50
|
end
|
90
51
|
|
91
|
-
def
|
92
|
-
assert_equal
|
93
|
-
%(<script src="/
|
94
|
-
|
95
|
-
|
52
|
+
def test_vite_javascript_tag
|
53
|
+
assert_equal [
|
54
|
+
%(<script src="/vite-production/assets/application.a0ba047e.js" crossorigin="anonymous" type="module"></script>),
|
55
|
+
%(<link rel="preload" href="/vite-production/assets/example_import.8e1fddc0.js" as="script" type="text/javascript" crossorigin="anonymous">),
|
56
|
+
%(<link rel="stylesheet" media="screen" href="/vite-production/assets/application.cccfef34.css" />),
|
57
|
+
].join, vite_javascript_tag('application')
|
96
58
|
|
97
|
-
|
98
|
-
assert_equal
|
99
|
-
%(<script src="/packs/bootstrap-300631c4f0e0f9c865bc.js" defer="defer"></script>\n) +
|
100
|
-
%(<script src="/packs/application-k344a6d59eef8632c9d1.js" defer="defer"></script>),
|
101
|
-
javascript_pack_tag('bootstrap.js', 'application.js', defer: true)
|
102
|
-
end
|
59
|
+
assert_equal vite_javascript_tag('application'), vite_javascript_tag('application.js')
|
60
|
+
assert_equal vite_javascript_tag('application'), vite_typescript_tag('application')
|
103
61
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
%(<script src="/packs/vendors~application-e55f2aae30c07fb6d82a.chunk.js"></script>\n) +
|
108
|
-
%(<script src="/packs/application-k344a6d59eef8632c9d1.js"></script>),
|
109
|
-
javascript_packs_with_chunks_tag('application')
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_stylesheet_pack_tag_split_chunks
|
113
|
-
assert_equal \
|
114
|
-
%(<link rel="stylesheet" media="screen" href="/packs/1-c20632e7baf2c81200d3.chunk.css" />\n) +
|
115
|
-
%(<link rel="stylesheet" media="screen" href="/packs/application-k344a6d59eef8632c9d1.chunk.css" />\n) +
|
116
|
-
%(<link rel="stylesheet" media="screen" href="/packs/hello_stimulus-k344a6d59eef8632c9d1.chunk.css" />),
|
117
|
-
stylesheet_packs_with_chunks_tag('application', 'hello_stimulus')
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_stylesheet_pack_tag
|
121
|
-
assert_equal \
|
122
|
-
%(<link rel="stylesheet" media="screen" href="/packs/bootstrap-c38deda30895059837cf.css" />),
|
123
|
-
stylesheet_pack_tag('bootstrap.css')
|
124
|
-
end
|
125
|
-
|
126
|
-
def test_stylesheet_pack_tag_symbol
|
127
|
-
assert_equal \
|
128
|
-
%(<link rel="stylesheet" media="screen" href="/packs/bootstrap-c38deda30895059837cf.css" />),
|
129
|
-
stylesheet_pack_tag(:bootstrap)
|
130
|
-
end
|
62
|
+
with_dev_server_running {
|
63
|
+
assert_equal %(<script src="/vite-production/application.js" crossorigin="anonymous" type="module"></script>),
|
64
|
+
vite_javascript_tag('application')
|
131
65
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
%(<link rel="stylesheet" media="all" href="/packs/application-dd6b1cd38bfa093df600.css" />),
|
136
|
-
stylesheet_pack_tag('bootstrap.css', 'application.css', media: 'all')
|
66
|
+
assert_equal %(<script src="/vite-production/application.ts" crossorigin="anonymous" type="module"></script>),
|
67
|
+
vite_typescript_tag('application')
|
68
|
+
}
|
137
69
|
end
|
138
70
|
end
|