cells 3.3.8 → 3.3.9

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/CHANGES CHANGED
@@ -1,3 +1,7 @@
1
+ - 3.3.9
2
+ * fixed loading test_case.rb
3
+ * added TestCase#view_assigns
4
+
1
5
  - 2.3
2
6
  * ::Cell::Base#new(controller, opts={})
3
7
  We got rid of the second argument cell_name, since it was completely useless.
@@ -66,4 +66,4 @@ end
66
66
  Cell::Base.view_paths = Cells::DEFAULT_VIEW_PATHS if Cell::Base.view_paths.blank?
67
67
 
68
68
  require 'cells/rails'
69
- require 'cells/cell/test_case' if ENV['RAILS_ENV'] = 'test'
69
+ require 'cells/cell/test_case' if ENV['RAILS_ENV'] == 'test'
@@ -77,8 +77,26 @@ module Cell
77
77
  # should "spit out a h1 title" do
78
78
  # html = render_cell(:news, :latest)
79
79
  # assert_selekt html, "h1", "The latest and greatest!"
80
- def render_cell(*args)
81
- @controller.render_cell(*args)
80
+ def render_cell(name, state, *args)
81
+ @subject_cell = ::Cell::Base.create_cell_for(@controller, name, *args)
82
+ @view_assigns = extract_state_ivars_for(@subject_cell) do
83
+ @last_invoke = @subject_cell.render_state(state, *args)
84
+ end
85
+
86
+ @last_invoke
87
+ end
88
+
89
+ # Runs the block while computing the instance variables diff from before and after.
90
+ def extract_state_ivars_for(cell)
91
+ before = cell.instance_variables
92
+ before += [:@cell, :@state_name]
93
+ yield
94
+ after = cell.instance_variables
95
+
96
+ Hash[(after - before).collect do |var|
97
+ next if var =~ /^@_/
98
+ [var[1, var.length].to_sym, cell.instance_variable_get(var)]
99
+ end]
82
100
  end
83
101
 
84
102
  # Builds an instance of <tt>name</tt>Cell for unit testing.
@@ -99,7 +117,7 @@ module Cell
99
117
  include AssertSelect
100
118
 
101
119
 
102
- attr_reader :last_invoke
120
+ attr_reader :last_invoke, :subject_cell, :view_assigns
103
121
 
104
122
  def invoke(state, *args)
105
123
  @last_invoke = self.class.controller_class.new(@controller, *args).render_state(state)
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Cells
4
- VERSION = '3.3.8'
2
+ VERSION = '3.3.9'
5
3
  end
@@ -33,6 +33,23 @@ class TestCaseTest < Cell::TestCase
33
33
  assert_equal({:topic => :peace}, cell(:bassist, :topic => :peace) { def opts; @opts; end }.opts)
34
34
  end
35
35
 
36
+ context "#view_assigns" do
37
+ should "be emtpy when nothing was set" do
38
+ render_cell(:bassist, :play)
39
+ assert_equal({}, view_assigns)
40
+ end
41
+
42
+ should "return the instance variables from the last #render_cell" do
43
+ BassistCell.class_eval do
44
+ def sleep
45
+ @duration = "8h"
46
+ end
47
+ end
48
+ render_cell(:bassist, :sleep)
49
+ assert_equal({:duration => "8h"}, view_assigns)
50
+ end
51
+ end
52
+
36
53
  context "in declarative tests" do
37
54
  should "respond to TestCase.tests" do
38
55
  self.class.tests BassistCell
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 3
7
7
  - 3
8
- - 8
9
- version: 3.3.8
8
+ - 9
9
+ version: 3.3.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - Nick Sutterer
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-07-14 00:00:00 +02:00
17
+ date: 2011-10-06 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency