glue 0.41.0 → 1.0.0

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.
Files changed (55) hide show
  1. data/History.txt +6 -0
  2. data/Manifest.txt +6 -0
  3. data/README.txt +130 -0
  4. data/Rakefile +16 -0
  5. data/lib/glue.rb +49 -72
  6. data/test/test_glue.rb +218 -0
  7. metadata +84 -100
  8. data/doc/AUTHORS +0 -13
  9. data/doc/CHANGELOG.1 +0 -354
  10. data/doc/LICENSE +0 -32
  11. data/doc/RELEASES +0 -207
  12. data/lib/glue/attribute.rb +0 -113
  13. data/lib/glue/attributeutils.rb +0 -117
  14. data/lib/glue/autoreload.rb +0 -60
  15. data/lib/glue/builder.rb +0 -57
  16. data/lib/glue/builder/xml.rb +0 -103
  17. data/lib/glue/cache.rb +0 -22
  18. data/lib/glue/cache/drb.rb +0 -51
  19. data/lib/glue/cache/file.rb +0 -78
  20. data/lib/glue/cache/memcached.rb +0 -68
  21. data/lib/glue/cache/memory.rb +0 -79
  22. data/lib/glue/cache/og.rb +0 -61
  23. data/lib/glue/configuration.rb +0 -305
  24. data/lib/glue/fixture.rb +0 -154
  25. data/lib/glue/html.rb +0 -12
  26. data/lib/glue/localization.rb +0 -129
  27. data/lib/glue/logger.rb +0 -208
  28. data/lib/glue/mail.rb +0 -160
  29. data/lib/glue/mailer.rb +0 -55
  30. data/lib/glue/mailer/incoming.rb +0 -41
  31. data/lib/glue/mailer/outgoing.rb +0 -119
  32. data/lib/glue/settings.rb +0 -3
  33. data/lib/glue/uri.rb +0 -190
  34. data/lib/glue/validation.rb +0 -447
  35. data/lib/html/document.rb +0 -63
  36. data/lib/html/node.rb +0 -480
  37. data/lib/html/tokenizer.rb +0 -103
  38. data/lib/html/version.rb +0 -11
  39. data/test/fixture/article.csv +0 -3
  40. data/test/fixture/article.yml +0 -13
  41. data/test/fixture/user.yml +0 -12
  42. data/test/glue/builder/tc_xml.rb +0 -57
  43. data/test/glue/tc_aspects.rb +0 -99
  44. data/test/glue/tc_attribute.rb +0 -112
  45. data/test/glue/tc_attribute_mixins.rb +0 -86
  46. data/test/glue/tc_builder.rb +0 -30
  47. data/test/glue/tc_configuration.rb +0 -135
  48. data/test/glue/tc_fixture.rb +0 -98
  49. data/test/glue/tc_localization.rb +0 -49
  50. data/test/glue/tc_logger.rb +0 -43
  51. data/test/glue/tc_mail.rb +0 -99
  52. data/test/glue/tc_stores.rb +0 -16
  53. data/test/glue/tc_uri.rb +0 -97
  54. data/test/glue/tc_validation.rb +0 -217
  55. data/test/public/dummy_mailer/registration.xhtml +0 -5
@@ -1,16 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
-
5
- require 'glue/cache/memory'
6
-
7
- class TC_CachingStores < Test::Unit::TestCase # :nodoc: all
8
- include Glue
9
-
10
- def test_memory
11
- s = MemoryCache.new
12
- s.write('test', 'hello', { :none => 1})
13
- s.read('test')
14
- end
15
-
16
- end
data/test/glue/tc_uri.rb DELETED
@@ -1,97 +0,0 @@
1
- require 'test/unit'
2
- require 'glue/uri'
3
-
4
- class Dummy # :nodoc: all
5
- attr_accessor :test1, :test2
6
- end
7
-
8
- class TC_Uri < Test::Unit::TestCase # :nodoc: all
9
- include Glue
10
-
11
- def test_query_string_to_hash
12
- # bad query string
13
-
14
- assert_equal(0, Glue::UriUtils.query_string_to_hash("").length)
15
- assert_equal(0, Glue::UriUtils.query_string_to_hash(nil).length)
16
-
17
- # single valued
18
-
19
- parameters = Glue::UriUtils.query_string_to_hash("koko=2&lala=3")
20
- assert_equal("2", parameters["koko"])
21
- assert_equal("3", parameters["lala"])
22
-
23
- parameters = Glue::UriUtils.query_string_to_hash("koko=2;lala=3")
24
- assert_equal("2", parameters["koko"])
25
- assert_equal("3", parameters["lala"])
26
-
27
- # multivalued
28
-
29
- parameters = Glue::UriUtils.query_string_to_hash("koko=2;lala=3&koko=5")
30
- assert_equal(2, parameters["koko"].length)
31
- assert_equal("2", parameters["koko"][0])
32
- assert_equal("3", parameters["lala"])
33
- assert_equal("5", parameters["koko"][1])
34
-
35
- # non existing value
36
- assert_equal(nil, parameters["non-existing-value"])
37
- end
38
-
39
- def test_hash_to_query_string
40
- hash = { "koko" => 1, "lala" => 2}
41
- qs = "koko=1;lala=2"
42
- assert_equal(qs, Glue::UriUtils.hash_to_query_string(hash))
43
-
44
- assert_equal(nil, Glue::UriUtils.hash_to_query_string(nil))
45
-
46
- # bug: dont encode complex objects
47
- hash = { "a" => 2, "b" => 3, "c" => Dummy.new }
48
- qs = "a=2;b=3"
49
- assert_equal(qs, Glue::UriUtils.hash_to_query_string(hash))
50
- end
51
-
52
- def test_get_query_string
53
- uri = "people/gmosx.sx?koko=1;lala=2"
54
- assert_equal("koko=1;lala=2", Glue::UriUtils.get_query_string(uri))
55
-
56
- uri = "http://www.nitroproject.org/people/gmosx.sx?koko=1&lala=2"
57
- assert_equal("koko=1&lala=2", Glue::UriUtils.get_query_string(uri))
58
-
59
- uri = "http://www.nitroproject.org:8080/people/gmosx.sx?koko=1;lala=2"
60
- assert_equal("koko=1;lala=2", Glue::UriUtils.get_query_string(uri))
61
- end
62
-
63
- def test_chomp_query_string
64
- uri = "people/gmosx.sx"
65
- assert_equal("people/gmosx.sx", Glue::UriUtils.chomp_query_string(uri))
66
-
67
- uri = "people/gmosx.sx?koko=1;lala=2"
68
- assert_equal("people/gmosx.sx", Glue::UriUtils.chomp_query_string(uri))
69
-
70
- uri = "http://www.nitroproject.org/people/gmosx.sx?koko=1&lala=2"
71
- assert_equal("http://www.nitroproject.org/people/gmosx.sx", Glue::UriUtils.chomp_query_string(uri))
72
-
73
- uri = "http://www.nitroproject.org:8080/people/gmosx.sx?koko=1;lala=2"
74
- assert_equal("http://www.nitroproject.org:8080/people/gmosx.sx", Glue::UriUtils.chomp_query_string(uri))
75
-
76
- assert_equal(nil, Glue::UriUtils.chomp_query_string(nil))
77
- end
78
-
79
- def test_update_query_string
80
- uri = "ko/index.sx?koko=1"
81
- hash = {"lala" => 2, "kaka" => 3}
82
- assert_equal("ko/index.sx?koko=1;lala=2;kaka=3", Glue::UriUtils.update_query_string(uri, hash))
83
-
84
- uri = "http://www.nitroproject.org:8080/ko/index.sx?koko=1"
85
- hash = {"lala" => 2, "kaka" => 3}
86
- assert_equal("http://www.nitroproject.org:8080/ko/index.sx?koko=1;lala=2;kaka=3", Glue::UriUtils.update_query_string(uri, hash))
87
-
88
- uri = "http://www.nitroproject.org"
89
- hash = {"lala" => 2, "kaka" => 3}
90
- assert_equal("http://www.nitroproject.org?lala=2;kaka=3", Glue::UriUtils.update_query_string(uri, hash))
91
-
92
- # bug: no ? when passed an empty hash
93
- uri = "http://www.nitroproject.org"
94
- assert_equal("http://www.nitroproject.org", Glue::UriUtils.update_query_string(uri, {}))
95
- end
96
-
97
- end
@@ -1,217 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
2
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'og', 'lib')
3
-
4
- require 'test/unit'
5
-
6
- require 'glue'
7
- require 'glue/attribute'
8
- require 'glue/validation'
9
-
10
- # Glue::Property.type_checking = false
11
-
12
- class TC_Validation < Test::Unit::TestCase # :nodoc: all
13
- include Glue
14
-
15
- # Override the default error message
16
- Validation::Errors.invalid_format = 'INVALID'
17
-
18
- module Mixin
19
- attr_accessor :value, String
20
- validate_format :value, :format => /123/, :msg => 'mixin error'
21
- end
22
-
23
- class User
24
- include Mixin
25
-
26
- attr_accessor :name, String
27
- validate_format :name, :format => /L.o/, :msg => 'per class override'
28
- end
29
-
30
- class Article
31
- attr_accessor :name, String
32
- validate_format :name, :format => /news/
33
- end
34
-
35
- class Dummy1
36
- attr_accessor :test, Fixnum
37
- attr_accessor :str, String
38
- validate_value :test, :str
39
- end
40
-
41
- class Dummy2
42
- attr_accessor :password, String
43
- validate_confirmation :password
44
- end
45
-
46
- class Dummy3
47
- attr_accessor :vmin, String
48
- validate_length :vmin, :min => 2
49
-
50
- attr_accessor :vmax, String
51
- validate_length :vmax, :max => 3, :msg => 'LOOONG'
52
-
53
- attr_accessor :vran, String
54
- validate_length :vran, :range => 2..4, :msg_long => 'argh'
55
-
56
- attr_accessor :vlen, String
57
- validate_length :vlen, :length => 3, :msg => 'argh'
58
- end
59
-
60
- class Dummy4
61
- attr_accessor :sex, String
62
- validate_inclusion :sex, :in => %w{ Male Female }, :msg => 'huh?'
63
-
64
- attr_accessor :age, Fixnum
65
- validate_inclusion :age, :in => 5..99
66
- end
67
-
68
- class Dummy5
69
- property :age, Fixnum
70
- validate_numeric :age, :integer => true
71
-
72
- property :rate, Float
73
- validate_numeric :rate
74
- end
75
-
76
- # bug
77
-
78
- class NoProp
79
- include Mixin
80
- validate_length :value, :min => 3
81
- end
82
-
83
- def test_validate_value
84
- d = Dummy1.new
85
-
86
- assert !d.valid?
87
- assert_equal 2, d.errors.count
88
- d.test = 1
89
- assert !d.valid?
90
- assert_equal 1, d.errors.count
91
- d.str = 'yeah'
92
- assert d.valid?
93
- end
94
-
95
- def test_validate_confirmation
96
- d = Dummy2.new
97
-
98
- assert_respond_to d, :password_confirmation
99
-
100
- d.password = 'hello'
101
- assert !d.valid?
102
- d.password_confirmation = 'hel'
103
- assert !d.valid?
104
- d.password_confirmation = 'hello'
105
- assert d.valid?
106
- end
107
-
108
- def test_validate_format
109
- u = User.new
110
-
111
- u.value = '1234'
112
-
113
- u.name = 'George'
114
- assert !u.valid?
115
-
116
- assert_equal 'per class override', u.errors[:name].first
117
-
118
- u.name = 'Leonard'
119
- assert u.valid?
120
-
121
- a = Article.new
122
-
123
- a.name = 'In the news'
124
- assert a.valid?
125
-
126
- a.name = 'Sports'
127
- assert !a.valid?
128
-
129
- assert_equal 1, a.errors.count
130
- assert_equal 1, a.errors.on(:name).size
131
- assert_kind_of Array, a.errors[:name]
132
-
133
- assert_equal 'INVALID', a.errors[:name].first
134
-
135
- # test mixin
136
-
137
- u.value = '543'
138
- assert !u.valid?
139
- end
140
-
141
- def test_validate_length
142
- d = Dummy3.new
143
-
144
- d.vmin = 'q'
145
- d.vmax = '2'
146
- d.vlen = '123'
147
- d.vran = '123'
148
-
149
- assert !d.valid?
150
- assert_equal 'Too short, must be more than 2 characters long', d.errors.on(:vmin).first
151
- d.vmin = 'longer'
152
- assert d.valid?
153
-
154
- d.vmax = 'loooooooooooong'
155
- assert !d.valid?
156
- assert_equal 'LOOONG', d.errors.on(:vmax).first
157
-
158
- d.vmax = nil
159
- assert !d.valid?
160
- assert_equal 'No value provided', d.errors.on(:vmax).first
161
-
162
- d.vlen = '12'
163
- assert !d.valid?
164
- assert_equal 'argh', d.errors.on(:vlen).first
165
-
166
- d.vlen = '1234565'
167
- assert !d.valid?
168
-
169
- d.vran = '1'
170
- assert !d.valid?
171
- assert_equal 'Too short, must be more than 2 characters long', d.errors.on(:vran).first
172
-
173
- d.vran = '11111111'
174
- assert !d.valid?
175
- assert_equal 'argh', d.errors.on(:vran).first
176
- end
177
-
178
- def test_validate_inclusion
179
- d = Dummy4.new
180
-
181
- d.sex = 'Alien'
182
- d.age = 1
183
-
184
- assert !d.valid?
185
- assert_equal 2, d.errors.count
186
-
187
- d.sex = 'Male'
188
- assert !d.valid?
189
- assert_equal 1, d.errors.count
190
-
191
- d.age = 110
192
- assert !d.valid?
193
- assert_equal 1, d.errors.count
194
-
195
- d.age = 90
196
- assert d.valid?
197
- end
198
-
199
- def test_validate_numeric
200
- d = Dummy5.new
201
-
202
- d.rate = 'Alien'
203
- d.age = 'World'
204
-
205
- assert !d.valid?
206
- assert_equal 2, d.errors.count
207
-
208
- d.rate = 3
209
- assert !d.valid?
210
- assert_equal 1, d.errors.count
211
-
212
- d.rate = 1.2
213
- d.age = 123
214
- assert d.valid?
215
- end
216
-
217
- end
@@ -1,5 +0,0 @@
1
- Hello #{username}
2
-
3
- how do you feel?
4
-
5
- Here is your <b>Token</b>: #{token}