true-web 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/true-web/controller.rb +3 -0
- data/lib/true-web/version.rb +1 -1
- data/spec/fixture-app/app.rb +2 -0
- data/spec/fixture-app/services/authentication/app/controllers/authentication.rb +6 -0
- data/spec/spec_helpers/example_group.rb +47 -0
- data/spec/true-web/controller_spec.rb +36 -0
- metadata +4 -1
data/Gemfile.lock
CHANGED
data/lib/true-web/controller.rb
CHANGED
@@ -38,6 +38,9 @@ module TrueWeb
|
|
38
38
|
|
39
39
|
error(500) do
|
40
40
|
env["rack.exception"] = env["sinatra.error"]
|
41
|
+
if env["rack.logger"]
|
42
|
+
env["rack.logger"].error "#{env["sinatra.error"].message}\n#{env["sinatra.error"].backtrace.join("\n\t")}"
|
43
|
+
end
|
41
44
|
"<div>Oops, an error occurred.</div>"
|
42
45
|
end
|
43
46
|
|
data/lib/true-web/version.rb
CHANGED
data/spec/fixture-app/app.rb
CHANGED
@@ -3,11 +3,13 @@ module FixtureApp
|
|
3
3
|
|
4
4
|
def self.app
|
5
5
|
@app ||= Rack::Builder.new do
|
6
|
+
use Rack::Logger
|
6
7
|
run ::FixtureApp::Controller
|
7
8
|
end.to_app
|
8
9
|
end
|
9
10
|
|
10
11
|
class Controller < ::TrueWeb::Controller
|
12
|
+
set :dump_errors, false
|
11
13
|
end
|
12
14
|
|
13
15
|
class Views < ::TrueWeb::Views
|
@@ -0,0 +1,47 @@
|
|
1
|
+
RSpec::Core::ExampleGroup.class_eval do
|
2
|
+
include Capybara
|
3
|
+
|
4
|
+
def app
|
5
|
+
FixtureApp::Controller
|
6
|
+
end
|
7
|
+
|
8
|
+
def uris
|
9
|
+
@uris ||= FixtureApp::Routes.instance
|
10
|
+
end
|
11
|
+
alias_method :named_routes, :uris
|
12
|
+
|
13
|
+
def views
|
14
|
+
@views ||= begin
|
15
|
+
app_instance = Capybara.app.allocate
|
16
|
+
app_instance.send(:initialize)
|
17
|
+
app_instance.session_data = session_data
|
18
|
+
::FixtureApp::Views.new(app_instance)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
[
|
23
|
+
:request, :last_request, :response, :last_response, :follow_redirect!,
|
24
|
+
:rack_mock_session
|
25
|
+
].each do |method_name|
|
26
|
+
class_eval((<<-RUBY), __FILE__, __LINE__+1)
|
27
|
+
def #{method_name}(*args, &block)
|
28
|
+
page.driver.#{method_name}(*args, &block)
|
29
|
+
end
|
30
|
+
RUBY
|
31
|
+
end
|
32
|
+
|
33
|
+
[:get, :put, :post, :delete].each do |method_name|
|
34
|
+
class_eval((<<-RUBY), __FILE__, __LINE__+1)
|
35
|
+
def #{method_name}(*args, &block)
|
36
|
+
(res = page.driver.#{method_name}(*args, &block)).tap do
|
37
|
+
puts res.errors if res.status == 500
|
38
|
+
end
|
39
|
+
end
|
40
|
+
RUBY
|
41
|
+
end
|
42
|
+
|
43
|
+
def current_path
|
44
|
+
Addressable::URI.parse(current_url).path
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
|
2
|
+
|
3
|
+
module TrueWeb
|
4
|
+
describe Controller do
|
5
|
+
describe "GET /authentication/error-page" do
|
6
|
+
context "when there is not a rack.logger" do
|
7
|
+
it "responds with a 500" do
|
8
|
+
any_instance_of(FixtureApp::Controller) do |controller|
|
9
|
+
stub.proxy(controller).env do |env|
|
10
|
+
env.delete("rack.logger")
|
11
|
+
env
|
12
|
+
end
|
13
|
+
end
|
14
|
+
get uris.authentication_error_page
|
15
|
+
|
16
|
+
response.status.should == 500
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when there is a rack.logger" do
|
21
|
+
it "responds with a 500 and logs the message" do
|
22
|
+
message = nil
|
23
|
+
any_instance_of(Logger) do |l|
|
24
|
+
stub(l).error(is_a(String)) do |*args|
|
25
|
+
message = args.first
|
26
|
+
end
|
27
|
+
end
|
28
|
+
get uris.authentication_error_page
|
29
|
+
|
30
|
+
response.status.should == 500
|
31
|
+
message.should include("An Error")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: true-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Brian Takita
|
@@ -181,12 +181,15 @@ files:
|
|
181
181
|
- lib/true-web/version.rb
|
182
182
|
- lib/true-web/views.rb
|
183
183
|
- spec/fixture-app/app.rb
|
184
|
+
- spec/fixture-app/services/authentication/app/controllers/authentication.rb
|
184
185
|
- spec/fixture-app/services/authentication/app/presenters/index.html.ms.rb
|
185
186
|
- spec/fixture-app/services/authentication/app/templates/index.html.ms
|
186
187
|
- spec/fixture-app/services/authentication/init.rb
|
187
188
|
- spec/fixture-app/services/authentication/public/javascripts/foo.js
|
188
189
|
- spec/spec_helper.rb
|
190
|
+
- spec/spec_helpers/example_group.rb
|
189
191
|
- spec/spec_suite.rb
|
192
|
+
- spec/true-web/controller_spec.rb
|
190
193
|
- spec/true-web/service_spec.rb
|
191
194
|
- spec/true-web/views_spec.rb
|
192
195
|
- true-web.gemspec
|