debug-bar 1.0.0

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.
@@ -0,0 +1,161 @@
1
+ require 'spec_helper'
2
+
3
+ describe DebugBar::RecipeBook::Base do
4
+
5
+ class RecipeTestBook < DebugBar::RecipeBook::Base
6
+
7
+ def time_recipe
8
+ return Proc.new {|b| ['Time', Time.now, {}]}
9
+ end
10
+
11
+ # Places all key value pairs between vertical pipes.
12
+ # Ex: {:foo => 'bar'} --> '|foo|bar|'
13
+ def opts_recipe(opts={})
14
+ return Proc.new {|b| ['Opts', '|' + opts.to_a.flatten.join('|') + '|', {}]}
15
+ end
16
+
17
+ def render_recipe(opts={})
18
+ locals = {:content => 'River Song'}.merge(opts)
19
+ return Proc.new {|b| ['Render', render_template(:content, :locals => locals), {}]}
20
+ end
21
+
22
+ def helper_method
23
+ return :helper_method_result_standin
24
+ end
25
+
26
+ end
27
+
28
+ class BindingContext
29
+
30
+ def fetch_binding
31
+ return binding
32
+ end
33
+
34
+ end
35
+
36
+ before(:each) do
37
+ @book = RecipeTestBook.new
38
+ end
39
+
40
+ describe 'recipe introspection' do
41
+
42
+ it 'should give the list of all known recipes as symbols' do
43
+ @book.recipes.sort.should == [:time, :opts, :render].sort
44
+ end
45
+
46
+ it 'should allow checking for knowledge of a recipe by symbol' do
47
+ @book.include?(:time).should be_true
48
+ @book.include?(:zeta).should be_false
49
+ end
50
+
51
+ it 'should allow checking for knowledge of a recipe by string' do
52
+ @book.include?('time').should be_true
53
+ @book.include?('zeta').should be_false
54
+ end
55
+
56
+ end
57
+
58
+ describe 'recipe fetching' do
59
+
60
+ before(:each) do
61
+ @binding = BindingContext.new.fetch_binding
62
+ end
63
+
64
+ [:time, 'time'].each do |key|
65
+ it "should return the generated callback of a recipe reference by #{key.class.name}" do
66
+ recipe = @book.recipe(key)
67
+ recipe.should be_kind_of(Proc)
68
+ title, body = recipe.call(@binding)
69
+ title.should == 'Time'
70
+ end
71
+ end
72
+
73
+ it 'should pass an options hash to the recipe when given.' do
74
+ recipe = @book.recipe(:opts, :name => 'Amelia Pond')
75
+ recipe.should be_kind_of(Proc)
76
+ title, body= recipe.call(@binding)
77
+ title.should == 'Opts'
78
+ body.should == '|name|Amelia Pond|'
79
+ end
80
+
81
+ it 'should get the callback for a recipe that has opts even when they are not given.' do
82
+ recipe = @book.recipe(:opts)
83
+ recipe.should be_kind_of(Proc)
84
+ title, body= recipe.call(@binding)
85
+ title.should == 'Opts'
86
+ body.should == '||'
87
+ end
88
+
89
+ it 'should alias [] to recipe' do
90
+ @book.method(:[]).should == @book.method(:recipe)
91
+ end
92
+
93
+ end
94
+
95
+ describe 'templates' do
96
+
97
+ before(:each) do
98
+ @book.send(:template_search_paths=, [Pathname.new(__FILE__).dirname + 'support' + 'templates'])
99
+ end
100
+
101
+ it 'should have configurable template search paths' do
102
+ @book = RecipeTestBook.new # Need a clean book for this test.
103
+ @book.send(:template_search_paths).should == []
104
+
105
+ @book.send(:template_search_paths=, ['foo', 'bar'])
106
+
107
+ @book.send(:template_search_paths).each {|pn| pn.should be_kind_of(Pathname)}
108
+ @book.send(:template_search_paths).first.basename.to_s.should == 'foo'
109
+ @book.send(:template_search_paths).last.basename.to_s.should == 'bar'
110
+ end
111
+
112
+ it 'should read template names by symbol from the search path' do
113
+ template = @book.send(:read_template, :basic)
114
+
115
+ template.should be_kind_of(String)
116
+ template.index('id="basic"').should_not be_nil
117
+ end
118
+
119
+ it 'should read template names by string from the search path' do
120
+ template = @book.send(:read_template, 'basic')
121
+
122
+ template.should be_kind_of(String)
123
+ template.index('id="basic"').should_not be_nil
124
+ end
125
+
126
+ it 'should raise an ArgumenError when the template is not found' do
127
+ lambda {@book.send(:read_template, :gallifrey)}.should raise_error(ArgumentError)
128
+ end
129
+
130
+ it 'should render the template' do
131
+ html = @book.send(:render_template, :basic)
132
+ html.index('id="basic"').should_not be_nil
133
+ end
134
+
135
+ it 'should render the template with :locals' do
136
+ html = @book.send(:render_template, :content, :locals => {:content => 'The Doctor'})
137
+
138
+ html.index('id="content"').should_not be_nil
139
+ html.index('River Song').should be_nil
140
+ html.index('The Doctor').should_not be_nil
141
+ end
142
+
143
+ it 'should render the template within a recipe' do
144
+ title, html = @book.recipe(:render).call(@binding)
145
+
146
+ html.index('id="content"').should_not be_nil
147
+ html.index('River Song').should_not be_nil
148
+ html.index('The Doctor').should be_nil
149
+ end
150
+
151
+ it 'should render the template with locals from within a recipe' do
152
+ title, html = @book.recipe(:render, :content => 'The Doctor').call(@binding)
153
+
154
+ html.index('id="content"').should_not be_nil
155
+ html.index('River Song').should be_nil
156
+ html.index('The Doctor').should_not be_nil
157
+ end
158
+
159
+ end
160
+
161
+ end
@@ -0,0 +1,19 @@
1
+ require 'rspec'
2
+ #require 'vcr'
3
+
4
+ require 'debug-bar'
5
+
6
+ #WP::Config::set_config_root(File.expand_path(File.join(File.dirname(__FILE__),'data')))
7
+ #
8
+ #VCR.configure do |c|
9
+ # c.cassette_library_dir = File.dirname(__FILE__) + '/fixtures/vcr_cassettes'
10
+ # c.hook_into :webmock
11
+ #end
12
+
13
+ Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each {|f| require f}
14
+
15
+ # Require ruby-debugger if it is available, otherwise don't.
16
+ begin
17
+ require 'ruby-debugger'
18
+ rescue LoadError
19
+ end
@@ -0,0 +1 @@
1
+ <div id="basic">Basic</div>
@@ -0,0 +1 @@
1
+ <div id="content"><%= content %></div>
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: debug-bar
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
+ platform: ruby
7
+ authors:
8
+ - Jeff Reinecke
9
+ - Keith Stone
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2012-11-15 00:00:00 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: erubis
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: awesome_print
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ description: Base generic debug bar implementation.
50
+ email:
51
+ - jreinecke@whitepages.com
52
+ - kstone@whitepages.com
53
+ executables: []
54
+
55
+ extensions: []
56
+
57
+ extra_rdoc_files: []
58
+
59
+ files:
60
+ - .gitignore
61
+ - .rbenv-version
62
+ - .rspec
63
+ - Gemfile
64
+ - README.rdoc
65
+ - Rakefile
66
+ - debug-bar.gemspec
67
+ - lib/debug-bar.rb
68
+ - lib/debug-bar/base.rb
69
+ - lib/debug-bar/default.rb
70
+ - lib/debug-bar/ext.rb
71
+ - lib/debug-bar/ext/binding.rb
72
+ - lib/debug-bar/ext/object.rb
73
+ - lib/debug-bar/ext/string.rb
74
+ - lib/debug-bar/recipe_book.rb
75
+ - lib/debug-bar/recipe_book/base.rb
76
+ - lib/debug-bar/recipe_book/default.rb
77
+ - lib/debug-bar/version.rb
78
+ - lib/templates/callback_box.html.erb
79
+ - lib/templates/error.html.erb
80
+ - lib/templates/layout.html.erb
81
+ - spec/base_spec.rb
82
+ - spec/binding_spec.rb
83
+ - spec/recipe_book_spec.rb
84
+ - spec/spec_helper.rb
85
+ - spec/support/templates/basic.html.erb
86
+ - spec/support/templates/content.html.erb
87
+ homepage: https://github.com/whitepages/debug-bar
88
+ licenses:
89
+ - BSD
90
+ post_install_message:
91
+ rdoc_options: []
92
+
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: "0"
107
+ requirements: []
108
+
109
+ rubyforge_project:
110
+ rubygems_version: 1.8.12
111
+ signing_key:
112
+ specification_version: 3
113
+ summary: Debug Bar
114
+ test_files: []
115
+
116
+ has_rdoc: