Skip to content

Commit 4f58990

Browse files
committed
test requiring .js and .coffee from .jsx
1 parent e43aabb commit 4f58990

File tree

7 files changed

+26
-16
lines changed

7 files changed

+26
-16
lines changed

test/dummy/app/assets/javascripts/require_test/jsx_preprocessor_test.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//= require ./jsx_require_child_jsx
12
//= require ./jsx_require_child_js
3+
//= require ./jsx_require_child_coffee
24
<div className="le-javascript" />
3-
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
requireCoffee = true
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
var requirePlainJavascript = true;

test/dummy/app/assets/javascripts/require_test/jsx_require_child_js.jsx

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div className="require-jsx" />
Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
require 'test_helper'
22

33
when_sprockets_available do
4-
class JSXPreprocessorTest < ActionDispatch::IntegrationTest
5-
EXPECTED_JS = <<javascript
6-
React.createElement(\"div\", { className: \"le-javascript-child\" });
7-
React.createElement(\"div\", { className: \"le-javascript\" });
8-
javascript
9-
4+
class JSXPreprocessorTest < ActiveSupport::TestCase
5+
REQUIRED_JAVASCRIPT = "var requirePlainJavascript = true;"
6+
REQUIRED_COFFEESCRIPT = "var requireCoffee; requireCoffee = true;"
7+
REQUIRED_JSX = "React.createElement(\"div\", { className: \"require-jsx\" });"
8+
OWN_JSX = "React.createElement(\"div\", { className: \"le-javascript\" });"
109
test 'executes //= require directives' do
11-
get '/assets/require_test/jsx_preprocessor_test.js'
12-
assert_response :success
13-
assert_compiled_javascript_matches(@response.body, EXPECTED_JS)
10+
require_parent = fetch_asset_body("require_test/jsx_preprocessor_test.js")
11+
12+
assert_compiled_javascript_includes(require_parent, REQUIRED_JAVASCRIPT)
13+
assert_compiled_javascript_includes(require_parent, REQUIRED_COFFEESCRIPT)
14+
assert_compiled_javascript_includes(require_parent, REQUIRED_JSX)
15+
assert_compiled_javascript_includes(require_parent, OWN_JSX)
1416
end
1517
end
1618
end

test/test_helper.rb

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,18 @@ def when_sprockets_available
114114
end
115115
end
116116

117-
class ActionDispatch::IntegrationTest
117+
def fetch_asset_body(asset_logical_path)
118+
Rails.application.assets[asset_logical_path].to_s
119+
end
118120

119121
# Different processors may generate slightly different outputs,
120122
# as some version inserts an extra "\n" at the beginning.
121123
# Because appraisal is used, multiple versions of coffee-script are treated
122124
# together. Remove all spaces to make test pass.
123-
def assert_compiled_javascript_matches(javascript, expectation)
124-
assert_equal expectation.gsub(/\s/, ''), javascript.gsub(/\s/, '')
125-
end
126-
end
125+
def assert_compiled_javascript_matches(javascript, expectation)
126+
assert_equal expectation.gsub(/\s/, ''), javascript.gsub(/\s/, '')
127+
end
128+
129+
def assert_compiled_javascript_includes(javascript, expected_part)
130+
assert_includes javascript.gsub(/\s/, ''), expected_part.gsub(/\s/, '')
131+
end

0 commit comments

Comments
 (0)