cuca 0.03 → 0.04

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.
@@ -0,0 +1,123 @@
1
+ require 'test/unit'
2
+
3
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
4
+
5
+ $cuca_path = File.expand_path("#{File.dirname(__FILE__)}/test_app")
6
+ require 'cuca'
7
+ require 'cuca/generator/markaby'
8
+
9
+ # Outputs parameters
10
+ class TestMabAWidget < Cuca::Widget
11
+ include Cuca::Generator::Markaby
12
+
13
+ def output(param1='one', param2='two')
14
+ mab { b { param1}; b {param2}}
15
+ end
16
+ end
17
+
18
+ # Outputs a markaby block
19
+ class TestMabBWidget < Cuca::Widget
20
+ include Cuca::Generator::Markaby
21
+
22
+ def output(&block)
23
+ mab { b { text capture(&block) } }
24
+ end
25
+ end
26
+
27
+ # Takes intance variable @i and output's it
28
+ class TestMabCWidget < Cuca::Widget
29
+ include Cuca::Generator::Markaby
30
+
31
+ def output()
32
+ @i = 'test'
33
+ mab { text @i }
34
+ end
35
+ end
36
+
37
+ # takes instance variable from TestC and mab's it with 'i'
38
+ class TestMabDWidget < TestMabCWidget
39
+ include Cuca::Generator::Markaby
40
+
41
+ def output()
42
+ super
43
+ clear
44
+ mab { i { @i } }
45
+ end
46
+ end
47
+
48
+ # should produce 'onetwothree' - check multicall
49
+ class TestMabEWidget < TestMabCWidget
50
+ include Cuca::Generator::Markaby
51
+
52
+ def output()
53
+ mab { 'one' }
54
+ mab { 'two' }
55
+ s = mabtext { 'three' }
56
+ content << s
57
+ end
58
+ end
59
+
60
+ # uses instance methods as markaby reference, outputs '<b>TestMe</b>'
61
+ class TestMabFWidget < Cuca::Widget
62
+ include Cuca::Generator::Markaby
63
+
64
+ def testme
65
+ 'TestMe'
66
+ end
67
+
68
+ def output
69
+ mab { b { testme } }
70
+ end
71
+ end
72
+
73
+ # G embedds F
74
+ class TestMabGWidget < Cuca::Widget
75
+ include Cuca::Generator::Markaby
76
+
77
+ def output
78
+ mab { i { TestMabF() }}
79
+ end
80
+ end
81
+
82
+
83
+
84
+ class TestGeneratorMarkaby < Test::Unit::TestCase
85
+
86
+ def test_basic
87
+ t = TestMabAWidget.new
88
+ assert_equal '<b>one</b><b>two</b>', t.to_s
89
+
90
+ t = TestMabAWidget.new(:args => ['xxx', 'yyy'])
91
+ assert_equal '<b>xxx</b><b>yyy</b>', t.to_s
92
+ end
93
+
94
+ def test_markabyblock
95
+ t = TestMabBWidget.new { i { 'abc' }}
96
+ assert_equal '<b><i>abc</i></b>', t.to_s
97
+
98
+ t = TestMabBWidget.new { h1 { 'cde' }}
99
+ assert_equal '<b><h1>cde</h1></b>', t.to_s
100
+ end
101
+
102
+ def test_ivar
103
+ t = TestMabCWidget.new
104
+ assert_equal 'test', t.to_s
105
+
106
+ t2 = TestMabDWidget.new
107
+ assert_equal '<i>test</i>', t2.to_s
108
+ end
109
+
110
+ def test_multicall
111
+ assert_equal 'onetwothree', TestMabEWidget.new.to_s
112
+ end
113
+
114
+ def test_instancemethod
115
+ assert_equal '<b>TestMe</b>', TestMabFWidget.new.to_s
116
+ end
117
+
118
+ def test_embedding_others
119
+ assert_equal '<i><b>TestMe</b></i>', TestMabGWidget.new.to_s
120
+ end
121
+
122
+
123
+ end
@@ -0,0 +1,76 @@
1
+ require 'test/unit'
2
+
3
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
4
+
5
+ $cuca_path = File.expand_path("#{File.dirname(__FILE__)}/test_app")
6
+ require 'cuca'
7
+ require 'cuca/generator/view'
8
+
9
+ # Cuca::App.configure do |conf|
10
+ # conf.view_directory="#{$cuca_path}/app/_views"
11
+ # end
12
+
13
+ class TestViewAWidget < Cuca::Widget
14
+ include Cuca::Generator::View
15
+
16
+ def output
17
+ @test = 'TEST'
18
+ view('test_template.rhtml')
19
+ end
20
+ end
21
+
22
+ # test viewtext
23
+ class TestViewBWidget < Cuca::Widget
24
+ include Cuca::Generator::View
25
+
26
+ def output
27
+ @test = 'TEST'
28
+ @_content = viewtext('test_template.rhtml')
29
+ end
30
+ end
31
+
32
+
33
+ class TestViewCWidget < Cuca::Widget
34
+ include Cuca::Generator::View
35
+
36
+ def output
37
+ @test = 'TEST'
38
+ view_p(templ)
39
+ end
40
+
41
+ def templ
42
+ return <<-'EOT'
43
+ <b><%= @test %></b>
44
+ EOT
45
+ end
46
+ end
47
+
48
+ class TestViewDWidget < Cuca::Widget
49
+ include Cuca::Generator::View
50
+
51
+ def output
52
+ @test = 'TEST'
53
+ @_content = viewtext_p(templ)
54
+ end
55
+
56
+ def templ
57
+ return <<-'EOT'
58
+ <b><%= @test %></b>
59
+ EOT
60
+ end
61
+ end
62
+
63
+
64
+ class TestViewGenerator < Test::Unit::TestCase
65
+
66
+ def test_external_template
67
+ assert_equal '<p>TEST</p>', TestViewAWidget.new.to_s
68
+ assert_equal '<p>TEST</p>', TestViewBWidget.new.to_s
69
+ end
70
+
71
+ def test_internal_template
72
+ assert_equal '<b>TEST</b>', TestViewCWidget.new.to_s.strip
73
+ assert_equal '<b>TEST</b>', TestViewDWidget.new.to_s.strip
74
+ end
75
+
76
+ end
@@ -0,0 +1,20 @@
1
+
2
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
3
+
4
+ require 'test/unit'
5
+ require 'cuca/mimetypes'
6
+
7
+
8
+ class TestMimeTypes < Test::Unit::TestCase
9
+
10
+ def test_mimetypes
11
+ mt = Cuca::MimeTypes.new
12
+ # just check for frequently used extensions
13
+ assert_equal 'video/x-msvideo', mt['avi']
14
+ assert_equal 'text/javascript', mt['js']
15
+ assert_equal 'text/html', mt['html']
16
+ assert_equal 'audio/mpeg', mt['mp3']
17
+ end
18
+
19
+
20
+ end
@@ -0,0 +1 @@
1
+ This directory is for the unit tests, it doesn't make sense for anything else.
@@ -0,0 +1 @@
1
+ <p><%= @test %></p>
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ # Logfile created on Wed Jun 04 06:05:39 +0100 2008 by /
@@ -0,0 +1,96 @@
1
+ require 'test/unit'
2
+
3
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
4
+ require 'cuca'
5
+ require 'cuca/urlmap'
6
+
7
+
8
+ Cuca::App.configure do |c|
9
+ c.magic_prefix = '__'
10
+ end
11
+
12
+ #
13
+ # test/app
14
+ # /user
15
+ # list.rb
16
+ # /__username/
17
+ # index.rb
18
+ # /agent/
19
+ # index.rb
20
+ # list.rb
21
+
22
+
23
+ class URLMapTest < Test::Unit::TestCase
24
+ def path
25
+ File.expand_path("#{File.dirname(__FILE__)}/test_app/app")
26
+ # File.expand_path("#{__FILE__}/test_app/")
27
+ end
28
+
29
+ def test_user_list
30
+ map = ::Cuca::URLMap.new(path, '/user/list')
31
+ assert map.script.include?('/user/list.rb')
32
+ assert !map.subcall
33
+ assert_equal map.action, 'list'
34
+ assert map.script.include?(map.action_path) # action path must be part of script
35
+ assert map.script.include?(map.action_path_full)
36
+ end
37
+
38
+ def test_default_action
39
+ map = ::Cuca::URLMap.new(path, '/agent/')
40
+ assert_equal map.action, 'index'
41
+
42
+ assert_raise Cuca::RoutingError do
43
+ ::Cuca::URLMap.new(path, '/') # no default index
44
+ end
45
+ end
46
+
47
+ def test_user_list_subcall
48
+ map = ::Cuca::URLMap.new(path, '/user/-list-test')
49
+ assert map.subcall
50
+ assert_equal map.action, 'list'
51
+ assert map.script.include?('/user/list.rb')
52
+ end
53
+
54
+ def test_invalid_path
55
+ assert_raise Cuca::RoutingError do
56
+ ::Cuca::URLMap.new(path, '/some/invalid/path')
57
+ end
58
+ end
59
+
60
+ def test_invalid_subcall
61
+ assert_raise Cuca::RoutingError do
62
+ map = ::Cuca::URLMap.new(path, '/user/-list')
63
+ end
64
+ end
65
+
66
+ def test_magic_path
67
+ map = ::Cuca::URLMap.new(path, '/user/martin/')
68
+ assert map.assigns.has_key?('username')
69
+ assert_equal map.assigns['username'], 'martin'
70
+ end
71
+
72
+ def test_mount
73
+ Cuca::App.configure do |c|
74
+ c.mount = { '/user/__username/agent/' => "#{path}/agent/" }
75
+ end
76
+
77
+ map = ::Cuca::URLMap.new(path, '/user/martin/agent/index')
78
+ assert map.script.include?('/agent/index.rb')
79
+
80
+ Cuca::App.configure do |c|
81
+ c.mount = {}
82
+ end
83
+ end
84
+
85
+ def test_module
86
+ map = ::Cuca::URLMap.new(path, '/agent/index')
87
+ map2 = ::Cuca::URLMap.new(path, '/agent/list')
88
+ assert_equal map.action_module.object_id, map2.action_module.object_id
89
+
90
+ map2 = ::Cuca::URLMap.new(path, '/user/list')
91
+
92
+ assert !(map.action_module.object_id == map2.action_module.object_id)
93
+ end
94
+
95
+
96
+ end
@@ -0,0 +1,153 @@
1
+ require 'test/unit'
2
+
3
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
4
+
5
+ $cuca_path = File.expand_path("#{File.dirname(__FILE__)}/test_app")
6
+ require 'cuca'
7
+ require 'cuca/urlmap'
8
+
9
+
10
+ class TestAWidget < Cuca::Widget
11
+ def output(param1='one', param2='two')
12
+ content << "#{param1}-#{param2}"
13
+ @v1 = 'test1'
14
+ @v2 = 'test2'
15
+ end
16
+
17
+ def get_ivar(var)
18
+ instance_variable_get(var)
19
+ end
20
+ end
21
+
22
+ class TestBWidget < TestAWidget
23
+ def output(param1='one', param2='two')
24
+ super(param1, param2)
25
+ @_content = "(#{content})"
26
+ end
27
+ end
28
+
29
+ class TestCWidget < Cuca::Widget
30
+ def output(&block)
31
+ @_content = block.call
32
+ end
33
+ end
34
+
35
+
36
+ class TestBaseWidget < Cuca::Widget
37
+ class << self
38
+ def set_something(whatever)
39
+ define_attr_method 'something', whatever
40
+ end
41
+
42
+ def append_something(whatever)
43
+ s = run_attr_method('something') || []
44
+ s << whatever
45
+ define_attr_method 'something', s
46
+ end
47
+ end
48
+ end
49
+
50
+
51
+ class TestDWidget < TestBaseWidget
52
+ set_something 'stuff'
53
+ end
54
+
55
+ class TestEWidget < TestBaseWidget
56
+ append_something 'a'
57
+ append_something 'b'
58
+ append_something 'c'
59
+ end
60
+
61
+
62
+ class WidgetTest < Test::Unit::TestCase
63
+
64
+ def setup
65
+ @app = Cuca::App.new
66
+ end
67
+
68
+ def test_content
69
+ w = Cuca::Widget.new
70
+ w.content = 'test'
71
+ assert_equal w.content, 'test'
72
+ w.clear
73
+ assert w.content == ''
74
+
75
+ t = TestAWidget.new
76
+ assert_equal t.to_s, 'one-two'
77
+ end
78
+
79
+ def test_hints
80
+ w = Cuca::Widget.new
81
+ w.hints['hint1'] = 'h1'
82
+ w2 = Cuca::Widget.new
83
+ assert_equal w2.hints['hint1'], 'h1'
84
+ w2.hints['hint2'] = 'h2'
85
+ assert_equal w.hints['hint2'], 'h2'
86
+
87
+ Cuca::Widget::clear_hints
88
+
89
+ assert w.hints, {}
90
+ assert w2.hints, {}
91
+ end
92
+
93
+ def test_external_accessors
94
+ w = Cuca::Widget.new
95
+ assert w.app.instance_of?(Cuca::App)
96
+ assert w.log.instance_of?(Logger)
97
+
98
+ # these two are nil because we didn't run from cgi or from controller
99
+ assert w.cgi.nil?
100
+ # assert w.controller.nil? # we can't test on this
101
+
102
+ require 'cuca/cgi_emu'
103
+ @app.cgicall(CGIEmu.new('PATH_INFO' => '/'))
104
+
105
+ assert w.cgi.kind_of?(CGI)
106
+ end
107
+
108
+ def test_assigns
109
+ w = Cuca::Widget.new(:assigns => { 'p1' => 'test1', 'p2' => 'test2' })
110
+
111
+ assert w.get_assigns['p1'] == 'test1'
112
+
113
+ w = TestAWidget.new(:assigns => { 'p1' => 'test1', 'p2' => 'test2' } )
114
+ assert w.get_assigns['p1'] == 'test1'
115
+ assert w.get_assigns['p2'] == 'test2'
116
+ end
117
+
118
+ def test_params
119
+ t = TestAWidget.new(:args => ['x', 'z'])
120
+ assert_equal 'x-z', t.to_s
121
+ t = TestAWidget.new(:args => ['three'])
122
+ assert_equal 'three-two', t.to_s
123
+ end
124
+
125
+ def test_subclass
126
+ t = TestBWidget.new
127
+ assert_equal '(one-two)', t.to_s
128
+ t = TestBWidget.new(:args=> ['a', 'b'])
129
+ assert_equal '(a-b)', t.to_s
130
+ assert_equal 'test2', t.get_assigns['v2']
131
+ end
132
+
133
+ def test_widget_with_block
134
+ w = TestCWidget.new { "BLOCK" }
135
+ assert_equal "BLOCK", w.to_s
136
+
137
+ w = TestCWidget.new { "BLOCK2" }
138
+ assert_equal "BLOCK2", w.to_s
139
+ end
140
+
141
+ def test_attr_method
142
+ assert_equal 'stuff', TestDWidget.run_attr_method('something')
143
+
144
+ a = TestEWidget.run_attr_method('something')
145
+ assert a.instance_of?(Array)
146
+ assert_equal 3, a.length
147
+ assert a.include?('a')
148
+ assert a.include?('b')
149
+ assert a.include?('c')
150
+ end
151
+
152
+
153
+ end