rspec-action_view 0.2.0 → 0.3.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.
data/README.markdown CHANGED
@@ -1,6 +1,9 @@
1
1
  # Rspec for Rails 3 ActionView
2
2
 
3
3
  RSpec 2 library to make it simple to spec Rails 3 ActionView extensions.
4
+ Works with locals, #html_safe and nested blocks using #with_output_buffer and much, much more...
5
+
6
+ Enjoy! I know I am... ;)
4
7
 
5
8
  ## Install
6
9
 
@@ -23,8 +26,12 @@ RSpec 2 library to make it simple to spec Rails 3 ActionView extensions.
23
26
  content_tag :div, content, :class => clazz
24
27
  end
25
28
 
26
- def name
27
- 'Kristian'
29
+ def my_name
30
+ 'Kristian'.html_safe
31
+ end
32
+
33
+ def hi(first_name_, last_name)
34
+ "Hi #{first_name} #{last_name} !".html_safe
28
35
  end
29
36
  end
30
37
  end
@@ -34,7 +41,7 @@ RSpec 2 library to make it simple to spec Rails 3 ActionView extensions.
34
41
 
35
42
  it "should work" do
36
43
  with_engine(:erb) do |e|
37
- e.run_template("hello <%= name %>").should match /Kristian/
44
+ e.run_template {"hello <%= my_name %>"}.should match /Kristian/
38
45
 
39
46
  e.run_template do
40
47
  %{<%= tab_for :x do %>
@@ -45,6 +52,14 @@ RSpec 2 library to make it simple to spec Rails 3 ActionView extensions.
45
52
  end.should match /ged/
46
53
  end
47
54
  end
55
+
56
+ it "should assign Kristian to the local 'name' that is used in the erb" do
57
+ with_engine(:erb) do |e|
58
+ e.run_template_locals :first_name => 'Kristian', :last_name => 'Mandrup' do
59
+ %{<%= hi(first_name, last_name) %>}
60
+ end.should match /Kristian/
61
+ end
62
+ end
48
63
  end
49
64
  </pre>
50
65
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -77,9 +77,15 @@ module RSpec
77
77
  end
78
78
  end
79
79
 
80
- def run_template content=nil, &block
81
- content ||= yield
82
- render :inline => content
80
+ def run_template_locals locals = {}, local_assigns = {}, &block
81
+ raise ArgumentError, "Must take template as a block argument" if !block
82
+ options = {:inline => block.call}
83
+ render options.merge(:locals => locals), {}
84
+ end
85
+
86
+ def run_template options = {}, local_assigns = {}, &block
87
+ raise ArgumentError, "Must take template as a block argument" if !block
88
+ render options.merge(:inline => block.call), local_assigns
83
89
  end
84
90
  end
85
91
  end
@@ -1,24 +1,21 @@
1
1
  require 'active_support/railtie'
2
2
  require 'rails3_plugin_toolbox'
3
+ require 'sugar-high/kind_of'
3
4
 
4
5
  module RSpec
5
6
  module ActionView
6
7
  module Macro
7
- def extend_view_with_modules *modules
8
+ def extend_view_with base_name, *modules
9
+ modules = modules.flatten
8
10
  Rails3::PluginExtender.new do
9
11
  # extend action_view with methods from some modules
10
- extend_rails :view do
11
- extend_with *modules
12
- end
13
- end
14
- end
15
-
16
- def extend_view_with base_name, *modules
17
- Rails3::PluginExtender.new do
18
- # extend action_view with methods from some modules
19
- extend_rails :view do
20
- extend_from_module base_name, *modules
21
- end
12
+ extend_rails :view do |v|
13
+ if base_name.kind_of?(Module) && !modules.empty? && modules.only_kinds_of?(Symbol)
14
+ v.extend_from_module(base_name, *modules)
15
+ else
16
+ v.extend_with base_name, *modules
17
+ end
18
+ end
22
19
  end
23
20
  end
24
21
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rspec-action_view}
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kristian Mandrup"]
12
- s.date = %q{2010-08-25}
12
+ s.date = %q{2010-08-26}
13
13
  s.description = %q{RSpec 2 library to make it simple to spec Rails 3 ActionView extensions}
14
14
  s.email = %q{kmandrup@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  "lib/rspec-action_view/rspec/example_group.rb",
30
30
  "lib/rspec-action_view/rspec/macro.rb",
31
31
  "rspec-action_view.gemspec",
32
+ "spec/rspec-action_view/assign_locals_spec.rb",
32
33
  "spec/rspec-action_view/erb_tester_spec.rb",
33
34
  "spec/spec_helper.rb"
34
35
  ]
@@ -38,7 +39,8 @@ Gem::Specification.new do |s|
38
39
  s.rubygems_version = %q{1.3.7}
39
40
  s.summary = %q{RSpec for Rails 3 ActionView extensions}
40
41
  s.test_files = [
41
- "spec/rspec-action_view/erb_tester_spec.rb",
42
+ "spec/rspec-action_view/assign_locals_spec.rb",
43
+ "spec/rspec-action_view/erb_tester_spec.rb",
42
44
  "spec/spec_helper.rb"
43
45
  ]
44
46
 
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ module MyView
4
+
5
+ def goodbye name
6
+ "Goodbye #{name}".html_safe
7
+ end
8
+
9
+ def hello name
10
+ "Hello #{name}".html_safe
11
+ end
12
+
13
+ module Tab
14
+ def tab_for(clazz, &block)
15
+ content = with_output_buffer(&block)
16
+ content_tag :li, content, :class => clazz
17
+ end
18
+ end
19
+ end
20
+
21
+ describe 'My View extensions!' do
22
+ extend_view_with MyView
23
+
24
+ describe '#run_template' do
25
+ it "should assign Kristian to the local 'name' that is used in the erb" do
26
+ with_engine(:erb) do |e|
27
+ e.run_template(:locals => {:name => 'Kristian'}) {"<%= goodbye name %>"}.should match /Kristian/
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '#run_template_locals' do
33
+ it "should assign Kristian to the local 'name' that is used in the erb" do
34
+ with_engine(:erb) do |e|
35
+ e.run_template_locals :name => 'Kristian' do
36
+ %{<%= goodbye name %>}
37
+ end.should match /Kristian/
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,6 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module MyView
4
+
5
+ def goodbye
6
+ 'Goodbye'
7
+ end
8
+
4
9
  module Tab
5
10
  def tab_for(clazz, &block)
6
11
  content = with_output_buffer(&block)
@@ -8,6 +13,18 @@ module MyView
8
13
  end
9
14
  end
10
15
 
16
+ module Blip
17
+ def blip
18
+ content_tag :li, 'blip me'
19
+ end
20
+ end
21
+
22
+ module Blap
23
+ def blap
24
+ content_tag :li, 'blap me'
25
+ end
26
+ end
27
+
11
28
  module Say
12
29
  def hello(clazz, &block)
13
30
  content = with_output_buffer(&block)
@@ -22,11 +39,38 @@ end
22
39
 
23
40
  describe 'My View extensions!' do
24
41
  extend_view_with MyView, :tab, :say
42
+ extend_view_with MyView
43
+ extend_view_with MyView::Blap, 'MyView::Blip'
44
+
45
+ it "should extend with single module MyView" do
46
+ with_engine(:erb) do |e|
47
+ e.run_template {"<%= goodbye %>"}.should match /Goodbye/
48
+ end
49
+ end
50
+
51
+
52
+ it "should extend with module Say - hello, name" do
53
+ with_engine(:erb) do |e|
54
+ e.run_template {"hello <%= name %>"}.should match /Kristian/
25
55
 
26
- it "should work" do
56
+ e.run_template do
57
+ %{
58
+ <%= hello :blip do %>
59
+ ged
60
+ <% end %>
61
+ }
62
+ end.should match /ged/
63
+ end
64
+ end
65
+
66
+ it "should extend with modules Blip and Blap" do
27
67
  with_engine(:erb) do |e|
28
- e.run_template("hello <%= name %>").should match /Kristian/
68
+ e.run_template {"hello <%= blip %> go <%= blap %>"}.should match /blip me/
69
+ end
70
+ end
29
71
 
72
+ it "should extend handle nested blocks in ERB" do
73
+ with_engine(:erb) do |e|
30
74
  e.run_template do
31
75
  %{<%= tab_for :x do %>
32
76
  <%= hello :blip do %>
@@ -36,4 +80,5 @@ describe 'My View extensions!' do
36
80
  end.should match /ged/
37
81
  end
38
82
  end
83
+
39
84
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
7
+ - 3
8
8
  - 0
9
- version: 0.2.0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kristian Mandrup
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-25 00:00:00 +02:00
17
+ date: 2010-08-26 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -54,6 +54,7 @@ files:
54
54
  - lib/rspec-action_view/rspec/example_group.rb
55
55
  - lib/rspec-action_view/rspec/macro.rb
56
56
  - rspec-action_view.gemspec
57
+ - spec/rspec-action_view/assign_locals_spec.rb
57
58
  - spec/rspec-action_view/erb_tester_spec.rb
58
59
  - spec/spec_helper.rb
59
60
  has_rdoc: true
@@ -89,5 +90,6 @@ signing_key:
89
90
  specification_version: 3
90
91
  summary: RSpec for Rails 3 ActionView extensions
91
92
  test_files:
93
+ - spec/rspec-action_view/assign_locals_spec.rb
92
94
  - spec/rspec-action_view/erb_tester_spec.rb
93
95
  - spec/spec_helper.rb