cells 3.3.0 → 3.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -62,7 +62,7 @@ begin
62
62
  spec.authors = ["Nick Sutterer"]
63
63
  spec.email = "apotonick@gmail.com"
64
64
 
65
- spec.files = FileList["[A-Z]*", File.join(*%w[{generators,lib,rails} ** *]).to_s]
65
+ spec.files = FileList["[A-Z]*", File.join(*%w[{lib,rails,rails_generators} ** *]).to_s]
66
66
 
67
67
  # spec.add_dependency 'activesupport', '>= 2.3.0' # Dependencies and minimum versions?
68
68
  end
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+ require 'action_controller/test_case'
3
+
4
+ module Cells
5
+ module AssertionsHelper
6
+ # Sets up a mock controller for usage in render_cell.
7
+ def setup
8
+ @controller = Class.new(ActionController::Base).new
9
+ @request = ::ActionController::TestRequest.new
10
+ @response = ::ActionController::TestResponse.new
11
+ @controller.request = @request
12
+ @controller.response = @response
13
+ @controller.params = {}
14
+ end
15
+
16
+ # Use this for functional tests of your application cells.
17
+ #
18
+ # Example:
19
+ # should "spit out a h1 title" do
20
+ # html = render_cell(:news, :latest)
21
+ # assert_selekt html, "h1", "The latest and greatest!"
22
+ def render_cell(*args)
23
+ @controller.render_cell(*args)
24
+ end
25
+
26
+ # Invokes assert_select for the passed <tt>content</tt> string.
27
+ #
28
+ # Example:
29
+ # html = "<h1>The latest and greatest!</h1>"
30
+ # assert_selekt html, "h1", "The latest and greatest!"
31
+ #
32
+ # would be true.
33
+ def assert_selekt(content, *args)
34
+ assert_select(HTML::Document.new(content).root, *args)
35
+ end
36
+
37
+ # Builds an instance of <tt>name</tt>Cell for unit testing.
38
+ # Passes the optional block to <tt>cell.instance_eval</tt>.
39
+ #
40
+ # Example:
41
+ # assert_equal "Banks kill planet!" cell(:news, :topic => :terror).latest_headline
42
+ def cell(name, opts={}, &block)
43
+ cell = Cell::Base.create_cell_for(@controller, name, opts)
44
+ cell.instance_eval &block if block_given?
45
+ cell
46
+ end
47
+ end
48
+ end
49
+
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Cells
4
- VERSION = '3.3.0'.freeze
5
- end
4
+ VERSION = '3.3.1'.freeze
5
+ end
@@ -17,16 +17,19 @@ class CellGenerator < ControllerGenerator
17
17
  # Directories
18
18
  m.directory File.join('app/cells', class_path)
19
19
  m.directory File.join('app/cells', class_path, file_name)
20
-
20
+ m.directory File.join('test/cells')
21
+
21
22
  # Cell
22
23
  m.template 'cell.rb', File.join('app/cells', class_path, "#{file_name}_cell.rb")
23
24
 
24
25
  # View template for each action.
25
26
  actions.each do |action|
26
27
  path = File.join('app/cells', class_path, file_name, "#{action}.html.#{template_type}")
27
- m.template "view.html.#{template_type}", path,
28
- :assigns => { :action => action, :path => path }
28
+ m.template "view.html.#{template_type}", path, :assigns => { :action => action, :path => path }
29
29
  end
30
+
31
+ # Functional test for the widget.
32
+ m.template 'cell_test.rb', File.join('test/cells/', "#{file_name}_cell_test.rb"), :assigns => {:states => actions}
30
33
  end
31
34
  end
32
35
 
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class <%= class_name %>CellTest < ActionController::TestCase
4
+ include Cells::AssertionsHelper
5
+
6
+ <% for state in states -%>
7
+ test "<%= state %>" do
8
+ html = render_cell(:<%= file_name %>, :<%= state %>)
9
+ #assert_selekt html, "div"
10
+ end
11
+
12
+ <% end %>
13
+ end
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+ require File.join(File.dirname(__FILE__), 'test_helper')
3
+
4
+ class AssertionsHelperTest < ActionController::TestCase
5
+ context "A TestCase" do
6
+ setup do
7
+ TestCell.class_eval do
8
+ def beep; render; end
9
+ end
10
+ end
11
+
12
+ context "calling #cell_mock" do
13
+ should "return a cell instance" do
14
+ assert_kind_of Cell::Base, cell_mock
15
+ end
16
+
17
+ should "accept a block" do
18
+ assert_respond_to cell_mock { def beep; end}, :beep
19
+ end
20
+ end
21
+
22
+ should "respond to #render_cell" do
23
+ assert_equal "<h1>beep!</h1>", render_cell(:test, :beep)
24
+ end
25
+
26
+ should "respond to #assert_selekt" do
27
+ assert_selekt render_cell(:test, :beep), "h1", "beep!"
28
+ end
29
+
30
+ should "respond to #cell" do
31
+ assert_kind_of TestCell, cell(:test)
32
+ assert_not cell(:test).respond_to? :opts
33
+ end
34
+
35
+ should "respond to #cell with a block" do
36
+ assert_respond_to cell(:test) { def opts; @opts; end }, :opts
37
+ end
38
+
39
+ should "respond to #cell with options and block" do
40
+ assert_equal({:topic => :peace}, cell(:test, :topic => :peace) { def opts; @opts; end }.opts)
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,48 @@
1
+ require File.join(File.dirname(__FILE__), *%w[test_helper])
2
+ require 'rails_generator'
3
+ require 'rails_generator/scripts/generate'
4
+
5
+ # for some reasons the "autoloading" in Rails::Generator::Lookup doesn't work:
6
+ Rails::Generator::Base.append_sources Rails::Generator::PathSource.new(:cells, File.join(File.dirname(__FILE__)+'/../rails_generators'))
7
+
8
+ class CellGeneratorTest < Test::Unit::TestCase
9
+ context "Running script/generate cell" do
10
+ setup do
11
+ FileUtils.mkdir_p(fake_rails_root)
12
+ @original_files = file_list
13
+ end
14
+
15
+ teardown do
16
+ FileUtils.rm_r(fake_rails_root)
17
+ end
18
+
19
+ context "Blog post latest" do
20
+ should "create the standard assets" do
21
+ Rails::Generator::Scripts::Generate.new.run(%w(cell Blog post latest), :destination => fake_rails_root)
22
+ files = (file_list - @original_files)
23
+ assert files.include?(fake_rails_root+"/app/cells/blog_cell.rb")
24
+ assert files.include?(fake_rails_root+"/app/cells/blog/post.html.erb")
25
+ assert files.include?(fake_rails_root+"/app/cells/blog/latest.html.erb")
26
+ assert files.include?(fake_rails_root+"/test/cells/blog_cell_test.rb")
27
+ end
28
+
29
+ should "create haml assets with --haml" do
30
+ Rails::Generator::Scripts::Generate.new.run(%w(cell Blog post latest --haml), :destination => fake_rails_root)
31
+ files = (file_list - @original_files)
32
+ assert files.include?(fake_rails_root+"/app/cells/blog_cell.rb")
33
+ assert files.include?(fake_rails_root+"/app/cells/blog/post.html.haml")
34
+ assert files.include?(fake_rails_root+"/app/cells/blog/latest.html.haml")
35
+ assert files.include?(fake_rails_root+"/test/cells/blog_cell_test.rb")
36
+ end
37
+ end
38
+ end
39
+
40
+ private
41
+ def fake_rails_root
42
+ File.join(File.dirname(__FILE__), 'rails_root')
43
+ end
44
+
45
+ def file_list
46
+ Dir.glob(File.join(fake_rails_root, "**/*"))
47
+ end
48
+ end
@@ -1,11 +1,10 @@
1
1
  # encoding: utf-8
2
- require 'action_controller/test_case'
3
-
4
- # Assertion helpers extracted from Devise by José Valim.
5
- #
6
2
  module Cells
7
- module AssertionsHelper
3
+ # Assertion helpers extracted from Devise by José Valim.
4
+ #
5
+ module InternalAssertionsHelper
8
6
  def setup
7
+ ### TODO: clean up CellsTestController.
9
8
  @controller = ::CellsTestController.new
10
9
  @request = ::ActionController::TestRequest.new
11
10
  @response = ::ActionController::TestResponse.new
@@ -13,11 +12,7 @@ module Cells
13
12
  @controller.response = @response
14
13
  @controller.params = {}
15
14
  end
16
-
17
- def assert_selekt(content, *args)
18
- assert_select(HTML::Document.new(content).root, *args)
19
- end
20
-
15
+
21
16
  def assert_not(assertion)
22
17
  assert !assertion
23
18
  end
@@ -56,5 +51,14 @@ module Cells
56
51
  object.send :"#{key}=", value
57
52
  end
58
53
  end
54
+
55
+ # Provides a TestCell instance. The <tt>block</tt> is passed to instance_eval and should be used
56
+ # to extend the mock on the fly.
57
+ ### DISCUSS: make an anonymous subclass of TestCell?
58
+ def cell_mock(options={}, &block)
59
+ cell = TestCell.new(@controller, options)
60
+ cell.instance_eval(&block) if block_given?
61
+ cell
62
+ end
59
63
  end
60
- end
64
+ end
@@ -29,6 +29,13 @@ rescue
29
29
  require 'action_view'
30
30
  end
31
31
 
32
+ begin
33
+ require 'shoulda'
34
+ rescue
35
+ gem 'shoulda'
36
+ require 'shoulda'
37
+ end
38
+
32
39
  require 'active_support/test_case'
33
40
 
34
41
  # Require app's test_helper.rb if such exists.
@@ -61,7 +68,9 @@ end
61
68
 
62
69
  # Load test support files.
63
70
  Dir[File.join(File.dirname(__FILE__), *%w[support ** *.rb]).to_s].each { |f| require f }
71
+ require File.join(File.dirname(__FILE__), *%w[.. lib cells assertions_helper])
64
72
 
65
73
  ActiveSupport::TestCase.class_eval do
66
74
  include Cells::AssertionsHelper
75
+ include Cells::InternalAssertionsHelper
67
76
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cells
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-05 00:00:00 +01:00
12
+ date: 2010-03-27 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -26,16 +26,9 @@ files:
26
26
  - MIT-LICENSE
27
27
  - README.rdoc
28
28
  - Rakefile
29
- - generators/cell/USAGE
30
- - generators/cell/cell_generator.rb
31
- - generators/cell/templates/cell.rb
32
- - generators/cell/templates/view.html.erb
33
- - generators/cell/templates/view.html.haml
34
- - generators/cells_install/USAGE
35
- - generators/cells_install/cells_install_generator.rb
36
- - generators/cells_install/templates/initializer.rb
37
29
  - lib/cell.rb
38
30
  - lib/cells.rb
31
+ - lib/cells/assertions_helper.rb
39
32
  - lib/cells/cell.rb
40
33
  - lib/cells/cell/base.rb
41
34
  - lib/cells/cell/caching.rb
@@ -47,6 +40,15 @@ files:
47
40
  - lib/cells/rails/action_view.rb
48
41
  - lib/cells/version.rb
49
42
  - rails/init.rb
43
+ - rails_generators/cell/USAGE
44
+ - rails_generators/cell/cell_generator.rb
45
+ - rails_generators/cell/templates/cell.rb
46
+ - rails_generators/cell/templates/cell_test.rb
47
+ - rails_generators/cell/templates/view.html.erb
48
+ - rails_generators/cell/templates/view.html.haml
49
+ - rails_generators/cells_install/USAGE
50
+ - rails_generators/cells_install/cells_install_generator.rb
51
+ - rails_generators/cells_install/templates/initializer.rb
50
52
  has_rdoc: true
51
53
  homepage: http://cells.rubyforge.org
52
54
  licenses: []
@@ -76,20 +78,22 @@ signing_key:
76
78
  specification_version: 3
77
79
  summary: Cells are lightweight controllers for Rails and can be rendered in controllers and views, providing an elegant and fast way for encapsulation and component-orientation.
78
80
  test_files:
79
- - test/caching_test.rb
80
- - test/cells_test.rb
81
- - test/test_helper.rb
82
- - test/capture_helper_test.rb
83
81
  - test/rails_test.rb
84
- - test/helper_test.rb
82
+ - test/capture_helper_test.rb
83
+ - test/assertions_helper_test.rb
84
+ - test/cell_generator_test.rb
85
+ - test/test_helper.rb
86
+ - test/support/internal_assertions_helper.rb
85
87
  - test/bugs_test.rb
86
88
  - test/render_test.rb
87
- - test/support/assertions_helper.rb
88
- - test/app/helpers/application_helper.rb
89
- - test/app/helpers/helper_using_cell_helper.rb
90
- - test/app/cells/cells_test_two_cell.rb
91
- - test/app/cells/test_cell.rb
92
- - test/app/cells/cells_test_one_cell.rb
89
+ - test/cells_test.rb
90
+ - test/helper_test.rb
91
+ - test/caching_test.rb
92
+ - test/app/controllers/cells_test_controller.rb
93
93
  - test/app/cells/really_module/nested_cell.rb
94
+ - test/app/cells/cells_test_one_cell.rb
95
+ - test/app/cells/cells_test_two_cell.rb
94
96
  - test/app/cells/simple_cell.rb
95
- - test/app/controllers/cells_test_controller.rb
97
+ - test/app/cells/test_cell.rb
98
+ - test/app/helpers/application_helper.rb
99
+ - test/app/helpers/helper_using_cell_helper.rb