apotomo 1.0.5 → 1.1.0.rc1
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/.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
|