@@ -81,11 +81,50 @@ def web_runner(*args)
81
81
Resque ::Server . set :server , false
82
82
end
83
83
84
- it 'sets the rack handler automaticaly ' do
84
+ it 'sets the rack handler automatically ' do
85
85
assert_equal @runner . rack_handler , Rack ::Handler ::WEBrick
86
86
end
87
87
end
88
88
89
+ describe 'with a sinatra app without an explicit server setting' do
90
+ def web_runner ( *args )
91
+ Resque ::WebRunner . any_instance . stubs ( :daemonize! ) . once
92
+ Rack ::Handler ::WEBrick . stubs ( :run ) . once
93
+ @runner = Resque ::WebRunner . new ( *args )
94
+ end
95
+
96
+ before do
97
+ Resque ::Server . set :server , [ "invalid" , "webrick" , "thin" ]
98
+ Rack ::Handler ::WEBrick . stubs ( :run )
99
+ web_runner ( "route" , "--debug" , skip_launch : true , sessions : true )
100
+ end
101
+
102
+ after do
103
+ Resque ::Server . set :server , false
104
+ end
105
+
106
+ it 'sets the first valid rack handler' do
107
+ assert_equal @runner . rack_handler , Rack ::Handler ::WEBrick
108
+ end
109
+ end
110
+
111
+ describe 'with a sinatra app without available server settings' do
112
+ before do
113
+ Resque ::Server . set :server , [ "invalid" ]
114
+ end
115
+
116
+ after do
117
+ Resque ::Server . set :server , false
118
+ end
119
+
120
+ it 'raises an error indicating that no available Rack handler was found' do
121
+ err = assert_raises StandardError do
122
+ Resque ::WebRunner . new ( skip_launch : true , sessions : true )
123
+ end
124
+ assert_match ( 'No available Rack handler (e.g. WEBrick, Thin, Puma, etc.) was found.' , err . message )
125
+ end
126
+ end
127
+
89
128
describe 'with a simple rack app' do
90
129
before do
91
130
web_runner ( skip_launch : true , sessions : true )
0 commit comments