apotomo 1.0.5 → 1.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/CHANGES.textile +35 -7
- data/Gemfile +0 -2
- data/README.rdoc +9 -9
- data/apotomo.gemspec +3 -3
- data/lib/apotomo.rb +4 -47
- data/lib/apotomo/event.rb +2 -0
- data/lib/apotomo/event_handler.rb +0 -3
- data/lib/apotomo/event_methods.rb +6 -2
- data/lib/apotomo/invoke_event_handler.rb +5 -3
- data/lib/apotomo/javascript_generator.rb +19 -16
- data/lib/apotomo/rails/controller_methods.rb +84 -131
- data/lib/apotomo/rails/view_helper.rb +15 -31
- data/lib/apotomo/railtie.rb +24 -0
- data/lib/apotomo/request_processor.rb +17 -48
- data/lib/apotomo/test_case.rb +5 -5
- data/lib/apotomo/tree_node.rb +52 -61
- data/lib/apotomo/version.rb +1 -1
- data/lib/apotomo/widget.rb +70 -146
- data/lib/apotomo/widget/javascript_methods.rb +39 -0
- data/lib/apotomo/widget_shortcuts.rb +14 -40
- data/lib/generators/apotomo/widget_generator.rb +8 -9
- data/lib/generators/erb/widget_generator.rb +17 -0
- data/lib/generators/haml/widget_generator.rb +20 -0
- data/lib/generators/{apotomo/templates → templates}/view.erb +1 -1
- data/lib/generators/templates/view.haml +4 -0
- data/lib/generators/{apotomo/templates → templates}/widget.rb +1 -1
- data/lib/generators/{apotomo/templates → templates}/widget_test.rb +1 -1
- data/lib/generators/test_unit/widget_generator.rb +14 -0
- data/test/rails/caching_test.rb +10 -17
- data/test/rails/controller_methods_test.rb +9 -81
- data/test/rails/rails_integration_test.rb +76 -60
- data/test/rails/view_helper_test.rb +17 -28
- data/test/rails/widget_generator_test.rb +19 -31
- data/test/support/test_case_methods.rb +6 -20
- data/test/test_helper.rb +15 -25
- data/test/unit/event_handler_test.rb +1 -0
- data/test/unit/event_methods_test.rb +20 -8
- data/test/unit/event_test.rb +5 -0
- data/test/unit/javascript_generator_test.rb +19 -19
- data/test/unit/render_test.rb +17 -112
- data/test/unit/request_processor_test.rb +73 -111
- data/test/unit/test_case_test.rb +13 -7
- data/test/unit/widget_shortcuts_test.rb +24 -53
- data/test/unit/widget_test.rb +76 -36
- data/test/widgets/mouse/eat.erb +1 -0
- data/test/{fixtures → widgets}/mouse/eating.html.erb +0 -0
- data/test/{fixtures → widgets}/mouse/educate.html.erb +0 -0
- data/test/{fixtures → widgets}/mouse/feed.html.erb +0 -0
- data/test/{fixtures → widgets}/mouse/make_me_squeak.html.erb +0 -0
- data/test/{fixtures → widgets}/mouse/posing.html.erb +0 -0
- data/test/widgets/mouse/snuggle.html.erb +1 -0
- metadata +32 -50
- data/lib/apotomo/container_widget.rb +0 -10
- data/lib/apotomo/persistence.rb +0 -112
- data/lib/apotomo/rails/view_methods.rb +0 -7
- data/lib/apotomo/stateful_widget.rb +0 -29
- data/lib/apotomo/transition.rb +0 -46
- data/lib/generators/apotomo/templates/view.haml +0 -4
- data/test/dummy/log/production.log +0 -0
- data/test/dummy/log/server.log +0 -0
- data/test/dummy/public/javascripts/application.js +0 -2
- data/test/dummy/public/javascripts/controls.js +0 -965
- data/test/dummy/public/javascripts/dragdrop.js +0 -974
- data/test/dummy/public/javascripts/effects.js +0 -1123
- data/test/dummy/public/javascripts/prototype.js +0 -6001
- data/test/dummy/public/javascripts/rails.js +0 -175
- data/test/dummy/script/rails +0 -6
- data/test/dummy/tmp/app/cells/mouse_widget.rb +0 -11
- data/test/dummy/tmp/app/cells/mouse_widget/snuggle.html.erb +0 -7
- data/test/dummy/tmp/app/cells/mouse_widget/squeak.html.erb +0 -7
- data/test/dummy/tmp/test/widgets/mouse_widget_test.rb +0 -12
- data/test/fixtures/application_widget_tree.rb +0 -2
- data/test/fixtures/mouse/snuggle.html.erb +0 -1
- data/test/rails/view_methods_test.rb +0 -38
- data/test/unit/container_test.rb +0 -21
- data/test/unit/invoke_test.rb +0 -126
- data/test/unit/persistence_test.rb +0 -201
- data/test/unit/stateful_widget_test.rb +0 -58
- data/test/unit/test_addressing.rb +0 -110
- data/test/unit/test_jump_to_state.rb +0 -89
- data/test/unit/test_tab_panel.rb +0 -71
- data/test/unit/transition_test.rb +0 -34
@@ -5,14 +5,12 @@ class ViewHelperTest < Apotomo::TestCase
|
|
5
5
|
include ActionDispatch::Assertions::DomAssertions
|
6
6
|
include Apotomo::TestCase::TestController
|
7
7
|
|
8
|
-
# TODO:
|
9
|
-
class MouseWidget < Apotomo::Widget
|
10
|
-
end
|
8
|
+
# TODO: use Cell::TestCase#in_view here.
|
11
9
|
def in_view(subject, &block)
|
12
10
|
if subject.kind_of?(Apotomo::Widget)
|
13
|
-
subject.
|
11
|
+
subject.options[:block] = block
|
14
12
|
else
|
15
|
-
subject = subject.new(@controller, 'mum', :
|
13
|
+
subject = subject.new(@controller, 'mum', :block => block)
|
16
14
|
end
|
17
15
|
|
18
16
|
setup_test_states_in(subject) unless subject.respond_to?(:in_view)# add #in_view state to subject cell.
|
@@ -21,8 +19,8 @@ class ViewHelperTest < Apotomo::TestCase
|
|
21
19
|
|
22
20
|
subject.invoke(:in_view)
|
23
21
|
end
|
24
|
-
def mouse_mock(id='mum',
|
25
|
-
mouse = MouseWidget.new(parent_controller, id,
|
22
|
+
def mouse_mock(id='mum', opts={}, &block)
|
23
|
+
mouse = MouseWidget.new(parent_controller, id, opts)
|
26
24
|
mouse.instance_eval &block if block_given?
|
27
25
|
mouse
|
28
26
|
end
|
@@ -67,27 +65,18 @@ class ViewHelperTest < Apotomo::TestCase
|
|
67
65
|
assert_equal('mum', in_view(MouseWidget){ widget_id })
|
68
66
|
end
|
69
67
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
def in_view
|
83
|
-
render :suppress_js => true
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
assert_equal(nil, in_view(mum) do
|
88
|
-
widget_javascript { 'alert("Beer!")' }
|
89
|
-
end)
|
90
|
-
end
|
68
|
+
should "respond to #render_widget" do
|
69
|
+
mum = mouse_mock
|
70
|
+
mum << mouse_mock('kid')
|
71
|
+
assert_equal("<div id=\"kid\">burp!</div>\n", in_view(mum){ render_widget 'kid', :eat })
|
72
|
+
end
|
73
|
+
|
74
|
+
should "respond to #children" do
|
75
|
+
mum = mouse_mock
|
76
|
+
mum << mouse_mock('kid')
|
77
|
+
assert_equal("<div id=\"kid\">burp!</div>\n", in_view(mum) do
|
78
|
+
children.inject("") { |html, child| html += render_widget(child, :eat) }.html_safe
|
79
|
+
end)
|
91
80
|
end
|
92
81
|
end
|
93
82
|
end
|
@@ -7,44 +7,32 @@ class WidgetGeneratorTest < Rails::Generators::TestCase
|
|
7
7
|
tests ::Apotomo::Generators::WidgetGenerator
|
8
8
|
|
9
9
|
context "Running rails g apotomo::widget" do
|
10
|
-
context "
|
10
|
+
context "Gerbil squeak snuggle" do
|
11
11
|
should "create the standard assets" do
|
12
12
|
|
13
|
-
run_generator %w(
|
13
|
+
run_generator %w(Gerbil squeak snuggle -t test_unit)
|
14
14
|
|
15
|
-
assert_file "app/
|
16
|
-
assert_file "app/
|
17
|
-
assert_file "app/
|
18
|
-
assert_file "app/
|
19
|
-
assert_file "app/
|
20
|
-
assert_file "app/
|
15
|
+
assert_file "app/widgets/gerbil_widget.rb", /class GerbilWidget < Apotomo::Widget/
|
16
|
+
assert_file "app/widgets/gerbil_widget.rb", /def snuggle/
|
17
|
+
assert_file "app/widgets/gerbil_widget.rb", /def squeak/
|
18
|
+
assert_file "app/widgets/gerbil/snuggle.html.erb", %r(app/widgets/gerbil/snuggle\.html\.erb)
|
19
|
+
assert_file "app/widgets/gerbil/snuggle.html.erb", %r(<p>)
|
20
|
+
assert_file "app/widgets/gerbil/squeak.html.erb", %r(app/widgets/gerbil/squeak\.html\.erb)
|
21
21
|
|
22
|
-
assert_file "test/widgets/
|
23
|
-
assert_file "test/widgets/
|
22
|
+
assert_file "test/widgets/gerbil_widget_test.rb", %r(class GerbilWidgetTest < Apotomo::TestCase)
|
23
|
+
assert_file "test/widgets/gerbil_widget_test.rb", %r(widget\(:gerbil, 'me'\))
|
24
24
|
end
|
25
25
|
|
26
|
-
should "create haml assets with
|
27
|
-
run_generator %w(
|
26
|
+
should "create haml assets with -e haml" do
|
27
|
+
run_generator %w(Gerbil squeak snuggle -e haml -t test_unit)
|
28
28
|
|
29
|
-
assert_file "app/
|
30
|
-
assert_file "app/
|
31
|
-
assert_file "app/
|
32
|
-
assert_file "app/
|
33
|
-
assert_file "app/
|
34
|
-
assert_file "app/
|
35
|
-
assert_file "test/widgets/
|
36
|
-
end
|
37
|
-
|
38
|
-
should "create haml assets with -t haml" do
|
39
|
-
run_generator %w(MouseWidget snuggle squeak -t haml)
|
40
|
-
|
41
|
-
assert_file "app/cells/mouse_widget.rb", /class MouseWidget < Apotomo::Widget/
|
42
|
-
assert_file "app/cells/mouse_widget.rb", /def snuggle/
|
43
|
-
assert_file "app/cells/mouse_widget.rb", /def squeak/
|
44
|
-
assert_file "app/cells/mouse_widget/snuggle.html.haml", %r(app/cells/mouse_widget/snuggle\.html\.haml)
|
45
|
-
assert_file "app/cells/mouse_widget/snuggle.html.haml", %r(%p)
|
46
|
-
assert_file "app/cells/mouse_widget/squeak.html.haml", %r(app/cells/mouse_widget/squeak\.html\.haml)
|
47
|
-
assert_file "test/widgets/mouse_widget_test.rb"
|
29
|
+
assert_file "app/widgets/gerbil_widget.rb", /class GerbilWidget < Apotomo::Widget/
|
30
|
+
assert_file "app/widgets/gerbil_widget.rb", /def snuggle/
|
31
|
+
assert_file "app/widgets/gerbil_widget.rb", /def squeak/
|
32
|
+
assert_file "app/widgets/gerbil/snuggle.html.haml", %r(app/widgets/gerbil/snuggle\.html\.haml)
|
33
|
+
assert_file "app/widgets/gerbil/snuggle.html.haml", %r(%p)
|
34
|
+
assert_file "app/widgets/gerbil/squeak.html.haml", %r(app/widgets/gerbil/squeak\.html\.haml)
|
35
|
+
assert_file "test/widgets/gerbil_widget_test.rb"
|
48
36
|
end
|
49
37
|
end
|
50
38
|
end
|
@@ -1,21 +1,21 @@
|
|
1
1
|
module Apotomo
|
2
2
|
module TestCaseMethods
|
3
3
|
# Provides a ready-to-use mouse widget instance.
|
4
|
-
def mouse_mock(id='mouse',
|
5
|
-
mouse =
|
4
|
+
def mouse_mock(id='mouse', opts={}, &block)
|
5
|
+
mouse = MouseWidget.new(parent_controller, id, opts)
|
6
6
|
mouse.instance_eval &block if block_given?
|
7
7
|
mouse
|
8
8
|
end
|
9
9
|
|
10
10
|
def mouse_class_mock(&block)
|
11
|
-
klass = Class.new(
|
11
|
+
klass = Class.new(MouseWidget)
|
12
12
|
klass.instance_eval &block if block_given?
|
13
13
|
klass
|
14
14
|
end
|
15
15
|
|
16
16
|
def mum_and_kid!
|
17
|
-
@mum = mouse_mock('mum'
|
18
|
-
@mum << @kid = mouse_mock('kid'
|
17
|
+
@mum = mouse_mock('mum')
|
18
|
+
@mum << @kid = mouse_mock('kid')
|
19
19
|
|
20
20
|
@mum.respond_to_event :squeak, :with => :answer_squeak
|
21
21
|
@mum.respond_to_event :squeak, :from => 'kid', :with => :alert
|
@@ -43,25 +43,11 @@ module Apotomo
|
|
43
43
|
@controller = Class.new(ActionController::Base) do
|
44
44
|
def self.default_url_options; {:controller => :barn}; end
|
45
45
|
end.new
|
46
|
-
@controller.class.instance_eval { include Apotomo::Rails::ControllerMethods }
|
47
46
|
@controller.extend ActionController::UrlWriter
|
48
47
|
@controller.params = {}
|
49
|
-
### FIXME: @controller.session = {}
|
50
48
|
end
|
51
49
|
|
52
|
-
|
53
|
-
Apotomo::StatefulWidget.freeze_for(session, widget)
|
54
|
-
|
55
|
-
session = Marshal.load(Marshal.dump(session))
|
56
|
-
|
57
|
-
Apotomo::StatefulWidget.thaw_for(@controller, session, )
|
58
|
-
end
|
59
|
-
|
60
|
-
def hibernate(widget, session = {})
|
61
|
-
Apotomo::StatefulWidget.freeze_for(session, widget)
|
62
|
-
session = Marshal.load(Marshal.dump(session))
|
63
|
-
Apotomo::StatefulWidget.thaw_for(session, widget('apotomo/widget', 'root'))
|
64
|
-
end
|
50
|
+
|
65
51
|
|
66
52
|
module TestController
|
67
53
|
def setup
|
data/test/test_helper.rb
CHANGED
@@ -4,15 +4,15 @@ require 'bundler'
|
|
4
4
|
Bundler.setup
|
5
5
|
|
6
6
|
require 'shoulda'
|
7
|
-
require 'cells'
|
8
|
-
require 'apotomo'
|
9
7
|
|
10
8
|
ENV['RAILS_ENV'] = 'test'
|
11
9
|
require "dummy/config/environment"
|
12
10
|
require "rails/test_help" # sets up ActionController::TestCase's @routes
|
13
11
|
|
12
|
+
require 'cells'
|
13
|
+
require 'apotomo'
|
14
14
|
|
15
|
-
|
15
|
+
Apotomo::Widget.append_view_path(File.expand_path(File.dirname(__FILE__) + "/widgets"))
|
16
16
|
|
17
17
|
# Load test support files.
|
18
18
|
require File.join(File.dirname(__FILE__), "support/test_case_methods")
|
@@ -37,33 +37,23 @@ module Farm
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
|
41
|
-
class MouseCell < Apotomo::StatefulWidget
|
42
|
-
def eating; render; end
|
43
|
-
def squeak; render; end
|
44
|
-
def educate; render; end
|
45
|
-
def snooze; render; end
|
46
|
-
def listen; render; end
|
47
|
-
def answer_squeak; render; end
|
48
|
-
def peek; render; end
|
49
|
-
def alert; end
|
50
|
-
def escape; end
|
51
|
-
def snuggle; end
|
40
|
+
class MouseWidget < Apotomo::Widget
|
52
41
|
end
|
53
42
|
|
54
|
-
|
55
|
-
class
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
def jump
|
62
|
-
jump_to_state :check_state
|
43
|
+
|
44
|
+
class MouseWidget < Apotomo::Widget
|
45
|
+
def squeak
|
46
|
+
render :text => "squeak!"
|
47
|
+
end
|
48
|
+
def eating
|
49
|
+
render
|
63
50
|
end
|
51
|
+
def eat
|
52
|
+
render
|
53
|
+
end
|
54
|
+
|
64
55
|
end
|
65
56
|
|
66
|
-
|
67
57
|
# Enable dynamic states so we can do Cell.class_eval { def ... } at runtime.
|
68
58
|
Apotomo::Widget.class_eval do
|
69
59
|
def action_method?(*); true; end
|
@@ -43,13 +43,25 @@ class EventMethodsTest < Test::Unit::TestCase
|
|
43
43
|
@mum.respond_to_event :answer_squeak
|
44
44
|
@mum.fire :answer_squeak
|
45
45
|
assert_equal ['answer squeak'], @mum.list
|
46
|
+
end
|
47
|
+
|
48
|
+
should "make pass the event into the triggered state" do
|
49
|
+
@mum.instance_eval do
|
50
|
+
respond_to_event :footsteps
|
51
|
+
|
52
|
+
def footsteps(evt)
|
53
|
+
list << evt
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
@mum.trigger :footsteps, "near"
|
58
|
+
assert_kind_of Apotomo::Event, @mum.list.last
|
46
59
|
end
|
47
60
|
|
48
61
|
should "accept payload data for the event" do
|
49
62
|
@mum.respond_to_event :answer_squeak
|
50
63
|
@mum.instance_eval do
|
51
|
-
def answer_squeak
|
52
|
-
evt = @opts[:event]
|
64
|
+
def answer_squeak(evt)
|
53
65
|
list << evt.data
|
54
66
|
end
|
55
67
|
end
|
@@ -60,26 +72,26 @@ class EventMethodsTest < Test::Unit::TestCase
|
|
60
72
|
|
61
73
|
context "#responds_to_event in class context" do
|
62
74
|
setup do
|
63
|
-
class
|
75
|
+
class AdultMouse < MouseWidget
|
64
76
|
responds_to_event :peep, :with => :answer_squeak
|
65
77
|
end
|
66
|
-
class
|
78
|
+
class BabyMouse < AdultMouse
|
67
79
|
responds_to_event :footsteps, :with => :squeak
|
68
80
|
end
|
69
81
|
end
|
70
82
|
|
71
83
|
should "add the handlers at creation time" do
|
72
|
-
assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'mum', :state => :answer_squeak)],
|
84
|
+
assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'mum', :state => :answer_squeak)], AdultMouse.new(parent_controller, 'mum', :show).event_table.all_handlers_for(:peep, 'mum')
|
73
85
|
end
|
74
86
|
|
75
87
|
should "not inherit handlers for now" do
|
76
|
-
assert_equal [],
|
88
|
+
assert_equal [], BabyMouse.new(parent_controller, 'kid', :show).event_table.all_handlers_for(:peep, 'kid')
|
77
89
|
end
|
78
90
|
|
79
91
|
should "not add the same handler to each instance" do
|
80
|
-
assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'mum', :state => :answer_squeak)],
|
92
|
+
assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'mum', :state => :answer_squeak)], AdultMouse.new(parent_controller, 'mum', :show).event_table.all_handlers_for(:peep, 'mum')
|
81
93
|
|
82
|
-
assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'dad', :state => :answer_squeak)],
|
94
|
+
assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'dad', :state => :answer_squeak)], AdultMouse.new(parent_controller, 'dad', :show).event_table.all_handlers_for(:peep, 'dad')
|
83
95
|
end
|
84
96
|
end
|
85
97
|
|
data/test/unit/event_test.rb
CHANGED
@@ -17,6 +17,11 @@ class EventTest < Test::Unit::TestCase
|
|
17
17
|
assert_equal({:volume => :loud}, @event.data)
|
18
18
|
end
|
19
19
|
|
20
|
+
should "delegate #[] to data" do
|
21
|
+
@event = Apotomo::Event.new(:footsteps, 'mum', {:volume => :loud})
|
22
|
+
assert_equal :loud, @event[:volume]
|
23
|
+
end
|
24
|
+
|
20
25
|
should "complain when serialized" do
|
21
26
|
assert_raises RuntimeError do
|
22
27
|
Marshal.dump(Apotomo::Event.new(:footsteps, 'mum'))
|
@@ -16,21 +16,21 @@ class JavascriptGeneratorTest < Test::Unit::TestCase
|
|
16
16
|
should "respond to prototype" do
|
17
17
|
assert_respond_to @gen, :prototype
|
18
18
|
end
|
19
|
-
|
20
|
-
should "respond to xhr" do
|
21
|
-
assert_equal "new Ajax.Request(\"/drink/beer?source=nick\")", @gen.xhr('/drink/beer?source=nick')
|
22
|
-
end
|
23
19
|
|
24
20
|
should "respond to replace" do
|
25
21
|
assert_equal "$(\"drinks\").replace(\"EMPTY!\")", @gen.replace(:drinks, 'EMPTY!')
|
26
22
|
end
|
27
23
|
|
24
|
+
should "respond to replace_id" do
|
25
|
+
assert_equal "$(\"drinks\").replace(\"EMPTY!\")", @gen.replace_id("drinks", 'EMPTY!')
|
26
|
+
end
|
27
|
+
|
28
28
|
should "respond to update" do
|
29
29
|
assert_equal "$(\"drinks\").update(\"<li id=\\\"beer\\\"><\\/li>\")", @gen.update(:drinks, '<li id="beer"></li>')
|
30
30
|
end
|
31
31
|
|
32
|
-
should "respond to
|
33
|
-
assert_equal "
|
32
|
+
should "respond to update_id" do
|
33
|
+
assert_equal "$(\"drinks\").update(\"EMPTY!\")", @gen.update_id("drinks", 'EMPTY!')
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -42,21 +42,21 @@ class JavascriptGeneratorTest < Test::Unit::TestCase
|
|
42
42
|
should "respond to right" do
|
43
43
|
assert_respond_to @gen, :right
|
44
44
|
end
|
45
|
-
|
46
|
-
should "respond to xhr" do
|
47
|
-
assert_equal "new Xhr(\"/drink/beer?source=nick\", {evalScripts:true}).send()", @gen.xhr('/drink/beer?source=nick')
|
48
|
-
end
|
49
45
|
|
50
46
|
should "respond to replace" do
|
51
47
|
assert_equal "$(\"drinks\").replace(\"EMPTY!\")", @gen.replace(:drinks, 'EMPTY!')
|
52
48
|
end
|
53
49
|
|
50
|
+
should "respond to replace_id" do
|
51
|
+
assert_equal "$(\"drinks\").replace(\"EMPTY!\")", @gen.replace_id("drinks", 'EMPTY!')
|
52
|
+
end
|
53
|
+
|
54
54
|
should "respond to update" do
|
55
55
|
assert_equal "$(\"drinks\").update(\"<li id=\\\"beer\\\"><\\/li>\")", @gen.update(:drinks, '<li id="beer"></li>')
|
56
56
|
end
|
57
57
|
|
58
|
-
should "respond to
|
59
|
-
assert_equal "
|
58
|
+
should "respond to update_id" do
|
59
|
+
assert_equal "$(\"drinks\").update(\"EMPTY!\")", @gen.update_id("drinks", 'EMPTY!')
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -69,20 +69,20 @@ class JavascriptGeneratorTest < Test::Unit::TestCase
|
|
69
69
|
assert_respond_to @gen, :jquery
|
70
70
|
end
|
71
71
|
|
72
|
-
should "respond to
|
73
|
-
assert_equal "
|
72
|
+
should "respond to replace" do
|
73
|
+
assert_equal "$(\"#drinks\").replaceWith(\"EMPTY!\")", @gen.replace("#drinks", 'EMPTY!')
|
74
74
|
end
|
75
75
|
|
76
|
-
should "respond to
|
77
|
-
assert_equal "$(\"#drinks\").replaceWith(\"EMPTY!\")", @gen.
|
76
|
+
should "respond to replace_id" do
|
77
|
+
assert_equal "$(\"#drinks\").replaceWith(\"EMPTY!\")", @gen.replace_id("drinks", 'EMPTY!')
|
78
78
|
end
|
79
79
|
|
80
80
|
should "respond to update" do
|
81
|
-
assert_equal "$(\"#drinks\").html(\"<li id=\\\"beer\\\"><\\/li>\")", @gen.update(
|
81
|
+
assert_equal "$(\"#drinks\").html(\"<li id=\\\"beer\\\"><\\/li>\")", @gen.update("#drinks", '<li id="beer"></li>')
|
82
82
|
end
|
83
83
|
|
84
|
-
should "respond to
|
85
|
-
assert_equal "
|
84
|
+
should "respond to update_id" do
|
85
|
+
assert_equal "$(\"#drinks\").html(\"EMPTY!\")", @gen.update_id("drinks", 'EMPTY!')
|
86
86
|
end
|
87
87
|
end
|
88
88
|
end
|
data/test/unit/render_test.rb
CHANGED
@@ -3,13 +3,13 @@ require 'test_helper'
|
|
3
3
|
class RenderTest < ActionView::TestCase
|
4
4
|
include Apotomo::TestCaseMethods::TestController
|
5
5
|
|
6
|
-
context "
|
6
|
+
context "#render" do
|
7
7
|
setup do
|
8
|
-
@mum = mouse_mock
|
8
|
+
@mum = mouse_mock('mum', :eating)
|
9
9
|
end
|
10
10
|
|
11
11
|
should "per default display the state content framed in a div" do
|
12
|
-
assert_equal '<div id="
|
12
|
+
assert_equal '<div id="mum">burp!</div>', @mum.invoke(:eating)
|
13
13
|
end
|
14
14
|
|
15
15
|
context "with :text" do
|
@@ -18,31 +18,16 @@ class RenderTest < ActionView::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
should "render the :text" do
|
21
|
-
assert_equal "burp!!!", @mum.invoke
|
21
|
+
assert_equal "burp!!!", @mum.invoke(:eating)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
setup do
|
28
|
-
@mum.instance_eval do
|
29
|
-
def snuggle; render; end
|
30
|
-
self.class.send :attr_reader, :suppress_js
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
should "per default be false" do
|
35
|
-
@mum.invoke :snuggle
|
36
|
-
assert !@mum.suppress_js
|
37
|
-
end
|
25
|
+
should "accept :state and options" do
|
26
|
+
@mum.instance_eval { def eat(what); render :text => "#{what} today?"; end }
|
38
27
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
43
|
-
@mum.invoke :snuggle
|
44
|
-
assert @mum.suppress_js
|
45
|
-
end
|
28
|
+
assert_equal "Rice today?", @mum.render({:state => :eat}, "Rice")
|
29
|
+
assert_match "Rice today?", @mum.update({:state => :eat}, "Rice")
|
30
|
+
assert_match "Rice today?", @mum.replace({:state => :eat}, "Rice")
|
46
31
|
end
|
47
32
|
|
48
33
|
should "expose its instance variables in the rendered view" do
|
@@ -57,21 +42,6 @@ class RenderTest < ActionView::TestCase
|
|
57
42
|
end
|
58
43
|
|
59
44
|
context "with #emit" do
|
60
|
-
setup do
|
61
|
-
@kid = mouse_mock('kid', :squeak)
|
62
|
-
@kid.instance_eval do
|
63
|
-
def squeak
|
64
|
-
render :text => "squeeeeaaak"
|
65
|
-
end
|
66
|
-
|
67
|
-
def render(*)
|
68
|
-
@rendered = true
|
69
|
-
super
|
70
|
-
end
|
71
|
-
def rendered?; @rendered; end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
45
|
context "and :text" do
|
76
46
|
setup do
|
77
47
|
@mum.instance_eval do
|
@@ -84,25 +54,6 @@ class RenderTest < ActionView::TestCase
|
|
84
54
|
should "just return the plain :text" do
|
85
55
|
assert_equal 'squeak();', @mum.invoke(:squeak)
|
86
56
|
end
|
87
|
-
|
88
|
-
should "not render children" do
|
89
|
-
@mum << @kid
|
90
|
-
@mum.invoke(:squeak)
|
91
|
-
|
92
|
-
assert_not @kid.rendered?
|
93
|
-
end
|
94
|
-
|
95
|
-
should "allow rendering children" do
|
96
|
-
@mum.instance_eval do
|
97
|
-
def squeak
|
98
|
-
emit :text => "squeak();", :render_children => true
|
99
|
-
end
|
100
|
-
end
|
101
|
-
@mum << @kid
|
102
|
-
@mum.invoke(:squeak)
|
103
|
-
|
104
|
-
assert @kid.rendered?
|
105
|
-
end
|
106
57
|
end
|
107
58
|
|
108
59
|
context "and no options" do
|
@@ -115,13 +66,7 @@ class RenderTest < ActionView::TestCase
|
|
115
66
|
end
|
116
67
|
|
117
68
|
should "render the view" do
|
118
|
-
assert_equal "<div id=\"
|
119
|
-
end
|
120
|
-
|
121
|
-
should "render the children, too" do
|
122
|
-
@mum << @kid
|
123
|
-
@mum.invoke(:eating)
|
124
|
-
assert @kid.rendered?
|
69
|
+
assert_equal "<div id=\"mum\">burp!</div>", @mum.invoke(:eating)
|
125
70
|
end
|
126
71
|
end
|
127
72
|
|
@@ -129,36 +74,25 @@ class RenderTest < ActionView::TestCase
|
|
129
74
|
setup do
|
130
75
|
@mum.instance_eval do
|
131
76
|
def squeak
|
132
|
-
emit :view => :
|
77
|
+
emit :view => :eating
|
133
78
|
end
|
134
79
|
end
|
135
80
|
end
|
136
81
|
|
137
82
|
should "render the :view" do
|
138
|
-
assert_equal "<div id=\"
|
139
|
-
end
|
140
|
-
|
141
|
-
should "render the children" do
|
142
|
-
@mum << @kid
|
143
|
-
|
144
|
-
assert_equal "<div id=\"mouse\"><snuggle>squeeeeaaak</snuggle></div>\n", @mum.invoke(:squeak)
|
145
|
-
assert @kid.rendered?
|
83
|
+
assert_equal "<div id=\"mum\">burp!</div>", @mum.invoke(:squeak)
|
146
84
|
end
|
147
85
|
end
|
148
86
|
end
|
149
87
|
|
150
88
|
context "with #update" do
|
151
|
-
setup do
|
152
|
-
Apotomo.js_framework = :prototype
|
153
|
-
end
|
154
|
-
|
155
89
|
should "wrap the :text in an update statement" do
|
156
90
|
@mum.instance_eval do
|
157
91
|
def squeak
|
158
92
|
update :text => "squeak!"
|
159
93
|
end
|
160
94
|
end
|
161
|
-
assert_equal "$(\"
|
95
|
+
assert_equal "$(\"#mum\").html(\"squeak!\")", @mum.invoke(:squeak)
|
162
96
|
end
|
163
97
|
|
164
98
|
should "accept :selector" do
|
@@ -167,22 +101,18 @@ class RenderTest < ActionView::TestCase
|
|
167
101
|
update :text => '<div id="mum">squeak!</div>', :selector => "div#mouse"
|
168
102
|
end
|
169
103
|
end
|
170
|
-
assert_equal "$(\"div#mouse\").
|
104
|
+
assert_equal "$(\"div#mouse\").html(\"<div id=\\\"mum\\\">squeak!<\\/div>\")", @mum.invoke(:squeak)
|
171
105
|
end
|
172
106
|
end
|
173
107
|
|
174
108
|
context "with #replace" do
|
175
|
-
setup do
|
176
|
-
Apotomo.js_framework = :prototype
|
177
|
-
end
|
178
|
-
|
179
109
|
should "wrap the :text in a replace statement" do
|
180
110
|
@mum.instance_eval do
|
181
111
|
def squeak
|
182
112
|
replace :text => '<div id="mum">squeak!</div>'
|
183
113
|
end
|
184
114
|
end
|
185
|
-
assert_equal "$(\"
|
115
|
+
assert_equal "$(\"#mum\").replaceWith(\"<div id=\\\"mum\\\">squeak!<\\/div>\")", @mum.invoke(:squeak)
|
186
116
|
end
|
187
117
|
|
188
118
|
should "accept :selector" do
|
@@ -191,33 +121,8 @@ class RenderTest < ActionView::TestCase
|
|
191
121
|
replace :text => '<div id="mum">squeak!</div>', :selector => "div#mouse"
|
192
122
|
end
|
193
123
|
end
|
194
|
-
assert_equal "$(\"div#mouse\").
|
124
|
+
assert_equal "$(\"div#mouse\").replaceWith(\"<div id=\\\"mum\\\">squeak!<\\/div>\")", @mum.invoke(:squeak)
|
195
125
|
end
|
196
126
|
end
|
197
|
-
end
|
198
|
-
|
199
|
-
context "rendering a widget family" do
|
200
|
-
setup do
|
201
|
-
@mum = mouse_mock('mum', :snuggle) do
|
202
|
-
def snuggle; render; end
|
203
|
-
end
|
204
|
-
|
205
|
-
@mum << @kid = mouse_mock('kid')
|
206
|
-
end
|
207
|
-
|
208
|
-
should "per default render kid's content inside mums div with rendered_children" do
|
209
|
-
assert_equal "<div id=\"mum\"><snuggle><div id=\"kid\">burp!</div></snuggle></div>\n", @mum.invoke(:snuggle)
|
210
|
-
end
|
211
|
-
|
212
|
-
should "skip kids if :render_children=>false but still provide a rendered_children hash" do
|
213
|
-
@mum.instance_eval do
|
214
|
-
def snuggle; render :render_children => false; end
|
215
|
-
end
|
216
|
-
|
217
|
-
assert_equal "<div id=\"mum\"><snuggle></snuggle></div>\n", @mum.invoke(:snuggle)
|
218
|
-
end
|
219
|
-
|
220
|
-
should_eventually "provide an ordered rendered_children hash"
|
221
|
-
end
|
222
|
-
|
127
|
+
end
|
223
128
|
end
|