@@ -7,7 +7,45 @@ class SprocketsRendererTest < ActiveSupport::TestCase
77
88 test '#render returns HTML' do
99 result = @renderer . render ( "Todo" , { todo : "write tests" } )
10- # skip reactid & checksum:
1110 assert_match ( /<li.*write tests<\/ li>/ , result )
11+ assert_match ( /data-react-checksum/ , result )
12+ end
13+
14+ test '#render accepts strings' do
15+ result = @renderer . render ( "Todo" , { todo : "write more tests" } . to_json )
16+ assert_match ( /<li.*write more tests<\/ li>/ , result )
17+ end
18+
19+ test '#render replays console messages' do
20+ result = @renderer . render ( "TodoListWithConsoleLog" , { todos : [ "log some messages" ] } )
21+ assert_match ( 'console.log.apply(console, ["got initial state"])' , result )
22+ assert_match ( 'console.warn.apply(console, ["mounted component"])' , result )
23+ assert_match ( 'console.error.apply(console, ["rendered!","foo"])' , result )
24+ end
25+
26+ test '#render console messages can be disabled' do
27+ no_log_renderer = React ::ServerRendering ::SprocketsRenderer . new ( { replay_console : false } )
28+ result = no_log_renderer . render ( "TodoListWithConsoleLog" , { todos : [ "log some messages" ] } )
29+ assert_no_match ( 'console.log.apply(console, ["got initial state"])' , result )
30+ assert_no_match ( 'console.warn.apply(console, ["mounted component"])' , result )
31+ assert_no_match ( 'console.error.apply(console, ["rendered!","foo"])' , result )
32+ end
33+
34+ test '#render errors include stack traces' do
35+ err = assert_raises React ::ServerRendering ::SprocketsRenderer ::PrerenderError do
36+ @renderer . render ( "NonExistentComponent" , { } )
37+ end
38+ assert_match ( "ReferenceError" , err . to_s )
39+ assert_match ( "NonExistentComponent" , err . to_s , "it names the component" )
40+ assert_match ( /\n / , err . to_s , "it includes the multi-line backtrace" )
41+ end
42+
43+ test '.new accepts any filenames' do
44+ limited_renderer = React ::ServerRendering ::SprocketsRenderer . new ( files : [ "react.js" , "components/Todo.js" ] )
45+ assert_match ( "get a real job</li>" , limited_renderer . render ( "Todo" , { todo : "get a real job" } ) )
46+ err = assert_raises React ::ServerRendering ::SprocketsRenderer ::PrerenderError do
47+ limited_renderer . render ( "TodoList" , { todos : [ ] } )
48+ end
49+ assert_match ( "ReferenceError" , err . to_s , "it doesnt load other files" )
1250 end
1351end
0 commit comments