nitro 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- data/{ChangeLog → CHANGELOG} +137 -0
- data/INSTALL +1 -2
- data/README +1 -1
- data/Rakefile +10 -61
- data/benchmark/{nitro/bench.rb → bench.rb} +1 -1
- data/benchmark/{nitro/simple-webrick-n-200.txt → simple-webrick-n-200.txt} +0 -0
- data/benchmark/{nitro/static-webrick-n-200.txt → static-webrick-n-200.txt} +0 -0
- data/benchmark/{nitro/tiny-lhttpd-n-200-c-5.txt → tiny-lhttpd-n-200-c-5.txt} +0 -0
- data/benchmark/{nitro/tiny-webrick-n-200-c-5.txt → tiny-webrick-n-200-c-5.txt} +0 -0
- data/benchmark/{nitro/tiny-webrick-n-200.txt → tiny-webrick-n-200.txt} +0 -0
- data/benchmark/{nitro/tiny2-webrick-n-200.txt → tiny2-webrick-n-200.txt} +0 -0
- data/doc/{ChangeLog.1 → CHANGELOG.1} +0 -0
- data/{RELEASES → doc/RELEASES} +46 -0
- data/doc/faq.txt +7 -0
- data/examples/README.windows +1 -1
- data/examples/ajax/controller.rb +21 -0
- data/examples/ajax/public/index.xhtml +70 -0
- data/examples/ajax/public/js/ajax.js +64 -0
- data/examples/ajax/run.rb +16 -0
- data/examples/blog/README +6 -3
- data/examples/blog/conf/apache.conf +2 -2
- data/examples/blog/conf/lhttpd.conf +2 -2
- data/examples/blog/log/apache.error_log +777 -0
- data/examples/blog/{root → public}/base.xsl +0 -0
- data/examples/blog/{root → public}/fcgi.rb +0 -0
- data/examples/blog/{root → public}/m/bubbles.gif +0 -0
- data/examples/blog/{root → public}/m/comments_curve.gif +0 -0
- data/examples/blog/{root → public}/m/down.gif +0 -0
- data/examples/blog/{root → public}/m/footer_bg.gif +0 -0
- data/examples/blog/{root → public}/m/garrow.gif +0 -0
- data/examples/blog/{root → public}/m/gbull.gif +0 -0
- data/examples/blog/{root → public}/m/grbull.gif +0 -0
- data/examples/blog/{root → public}/m/h1_bg.gif +0 -0
- data/examples/blog/{root → public}/m/header_bg.gif +0 -0
- data/examples/blog/{root → public}/m/nitro.gif +0 -0
- data/examples/blog/{root → public}/m/obull.gif +0 -0
- data/examples/blog/{root → public}/m/page_bg.gif +0 -0
- data/examples/blog/{root → public}/m/rss.gif +0 -0
- data/examples/blog/{root → public}/m/side_title_bg.gif +0 -0
- data/examples/blog/{root → public}/m/sidebar_bg.gif +0 -0
- data/examples/{no_xsl_blog/root → blog/public}/style.css +6 -0
- data/examples/blog/run.rb +10 -12
- data/examples/blog/{lib → src}/blog.rb +3 -3
- data/examples/blog/{lib/blog → src}/controller.rb +13 -2
- data/examples/blog/src/mailer.rb +23 -0
- data/examples/blog/{lib/blog/model.rb → src/models/blog.rb} +4 -7
- data/examples/blog/src/models/content.rb +52 -0
- data/examples/blog/src/views/blog_entry_email.xhtml +16 -0
- data/examples/blog/{root → src/views}/comments.xhtml +0 -0
- data/examples/blog/{root → src/views}/entry_form.xhtml +0 -0
- data/examples/blog/{root → src/views}/error.xhtml +0 -0
- data/examples/blog/{root → src/views}/index.xhtml +0 -0
- data/examples/blog/{root → src/views}/login.xhtml +0 -0
- data/examples/blog/{root → src/views}/recent_posts.xhtml +0 -0
- data/examples/blog/{root → src/views}/view_entry.xhtml +8 -0
- data/examples/blog/{root → src/views}/view_entry.xml +0 -0
- data/examples/blog/src/xsl/base.xsl +153 -0
- data/examples/blog/{root → src/xsl}/style.xsl +2 -2
- data/examples/no_xsl_blog/README +5 -1
- data/examples/no_xsl_blog/conf/apache.conf +2 -2
- data/examples/no_xsl_blog/conf/lhttpd.conf +2 -2
- data/examples/no_xsl_blog/lib/blog/model.rb +1 -1
- data/{lib/parts → examples/no_xsl_blog/lib}/content.rb +1 -11
- data/examples/no_xsl_blog/log/apache.error_log +405 -0
- data/examples/no_xsl_blog/{root → public}/comments.xhtml +0 -0
- data/examples/no_xsl_blog/{root → public}/entry_form.xhtml +0 -0
- data/examples/no_xsl_blog/{root → public}/fcgi.rb +0 -0
- data/examples/no_xsl_blog/{root → public}/index.xhtml +0 -0
- data/examples/no_xsl_blog/{root → public}/login.xhtml +0 -0
- data/examples/no_xsl_blog/{root → public}/m/bubbles.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/comments_curve.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/down.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/footer_bg.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/garrow.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/gbull.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/grbull.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/h1_bg.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/header_bg.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/nitro.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/obull.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/page_bg.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/rss.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/side_title_bg.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/m/sidebar_bg.gif +0 -0
- data/examples/no_xsl_blog/{root → public}/recent_posts.xhtml +0 -0
- data/examples/{blog/root → no_xsl_blog/public}/style.css +0 -0
- data/examples/no_xsl_blog/{root → public}/view_entry.xhtml +0 -0
- data/examples/no_xsl_blog/{root → public}/view_entry.xml +0 -0
- data/examples/tiny/conf/apache.conf +2 -2
- data/examples/tiny/log/apache.error_log +100 -0
- data/examples/tiny/{root → public}/fcgi.rb +0 -0
- data/examples/tiny/{root → public}/include.xhtml +0 -0
- data/examples/tiny/{root → public}/index.xhtml +0 -0
- data/{bin/proto/root/m → examples/tiny/public}/nitro.png +0 -0
- data/examples/tiny/{root → public}/upload.xhtml +0 -0
- data/examples/tiny/run.rb +1 -2
- data/examples/why_wiki/wiki.yml +1 -0
- data/install.rb +5 -2
- data/lib/nitro.rb +2 -6
- data/lib/nitro/adapters/fastcgi.rb +2 -2
- data/lib/nitro/adapters/webrick.rb +4 -4
- data/lib/nitro/conf.rb +5 -2
- data/lib/nitro/controller.rb +2 -2
- data/lib/nitro/dispatcher.rb +19 -8
- data/lib/nitro/mail.rb +252 -8
- data/lib/nitro/render.rb +24 -21
- data/lib/nitro/runner.rb +1 -1
- data/lib/nitro/scaffold.rb +2 -5
- data/lib/nitro/simple.rb +2 -1
- data/lib/nitro/template.rb +42 -2
- data/test/nitro/tc_controller.rb +9 -4
- data/test/nitro/tc_dispatcher.rb +4 -6
- data/test/nitro/tc_mail.rb +95 -0
- data/test/{root → public}/blog/list.xhtml +0 -0
- data/test/public/dummy_mailer/registration.xhtml +5 -0
- data/vendor/README +0 -1
- metadata +136 -181
- data/benchmark/og/bench.rb +0 -75
- data/benchmark/og/sqlite-no-prepare.1.txt +0 -13
- data/benchmark/og/sqlite-no-prepare.2.txt +0 -13
- data/benchmark/og/sqlite-prepare.1.txt +0 -13
- data/benchmark/og/sqlite-prepare.2.txt +0 -13
- data/bin/proto/README +0 -34
- data/bin/proto/conf/apache.conf +0 -1
- data/bin/proto/conf/app.conf.rb +0 -14
- data/bin/proto/conf/lhttpd.conf +0 -236
- data/bin/proto/ctl +0 -4
- data/bin/proto/lib/README +0 -5
- data/bin/proto/log/README +0 -3
- data/bin/proto/root/fcgi.rb +0 -6
- data/bin/proto/root/index.xhtml +0 -69
- data/bin/proto/root/style.css +0 -152
- data/bin/proto/root/style.xsl +0 -99
- data/doc/og_config.txt +0 -35
- data/doc/og_tutorial.txt +0 -595
- data/examples/og/README +0 -11
- data/examples/og/mock_example.rb +0 -50
- data/examples/og/mysql_to_psql.rb +0 -96
- data/examples/og/run.rb +0 -286
- data/examples/tiny/root/nitro.png +0 -0
- data/lib/glue.rb +0 -55
- data/lib/glue/array.rb +0 -61
- data/lib/glue/attribute.rb +0 -83
- data/lib/glue/cache.rb +0 -138
- data/lib/glue/flexob.rb +0 -12
- data/lib/glue/hash.rb +0 -122
- data/lib/glue/inflector.rb +0 -91
- data/lib/glue/logger.rb +0 -147
- data/lib/glue/misc.rb +0 -14
- data/lib/glue/mixins.rb +0 -36
- data/lib/glue/number.rb +0 -24
- data/lib/glue/object.rb +0 -32
- data/lib/glue/pool.rb +0 -60
- data/lib/glue/property.rb +0 -408
- data/lib/glue/string.rb +0 -162
- data/lib/glue/time.rb +0 -85
- data/lib/glue/validation.rb +0 -394
- data/lib/og.rb +0 -185
- data/lib/og/adapter.rb +0 -513
- data/lib/og/adapters/filesys.rb +0 -121
- data/lib/og/adapters/mysql.rb +0 -347
- data/lib/og/adapters/oracle.rb +0 -375
- data/lib/og/adapters/psql.rb +0 -273
- data/lib/og/adapters/sqlite.rb +0 -262
- data/lib/og/backend.rb +0 -297
- data/lib/og/connection.rb +0 -304
- data/lib/og/database.rb +0 -282
- data/lib/og/enchant.rb +0 -125
- data/lib/og/meta.rb +0 -373
- data/lib/og/mock.rb +0 -165
- data/lib/og/observer.rb +0 -53
- data/lib/og/typemacros.rb +0 -23
- data/lib/parts/README +0 -9
- data/test/glue/tc_attribute.rb +0 -22
- data/test/glue/tc_cache.rb +0 -45
- data/test/glue/tc_hash.rb +0 -38
- data/test/glue/tc_logger.rb +0 -39
- data/test/glue/tc_numbers.rb +0 -20
- data/test/glue/tc_property.rb +0 -89
- data/test/glue/tc_property_mixins.rb +0 -93
- data/test/glue/tc_property_type_checking.rb +0 -35
- data/test/glue/tc_strings.rb +0 -103
- data/test/glue/tc_validation.rb +0 -188
- data/test/og/tc_filesys.rb +0 -83
- data/test/og/tc_lifecycle.rb +0 -104
- data/test/og/tc_many_to_many.rb +0 -62
- data/test/og/tc_meta.rb +0 -55
- data/test/og/tc_observer.rb +0 -85
- data/test/og/tc_sqlite.rb +0 -87
- data/test/tc_og.rb +0 -355
- data/vendor/composite_sexp_processor.rb +0 -43
- data/vendor/parse_tree.rb +0 -745
- data/vendor/sexp_processor.rb +0 -453
@@ -1,93 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
# vim:sw=2:ai
|
3
|
-
|
4
|
-
#--
|
5
|
-
# Thomas Quas <tquas@yahoo.com>
|
6
|
-
# George Moschovitis <gm@navel.gr>
|
7
|
-
# $Id$
|
8
|
-
#++
|
9
|
-
|
10
|
-
$LOAD_PATH.unshift 'lib'
|
11
|
-
|
12
|
-
require "test/unit"
|
13
|
-
require 'glue/property'
|
14
|
-
|
15
|
-
module Mixin
|
16
|
-
prop_accessor :date
|
17
|
-
meta :dummy, [123]
|
18
|
-
end
|
19
|
-
|
20
|
-
class MixedOnly
|
21
|
-
include Mixin
|
22
|
-
__meta[:dummy] << 5
|
23
|
-
__meta[:dummy] << 3
|
24
|
-
end
|
25
|
-
|
26
|
-
class MixedOnly2
|
27
|
-
include Mixin
|
28
|
-
end
|
29
|
-
|
30
|
-
class MixedWithProp
|
31
|
-
include Mixin
|
32
|
-
|
33
|
-
prop_accessor :dummy
|
34
|
-
end
|
35
|
-
|
36
|
-
class Pure
|
37
|
-
prop_accessor :dummy
|
38
|
-
end
|
39
|
-
|
40
|
-
class Empty
|
41
|
-
end
|
42
|
-
|
43
|
-
class Base
|
44
|
-
prop_accessor :date
|
45
|
-
meta :dummy, [123]
|
46
|
-
end
|
47
|
-
|
48
|
-
class Child1 < Base
|
49
|
-
__meta[:dummy].first << 5
|
50
|
-
__meta[:dummy].first << 3
|
51
|
-
end
|
52
|
-
|
53
|
-
class Child2 < Base
|
54
|
-
end
|
55
|
-
|
56
|
-
# Tests auto management.
|
57
|
-
class TC_MixinsTest < ::Test::Unit::TestCase
|
58
|
-
def test_the_unmanaged
|
59
|
-
assert( Empty.respond_to?( :__props ) == false )
|
60
|
-
assert_respond_to( Pure.new, :dummy )
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_manage_entities
|
64
|
-
assert_respond_to( Pure, :__props )
|
65
|
-
assert_respond_to( Pure.new, :dummy )
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_managing_mixedonly_classes
|
69
|
-
assert_respond_to( MixedOnly.new, :date )
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_managing_mixins
|
73
|
-
assert_respond_to( Mixin, :__props )
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_managing_mixed_classes
|
77
|
-
obj = MixedWithProp.new
|
78
|
-
assert( obj.respond_to?( :date ) )
|
79
|
-
assert( obj.respond_to?( :dummy ) )
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_crosspolination
|
83
|
-
assert_equal 3, MixedOnly.__meta[:dummy].size
|
84
|
-
assert_equal 1, MixedOnly2.__meta[:dummy].size
|
85
|
-
assert_equal 1, Mixin.__meta[:dummy].size
|
86
|
-
=begin
|
87
|
-
gmosx: THINK!
|
88
|
-
assert_equal 3, Child1.__meta[:dummy].first.size
|
89
|
-
assert_equal 1, Child2.__meta[:dummy].first.size
|
90
|
-
assert_equal 1, Base.__meta[:dummy].first.size
|
91
|
-
=end
|
92
|
-
end
|
93
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
|
5
|
-
require 'glue/logger'
|
6
|
-
require 'glue/property'
|
7
|
-
|
8
|
-
N::Property.type_checking = true
|
9
|
-
|
10
|
-
module Test # :nodoc: all
|
11
|
-
|
12
|
-
class Person
|
13
|
-
prop_accessor :age, Fixnum
|
14
|
-
|
15
|
-
def initialize(age = nil)
|
16
|
-
@age = age
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
class TC_PropertiesTypeChecking < Test::Unit::TestCase
|
22
|
-
|
23
|
-
def test_all
|
24
|
-
per = Person.new
|
25
|
-
=begin
|
26
|
-
FIXME: does not work when run in the full test suite.
|
27
|
-
assert_raises(RuntimeError) {
|
28
|
-
per.age = 'Hello'
|
29
|
-
}
|
30
|
-
=end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
data/test/glue/tc_strings.rb
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
# :nodoc: all
|
2
|
-
|
3
|
-
require "test/unit"
|
4
|
-
require "glue/string"
|
5
|
-
|
6
|
-
class TC_StringUtilsUtils < Test::Unit::TestCase
|
7
|
-
# :nodoc: all
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@s = "this is any cool test"
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_valid?
|
14
|
-
assert_equal(true, N::StringUtils.valid?("test"))
|
15
|
-
assert_equal(false, N::StringUtils.valid?(""))
|
16
|
-
assert_equal(false, N::StringUtils.valid?(nil))
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_head
|
20
|
-
assert_equal(nil, N::StringUtils.head(nil))
|
21
|
-
assert_equal("this...", N::StringUtils.head(@s, 3))
|
22
|
-
assert_equal("this+++", N::StringUtils.head(@s, 3, false, "+++"))
|
23
|
-
assert_equal("thi...", N::StringUtils.head(@s, 3, true))
|
24
|
-
assert_equal("this is...", N::StringUtils.head(@s, 8))
|
25
|
-
assert_equal(nil, N::StringUtils.head(@s, 0))
|
26
|
-
assert_equal(nil, N::StringUtils.head(@s, 0, true))
|
27
|
-
assert_equal("this is...", N::StringUtils.head(@s, 8, true))
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_rewrite
|
31
|
-
rules = [
|
32
|
-
[/\/\$/, "../n1"],
|
33
|
-
[/\$/, "../n1"],
|
34
|
-
[/^games/, "../../games"],
|
35
|
-
[/^tmp/, "/n/theseas/var/tmp"],
|
36
|
-
]
|
37
|
-
string = N::StringUtils.rewrite("games/arkanoid.html", rules)
|
38
|
-
assert_equal("../../games/arkanoid.html", string)
|
39
|
-
string = N::StringUtils.rewrite("tmp/garbage.html", rules)
|
40
|
-
assert_equal("/n/theseas/var/tmp/garbage.html", string)
|
41
|
-
string = N::StringUtils.rewrite("root/index.html", rules)
|
42
|
-
assert_equal("root/index.html", string)
|
43
|
-
assert_equal(nil, N::StringUtils.rewrite(nil, rules))
|
44
|
-
assert_equal("", N::StringUtils.rewrite("", rules))
|
45
|
-
|
46
|
-
assert_raises(ArgumentError) {
|
47
|
-
assert_equal("koko", N::StringUtils.rewrite("koko", nil))
|
48
|
-
}
|
49
|
-
|
50
|
-
# bug: should keep order
|
51
|
-
s = N::StringUtils.rewrite("/$/koko.html", rules)
|
52
|
-
assert_equal("../n1/koko.html", s)
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_wrap
|
56
|
-
s = "1234567890abcdefghijklmnopqrstu"
|
57
|
-
r = "1234 5678 90ab cdef ghij klmn opqr stu"
|
58
|
-
assert_equal(r, N::StringUtils::wrap(s, 4, " "))
|
59
|
-
|
60
|
-
s = "111111111111111111111111111111111111111111111111"
|
61
|
-
r = "1111111111 1111111111 1111111111 1111111111 11111111"
|
62
|
-
assert_equal(r, N::StringUtils::wrap(s, 10, " "))
|
63
|
-
|
64
|
-
s = "jackdaws love my big sphinx of quartz"
|
65
|
-
r = "jackdaws love my big sphinx of quartz"
|
66
|
-
assert_equal(r, N::StringUtils::wrap(s, 10, " "))
|
67
|
-
|
68
|
-
s = "jackdaws love my big sphinx of quartz"
|
69
|
-
r = "jack daws love my big sphi nx of quar tz"
|
70
|
-
assert_equal(r, N::StringUtils::wrap(s, 4, " "))
|
71
|
-
|
72
|
-
s = "jack.daws love my big sphinx of quartz"
|
73
|
-
r = "jack .daw s love my big sphi nx of quar tz"
|
74
|
-
assert_equal(r, N::StringUtils::wrap(s, 4, " "))
|
75
|
-
|
76
|
-
assert_equal("", N::StringUtils::wrap("", 4, " "))
|
77
|
-
assert_equal(nil, N::StringUtils::wrap(nil, 4, " "))
|
78
|
-
end
|
79
|
-
=begin
|
80
|
-
def test_rationalize_filename
|
81
|
-
filename = N::StringUtils.rationalize_filename("hello my friend!.gif")
|
82
|
-
assert_equal("hello-my-friend.gif", filename)
|
83
|
-
filename = N::StringUtils.rationalize_filename("���� ����.gif")
|
84
|
-
assert_equal("pame-pali.gif", filename)
|
85
|
-
filename = N::StringUtils.rationalize_filename("�� ���.gif")
|
86
|
-
assert_equal("ti-les.gif", filename)
|
87
|
-
|
88
|
-
# bug:
|
89
|
-
filename = N::StringUtils.rationalize_filename("image-(10).gif")
|
90
|
-
assert_equal("image-10.gif", filename)
|
91
|
-
end
|
92
|
-
=end
|
93
|
-
def test_random_string
|
94
|
-
s1 = N::StringUtils.random()
|
95
|
-
s2 = N::StringUtils.random()
|
96
|
-
assert_not_equal(s1, s2)
|
97
|
-
assert(s1.size == s2.size)
|
98
|
-
end
|
99
|
-
|
100
|
-
def teardown
|
101
|
-
@s = nil
|
102
|
-
end
|
103
|
-
end
|
data/test/glue/tc_validation.rb
DELETED
@@ -1,188 +0,0 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
|
5
|
-
require 'glue'
|
6
|
-
require 'glue/validation'
|
7
|
-
|
8
|
-
Property.type_checking = false
|
9
|
-
|
10
|
-
class TC_Validation < Test::Unit::TestCase # :nodoc: all
|
11
|
-
|
12
|
-
# Override the default error message
|
13
|
-
N::Validation::Errors.invalid_format = 'INVALID'
|
14
|
-
|
15
|
-
module Mixin
|
16
|
-
prop_accessor :value, String
|
17
|
-
validate_format :value, :format => /123/, :msg => 'mixin error'
|
18
|
-
end
|
19
|
-
|
20
|
-
class User
|
21
|
-
include Mixin
|
22
|
-
|
23
|
-
prop_accessor :name, String
|
24
|
-
validate_format :name, :format => /Leo/, :msg => 'per class override'
|
25
|
-
end
|
26
|
-
|
27
|
-
class Article
|
28
|
-
prop_accessor :name, String
|
29
|
-
validate_format :name, :format => /news/
|
30
|
-
end
|
31
|
-
|
32
|
-
class Dummy1
|
33
|
-
prop_accessor :test, Fixnum
|
34
|
-
prop_accessor :str, String
|
35
|
-
validate_value :test, :str
|
36
|
-
end
|
37
|
-
|
38
|
-
class Dummy2
|
39
|
-
prop_accessor :password, String
|
40
|
-
validate_confirmation :password
|
41
|
-
end
|
42
|
-
|
43
|
-
class Dummy3
|
44
|
-
prop_accessor :vmin, String
|
45
|
-
validate_length :vmin, :min => 2
|
46
|
-
|
47
|
-
prop_accessor :vmax, String
|
48
|
-
validate_length :vmax, :max => 3, :msg => 'LOOONG'
|
49
|
-
|
50
|
-
prop_accessor :vran, String
|
51
|
-
validate_length :vran, :range => 2..4, :msg_long => 'argh'
|
52
|
-
|
53
|
-
prop_accessor :vlen, String
|
54
|
-
validate_length :vlen, :length => 3, :msg => 'argh'
|
55
|
-
end
|
56
|
-
|
57
|
-
class Dummy4
|
58
|
-
prop_accessor :sex, String
|
59
|
-
validate_inclusion :sex, :in => %w{ Male Female }, :msg => 'huh?'
|
60
|
-
|
61
|
-
prop_accessor :age, Fixnum
|
62
|
-
validate_inclusion :age, :in => 5..99
|
63
|
-
end
|
64
|
-
|
65
|
-
# bug
|
66
|
-
|
67
|
-
class NoProp
|
68
|
-
include Mixin
|
69
|
-
validate_length :value, :min => 3
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_validate_value
|
73
|
-
d = Dummy1.new
|
74
|
-
|
75
|
-
assert !d.valid?
|
76
|
-
assert_equal 2, d.errors.count
|
77
|
-
d.test = 1
|
78
|
-
assert !d.valid?
|
79
|
-
assert_equal 1, d.errors.count
|
80
|
-
d.str = 'yeah'
|
81
|
-
assert d.valid?
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_validate_confirmation
|
85
|
-
d = Dummy2.new
|
86
|
-
|
87
|
-
assert_respond_to d, :password_confirmation
|
88
|
-
|
89
|
-
d.password = 'hello'
|
90
|
-
assert !d.valid?
|
91
|
-
d.password_confirmation = 'hel'
|
92
|
-
assert !d.valid?
|
93
|
-
d.password_confirmation = 'hello'
|
94
|
-
assert d.valid?
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_validate_format
|
98
|
-
u = User.new
|
99
|
-
|
100
|
-
u.value = '1234'
|
101
|
-
|
102
|
-
u.name = 'George'
|
103
|
-
assert !u.valid?
|
104
|
-
|
105
|
-
assert_equal 'per class override', u.errors[:name].first
|
106
|
-
|
107
|
-
u.name = 'Leonard'
|
108
|
-
assert u.valid?
|
109
|
-
|
110
|
-
a = Article.new
|
111
|
-
|
112
|
-
a.name = 'In the news'
|
113
|
-
assert a.valid?
|
114
|
-
|
115
|
-
a.name = 'Sports'
|
116
|
-
assert !a.valid?
|
117
|
-
|
118
|
-
assert_equal 1, a.errors.count
|
119
|
-
assert_equal 1, a.errors.on(:name).size
|
120
|
-
assert_kind_of Array, a.errors[:name]
|
121
|
-
|
122
|
-
assert_equal 'INVALID', a.errors[:name].first
|
123
|
-
|
124
|
-
# test mixin
|
125
|
-
|
126
|
-
u.value = '543'
|
127
|
-
assert !u.valid?
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_validate_length
|
131
|
-
d = Dummy3.new
|
132
|
-
|
133
|
-
d.vmin = 'q'
|
134
|
-
d.vmax = '2'
|
135
|
-
d.vlen = '123'
|
136
|
-
d.vran = '123'
|
137
|
-
|
138
|
-
assert !d.valid?
|
139
|
-
assert_equal 'Too short, must be more than 2 characters long', d.errors.on(:vmin).first
|
140
|
-
d.vmin = 'longer'
|
141
|
-
assert d.valid?
|
142
|
-
|
143
|
-
d.vmax = 'loooooooooooong'
|
144
|
-
assert !d.valid?
|
145
|
-
assert_equal 'LOOONG', d.errors.on(:vmax).first
|
146
|
-
|
147
|
-
d.vmax = nil
|
148
|
-
assert !d.valid?
|
149
|
-
assert_equal 'No value provided', d.errors.on(:vmax).first
|
150
|
-
|
151
|
-
d.vlen = '12'
|
152
|
-
assert !d.valid?
|
153
|
-
assert_equal 'argh', d.errors.on(:vlen).first
|
154
|
-
|
155
|
-
d.vlen = '1234565'
|
156
|
-
assert !d.valid?
|
157
|
-
|
158
|
-
d.vran = '1'
|
159
|
-
assert !d.valid?
|
160
|
-
assert_equal 'Too short, must be more than 2 characters long', d.errors.on(:vran).first
|
161
|
-
|
162
|
-
d.vran = '11111111'
|
163
|
-
assert !d.valid?
|
164
|
-
assert_equal 'argh', d.errors.on(:vran).first
|
165
|
-
end
|
166
|
-
|
167
|
-
def test_validate_inclusion
|
168
|
-
d = Dummy4.new
|
169
|
-
|
170
|
-
d.sex = 'Alien'
|
171
|
-
d.age = 1
|
172
|
-
|
173
|
-
assert !d.valid?
|
174
|
-
assert_equal 2, d.errors.count
|
175
|
-
|
176
|
-
d.sex = 'Male'
|
177
|
-
assert !d.valid?
|
178
|
-
assert_equal 1, d.errors.count
|
179
|
-
|
180
|
-
d.age = 110
|
181
|
-
assert !d.valid?
|
182
|
-
assert_equal 1, d.errors.count
|
183
|
-
|
184
|
-
d.age = 90
|
185
|
-
assert d.valid?
|
186
|
-
end
|
187
|
-
|
188
|
-
end
|
data/test/og/tc_filesys.rb
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'ostruct'
|
5
|
-
|
6
|
-
require 'og'
|
7
|
-
require 'og/adapters/filesys'
|
8
|
-
|
9
|
-
class TC_OgFilesys < Test::Unit::TestCase # :nodoc: all
|
10
|
-
include N, Og
|
11
|
-
|
12
|
-
# Forward declaration.
|
13
|
-
|
14
|
-
class Comment; end
|
15
|
-
|
16
|
-
class Article
|
17
|
-
prop_accessor :name, String
|
18
|
-
prop_accessor :age, Fixnum
|
19
|
-
has_many :comments, Comment
|
20
|
-
|
21
|
-
def initialize (name = nil, age = nil)
|
22
|
-
@name, @age = name, age
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class Comment
|
27
|
-
prop_accessor :text, String
|
28
|
-
belongs_to :article, Article
|
29
|
-
|
30
|
-
def initialize(text = nil)
|
31
|
-
@text = text
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def setup
|
36
|
-
config = {
|
37
|
-
:adapter => 'filesys',
|
38
|
-
:database => 'fstest',
|
39
|
-
}
|
40
|
-
|
41
|
-
$DBG = true
|
42
|
-
|
43
|
-
Og::Database.drop_db!(config)
|
44
|
-
@og = Og::Database.new(config)
|
45
|
-
end
|
46
|
-
|
47
|
-
def teardown
|
48
|
-
@og.shutdown
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_all
|
52
|
-
a = Article.new('gmosx', 30)
|
53
|
-
a.save!
|
54
|
-
|
55
|
-
a1 = Article[1]
|
56
|
-
|
57
|
-
assert_equal 'gmosx', a1.name
|
58
|
-
assert_equal 30, a1.age
|
59
|
-
assert_equal 1, a1.oid
|
60
|
-
|
61
|
-
Article.create('drak', 12)
|
62
|
-
Article.create('ekarak', 34)
|
63
|
-
Article.create('mario', 53)
|
64
|
-
Article.create('elathan', 34)
|
65
|
-
=begin
|
66
|
-
articles = Article.all
|
67
|
-
|
68
|
-
assert_equal 5, articles.size
|
69
|
-
=end
|
70
|
-
a3 = Article[3]
|
71
|
-
|
72
|
-
assert_equal 'ekarak', a3.name
|
73
|
-
|
74
|
-
c1 = Comment.new('a comment')
|
75
|
-
c1.save!
|
76
|
-
a3.add_comment(c1)
|
77
|
-
=begin
|
78
|
-
a5 = Article[3]
|
79
|
-
assert_equal 1, a5.comments.size
|
80
|
-
=end
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|