glue 0.31.0 → 0.40.0
Sign up to get free protection for your applications and to get access to all the features.
- data/doc/AUTHORS +1 -1
- data/doc/LICENSE +2 -3
- data/doc/RELEASES +0 -4
- data/lib/glue.rb +3 -3
- data/lib/glue/attribute.rb +114 -0
- data/lib/glue/attributeutils.rb +117 -0
- data/lib/glue/autoreload.rb +0 -4
- data/lib/glue/builder.rb +0 -2
- data/lib/glue/builder/xml.rb +0 -2
- data/lib/glue/cache.rb +3 -5
- data/lib/glue/cache/drb.rb +0 -2
- data/lib/glue/cache/memory.rb +0 -2
- data/lib/glue/cache/og.rb +11 -6
- data/lib/glue/configuration.rb +60 -15
- data/lib/glue/fixture.rb +3 -5
- data/lib/glue/localization.rb +0 -2
- data/lib/glue/logger.rb +1 -2
- data/lib/glue/mail.rb +0 -2
- data/lib/glue/mailer.rb +4 -2
- data/lib/glue/mailer/incoming.rb +0 -2
- data/lib/glue/mailer/outgoing.rb +3 -5
- data/lib/glue/settings.rb +0 -2
- data/lib/glue/uri.rb +0 -2
- data/lib/glue/validation.rb +6 -8
- data/test/glue/builder/tc_xml.rb +3 -2
- data/test/glue/tc_attribute.rb +112 -0
- data/test/glue/{tc_property_mixins.rb → tc_attribute_mixins.rb} +9 -11
- data/test/glue/tc_configuration.rb +1 -1
- data/test/glue/tc_fixture.rb +4 -3
- data/test/glue/tc_logger.rb +2 -2
- data/test/glue/tc_mail.rb +22 -21
- data/test/glue/tc_stores.rb +0 -2
- data/test/glue/tc_uri.rb +12 -12
- data/test/glue/tc_validation.rb +13 -13
- metadata +52 -64
- data/INSTALL +0 -56
- data/ProjectInfo +0 -49
- data/README +0 -21
- data/lib/glue/markup.rb +0 -123
- data/lib/glue/property.rb +0 -290
- data/lib/glue/sanitize.rb +0 -48
- data/lib/glue/template.rb +0 -219
- data/setup.rb +0 -1585
- data/test/glue/tc_property.rb +0 -112
- data/test/glue/tc_property_type_checking.rb +0 -41
- data/test/glue/tc_template.rb +0 -35
data/lib/glue/fixture.rb
CHANGED
@@ -3,7 +3,7 @@ require 'facet/kernel/constant'
|
|
3
3
|
require 'facet/ormsupport'
|
4
4
|
|
5
5
|
require 'glue/configuration'
|
6
|
-
require '
|
6
|
+
require 'nitro/template'
|
7
7
|
|
8
8
|
module Glue
|
9
9
|
|
@@ -94,7 +94,7 @@ class Fixture < Hash
|
|
94
94
|
def parse_yaml(path)
|
95
95
|
require 'yaml'
|
96
96
|
|
97
|
-
str =
|
97
|
+
str = Nitro::Template.new.render(File.read(path))
|
98
98
|
|
99
99
|
if yaml = YAML::load(str)
|
100
100
|
for name, data in yaml
|
@@ -116,7 +116,7 @@ class Fixture < Hash
|
|
116
116
|
def parse_csv(path)
|
117
117
|
require 'csv'
|
118
118
|
|
119
|
-
str =
|
119
|
+
str = Nitro::Template.new.render(File.read(path))
|
120
120
|
|
121
121
|
reader = CSV::Reader.create(str)
|
122
122
|
header = reader.shift
|
@@ -152,5 +152,3 @@ private
|
|
152
152
|
end
|
153
153
|
|
154
154
|
end
|
155
|
-
|
156
|
-
# * George Moschovitis <gm@navel.gr>
|
data/lib/glue/localization.rb
CHANGED
data/lib/glue/logger.rb
CHANGED
@@ -157,6 +157,7 @@ class Logger
|
|
157
157
|
# Saddly have to duplicate the code to make
|
158
158
|
# Binding.of_caller work.
|
159
159
|
#++
|
160
|
+
|
160
161
|
def self.trace(expr, style=:p)
|
161
162
|
unless expr.respond_to? :to_str
|
162
163
|
warn "trace: Can't evaluate the given value: #{caller.first}"
|
@@ -207,5 +208,3 @@ module Logging
|
|
207
208
|
end
|
208
209
|
|
209
210
|
end
|
210
|
-
|
211
|
-
# * George Moschovitis <gm@navel.gr>
|
data/lib/glue/mail.rb
CHANGED
data/lib/glue/mailer.rb
CHANGED
@@ -41,6 +41,10 @@ class Mailer < Mail
|
|
41
41
|
# The default template root.
|
42
42
|
|
43
43
|
setting :template_root, :default => 'template/mail', :doc => 'The default template root'
|
44
|
+
|
45
|
+
# The default from address
|
46
|
+
|
47
|
+
setting :from, :default => 'bot@nitroproject.org', :doc => 'The default from address'
|
44
48
|
|
45
49
|
# An array to store the delivered mails, useful
|
46
50
|
# for testing.
|
@@ -49,5 +53,3 @@ class Mailer < Mail
|
|
49
53
|
end
|
50
54
|
|
51
55
|
end
|
52
|
-
|
53
|
-
# * George Moschovitis <gm@navel.gr>
|
data/lib/glue/mailer/incoming.rb
CHANGED
data/lib/glue/mailer/outgoing.rb
CHANGED
@@ -9,7 +9,7 @@ module OutgoingMailer
|
|
9
9
|
|
10
10
|
on_included %{ base.extend ClassMethods }
|
11
11
|
|
12
|
-
def initialize(from = nil, to = nil, subject = nil, body =
|
12
|
+
def initialize(from = nil, to = nil, subject = nil, body = Nitro::FileTemplate.new)
|
13
13
|
super
|
14
14
|
@charset = Mailer.default_charset.dup
|
15
15
|
@encode_subject = Mailer.encode_subject
|
@@ -66,7 +66,7 @@ module OutgoingMailer
|
|
66
66
|
|
67
67
|
mailer.send(method_name, *params)
|
68
68
|
|
69
|
-
unless mailer.body.is_a?
|
69
|
+
unless mailer.body.is_a? String
|
70
70
|
mailer.body = render_body(method_name, mailer)
|
71
71
|
end
|
72
72
|
|
@@ -94,7 +94,7 @@ module OutgoingMailer
|
|
94
94
|
def perform_delivery_smtp(mail) # :nodoc:
|
95
95
|
c = Mailer.server
|
96
96
|
Net::SMTP.start(c[:address], c[:port], c[:domain], c[:username], c[:password], c[:authentication]) do |smtp|
|
97
|
-
smtp.send_message(mail.encoded, mail.from, *[mail.to,mail.cc,mail.bcc].compact)
|
97
|
+
smtp.send_message(mail.encoded, mail.from, *[mail.to, mail.cc, mail.bcc].compact)
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -117,5 +117,3 @@ module OutgoingMailer
|
|
117
117
|
end
|
118
118
|
|
119
119
|
end
|
120
|
-
|
121
|
-
# * George Moschovitis <gm@navel.gr>
|
data/lib/glue/settings.rb
CHANGED
data/lib/glue/uri.rb
CHANGED
data/lib/glue/validation.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'facets/core/class/cattr'
|
2
|
+
require 'facets/core/module/on_included'
|
3
|
+
require 'facets/more/inheritor'
|
2
4
|
|
3
5
|
require 'glue/configuration'
|
4
6
|
|
@@ -25,8 +27,8 @@ module Glue
|
|
25
27
|
# === Example
|
26
28
|
#
|
27
29
|
# class User
|
28
|
-
#
|
29
|
-
#
|
30
|
+
# attr_accessor :name, String
|
31
|
+
# attr_accessor :level, Fixnum
|
30
32
|
#
|
31
33
|
# validate_length :name, :range => 2..6
|
32
34
|
# validate_unique :name, :msg => :name_allready_exists
|
@@ -114,9 +116,9 @@ module Validation
|
|
114
116
|
def clear
|
115
117
|
@errors.clear
|
116
118
|
end
|
117
|
-
|
119
|
+
|
118
120
|
def to_a
|
119
|
-
@errors.
|
121
|
+
@errors.inject([]) { |a, kv| a << kv }
|
120
122
|
end
|
121
123
|
|
122
124
|
def join(glue)
|
@@ -443,7 +445,3 @@ end
|
|
443
445
|
class Module # :nodoc: all
|
444
446
|
include Glue::Validation::ClassMethods
|
445
447
|
end
|
446
|
-
|
447
|
-
# * George Moschovitis <gm@navel.gr>
|
448
|
-
# * Brian Bugh <brian@xsi-design.com>
|
449
|
-
# * Bryan Soto <bryan.a.soto@gmail.com>
|
data/test/glue/builder/tc_xml.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'nitro', 'lib')
|
2
3
|
|
3
4
|
require 'test/unit'
|
4
5
|
require 'glue/builder/xml'
|
@@ -22,8 +23,8 @@ class TC_BuildersXml < Test::Unit::TestCase # :nodoc: all
|
|
22
23
|
assert_equal '<b>This is bold</b>', x.buffer
|
23
24
|
|
24
25
|
x = Glue::XmlBuilder.new
|
25
|
-
x.a('
|
26
|
-
assert_equal '<a href="http://www.
|
26
|
+
x.a('Nitro', :href => 'http://www.nitroproject.org')
|
27
|
+
assert_equal '<a href="http://www.nitroproject.org">Nitro</a>', x.buffer
|
27
28
|
|
28
29
|
|
29
30
|
x = Glue::XmlBuilder.new
|
@@ -0,0 +1,112 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'og', 'lib')
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
require 'og'
|
6
|
+
require 'glue/logger'
|
7
|
+
require 'glue/attribute'
|
8
|
+
|
9
|
+
def VarChar(size)
|
10
|
+
return String, :sql => "VARCHAR(#{ size })"
|
11
|
+
end
|
12
|
+
NotNull = {:sql => "NOT NULL"}.freeze
|
13
|
+
Null = {:sql => "NULL"}.freeze
|
14
|
+
|
15
|
+
module Test # :nodoc: all
|
16
|
+
|
17
|
+
class Msg
|
18
|
+
include Og::Unmanageable
|
19
|
+
|
20
|
+
attr_accessor :owner_oid, Fixnum
|
21
|
+
attr_accessor :val1, :val2, :val3, Fixnum, :sql => "smallint"
|
22
|
+
attr_accessor :title, :body, String
|
23
|
+
attr_accessor :test, String, :sql => "char(10) NOT NULL"
|
24
|
+
attr_accessor :count, Fixnum
|
25
|
+
attr_accessor :create_time, Time
|
26
|
+
|
27
|
+
# a marshaled property
|
28
|
+
attr_accessor :options, Array
|
29
|
+
|
30
|
+
# property with macro arguments!
|
31
|
+
attr_accessor :address, VarChar(30), NotNull
|
32
|
+
|
33
|
+
def initialize
|
34
|
+
@create_time = Time.now
|
35
|
+
@options = []
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
class SubMsg < Msg
|
41
|
+
# to avoid conflicts with tc_og.rb
|
42
|
+
include Og::Unmanageable
|
43
|
+
|
44
|
+
# duplicate definition with different type!
|
45
|
+
attr_accessor :count, Float
|
46
|
+
|
47
|
+
# another property
|
48
|
+
attr_accessor :another, Fixnum
|
49
|
+
end
|
50
|
+
|
51
|
+
class C
|
52
|
+
attr_accessor :name
|
53
|
+
attr_accessor :description
|
54
|
+
end
|
55
|
+
|
56
|
+
class C
|
57
|
+
attr_accessor :name, String
|
58
|
+
attr_accessor :description, String
|
59
|
+
end
|
60
|
+
|
61
|
+
class TC_N_Attributes < Test::Unit::TestCase
|
62
|
+
|
63
|
+
def setup
|
64
|
+
Msg.define_force_methods
|
65
|
+
@msg1 = Msg.new
|
66
|
+
end
|
67
|
+
|
68
|
+
def teardown
|
69
|
+
@msg1 = nil
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_props
|
73
|
+
|
74
|
+
# bug: props for subclasses.
|
75
|
+
# bug: props propagated to base classes.
|
76
|
+
|
77
|
+
assert(SubMsg.serializable_attributes)
|
78
|
+
assert_equal(Msg.serializable_attributes.size(), SubMsg.serializable_attributes.size() - 1)
|
79
|
+
|
80
|
+
assert_equal(11, Msg.serializable_attributes.size)
|
81
|
+
assert_equal(12, SubMsg.serializable_attributes.size)
|
82
|
+
|
83
|
+
# bug: duplicate definition
|
84
|
+
|
85
|
+
a = SubMsg.serializable_attributes.find { |p| :count == p }
|
86
|
+
assert_equal(Float, SubMsg.ann[SubMsg.serializable_attributes.find { |p| :count == p }].class)
|
87
|
+
|
88
|
+
# dont force conversion.
|
89
|
+
|
90
|
+
@msg1.count = 2.4
|
91
|
+
assert_equal(Float, @msg1.count.class)
|
92
|
+
|
93
|
+
# force conversion
|
94
|
+
|
95
|
+
@msg1.__force_count(2.4)
|
96
|
+
assert_equal(Fixnum, @msg1.count.class)
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_macro_params
|
100
|
+
sql = Msg.ann[Msg.serializable_attributes.find { |p| :address == p}].sql
|
101
|
+
# FIXME: Temporarily dissabled.
|
102
|
+
# assert_equal 'VARCHAR(30) NOT NULL', sql
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
def test_soc
|
107
|
+
assert_equal String, C.ann.name.class
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
|
-
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'og', 'lib')
|
2
3
|
|
3
4
|
require 'test/unit'
|
4
|
-
require 'glue/
|
5
|
+
require 'glue/attribute'
|
5
6
|
|
6
7
|
module Mixin
|
7
|
-
|
8
|
+
attr_accessor :date
|
8
9
|
ann self, :dummy => [123]
|
9
10
|
end
|
10
11
|
|
@@ -21,18 +22,18 @@ end
|
|
21
22
|
class MixedWithProp
|
22
23
|
include Mixin
|
23
24
|
|
24
|
-
|
25
|
+
attr_accessor :dummy
|
25
26
|
end
|
26
27
|
|
27
28
|
class Pure
|
28
|
-
|
29
|
+
attr_accessor :dummy
|
29
30
|
end
|
30
31
|
|
31
32
|
class Empty
|
32
33
|
end
|
33
34
|
|
34
35
|
class Base
|
35
|
-
|
36
|
+
attr_accessor :date
|
36
37
|
ann self, :dummy => [123]
|
37
38
|
end
|
38
39
|
|
@@ -52,7 +53,7 @@ class TC_MixinsTest < ::Test::Unit::TestCase
|
|
52
53
|
end
|
53
54
|
|
54
55
|
def test_manage_entities
|
55
|
-
assert_respond_to( Pure, :
|
56
|
+
assert_respond_to( Pure, :serializable_attributes )
|
56
57
|
assert_respond_to( Pure.new, :dummy )
|
57
58
|
end
|
58
59
|
|
@@ -61,7 +62,7 @@ class TC_MixinsTest < ::Test::Unit::TestCase
|
|
61
62
|
end
|
62
63
|
|
63
64
|
def test_managing_mixins
|
64
|
-
assert_respond_to( Mixin, :
|
65
|
+
assert_respond_to( Mixin, :serializable_attributes )
|
65
66
|
end
|
66
67
|
|
67
68
|
def test_managing_mixed_classes
|
@@ -83,6 +84,3 @@ class TC_MixinsTest < ::Test::Unit::TestCase
|
|
83
84
|
=end
|
84
85
|
end
|
85
86
|
end
|
86
|
-
|
87
|
-
# * Thomas Quas <tquas@yahoo.com>
|
88
|
-
# * George Moschovitis <gm@navel.gr>
|
@@ -96,7 +96,7 @@ class TC_Configuration < Test::Unit::TestCase # :nodoc: all
|
|
96
96
|
assert_equal '/gmosx/2', Configuration[Dummy][:root_dir].value
|
97
97
|
assert_equal 2, Another.max_age
|
98
98
|
|
99
|
-
Configuration.
|
99
|
+
Configuration.parse_yaml <<-end_val
|
100
100
|
Another:
|
101
101
|
max_age: 5
|
102
102
|
TC_Configuration.Internal:
|
data/test/glue/tc_fixture.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__), 'lib')
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'nitro', 'lib')
|
2
3
|
|
3
4
|
require 'test/unit'
|
4
5
|
require 'glue/fixture'
|
@@ -27,8 +28,8 @@ class TestFixtureExplicitRootDir < Test::Unit::TestCase # :nodoc: all
|
|
27
28
|
assert_equal 'Renos', users['renos'].name
|
28
29
|
|
29
30
|
articles = Fixture.new(Article, :root_dir => RootDir)
|
30
|
-
|
31
|
-
assert_equal
|
31
|
+
|
32
|
+
assert_equal 10, articles.size
|
32
33
|
assert_equal 'This is cool', articles['article_1'].title
|
33
34
|
assert_equal 'Another', articles['article_2'].title
|
34
35
|
assert_equal 'I love this', articles['Test'].title
|
@@ -80,7 +81,7 @@ class TestFixtureRootDirSetting < Test::Unit::TestCase # :nodoc: all
|
|
80
81
|
|
81
82
|
articles = Fixture.new(Article)
|
82
83
|
|
83
|
-
assert_equal
|
84
|
+
assert_equal 10, articles.size
|
84
85
|
assert_equal 'This is cool', articles['article_1'].title
|
85
86
|
assert_equal 'Another', articles['article_2'].title
|
86
87
|
assert_equal 'I love this', articles['Test'].title
|
data/test/glue/tc_logger.rb
CHANGED
@@ -20,8 +20,8 @@ class TC_Logger < Test::Unit::TestCase # :nodoc: all
|
|
20
20
|
# bug: Binding.of_caller thinks Logger is the caller.
|
21
21
|
a = 14
|
22
22
|
b = 13
|
23
|
-
|
24
|
-
|
23
|
+
# Logger.trace 'a * b'
|
24
|
+
# assert_equal(" INFO: hello\nDEBUG: a * b = 182\n", @io.string)
|
25
25
|
|
26
26
|
@io.string = ''
|
27
27
|
Logger.debug 'hello'
|
data/test/glue/tc_mail.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'nitro', 'lib')
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'og', 'lib')
|
2
4
|
|
3
5
|
$NITRO_NO_ENVIRONMENT = true
|
4
6
|
|
5
7
|
require 'test/unit'
|
6
8
|
require 'ostruct'
|
7
|
-
|
8
9
|
require 'nitro'
|
9
10
|
require 'glue/configuration'
|
10
11
|
require 'glue/mailer'
|
@@ -15,24 +16,24 @@ class TestCaseMail < Test::Unit::TestCase # :nodoc: all
|
|
15
16
|
class DummyMailer < Mailer
|
16
17
|
def initialize
|
17
18
|
super
|
18
|
-
@bcc = '
|
19
|
+
@bcc = 'george.moschovitis@gmail.com'
|
19
20
|
@template_root = 'test/public/dummy_mailer'
|
20
21
|
end
|
21
22
|
|
22
23
|
def registration(to, username, token)
|
23
24
|
@to = to
|
24
|
-
@from = 'system@
|
25
|
+
@from = 'system@nitroproject.org'
|
25
26
|
@subject = 'Nitro.com registration'
|
26
|
-
@cc = '
|
27
|
+
@cc = 'george.moschovitis@gmail.com'
|
27
28
|
@body.username = username
|
28
29
|
@body.token = token
|
29
30
|
end
|
30
31
|
|
31
32
|
def greek(to)
|
32
33
|
@to = to
|
33
|
-
@from = 'system@
|
34
|
+
@from = 'system@nitroproject.org'
|
34
35
|
@subject = 'Ελληνικός Τίτλος'
|
35
|
-
@cc = '
|
36
|
+
@cc = 'george.moschovitis@gmail.com'
|
36
37
|
@body = 'Τί έγινε ρε παιδιά;'
|
37
38
|
end
|
38
39
|
end
|
@@ -42,22 +43,22 @@ class TestCaseMail < Test::Unit::TestCase # :nodoc: all
|
|
42
43
|
|
43
44
|
def register
|
44
45
|
token = 999
|
45
|
-
deliver_registration('gmosx@
|
46
|
+
deliver_registration('gmosx@nitroproject.org', 'gmosx', token)
|
46
47
|
end
|
47
48
|
end
|
48
49
|
=end
|
49
50
|
def test_mail
|
50
|
-
m = Glue::Mail.new 'gmosx@
|
51
|
-
expected = %{From: gmosx@
|
52
|
-
To: drak@
|
51
|
+
m = Glue::Mail.new 'gmosx@nitroproject.org', 'drak@nitroproject.org', 'A simple test', 'This is the body of the message'
|
52
|
+
expected = %{From: gmosx@nitroproject.org
|
53
|
+
To: drak@nitroproject.org
|
53
54
|
Subject: A simple test
|
54
55
|
|
55
56
|
This is the body of the message}
|
56
57
|
assert_equal expected, m.encoded
|
57
58
|
|
58
|
-
m.to = %w{ renos@
|
59
|
-
expected = %{From: gmosx@
|
60
|
-
To: renos@
|
59
|
+
m.to = %w{ renos@nitroproject.org stella@nitroproject.org }
|
60
|
+
expected = %{From: gmosx@nitroproject.org
|
61
|
+
To: renos@nitroproject.org, stella@nitroproject.org
|
61
62
|
Subject: A simple test
|
62
63
|
|
63
64
|
This is the body of the message}
|
@@ -68,19 +69,19 @@ This is the body of the message}
|
|
68
69
|
def test_mailer
|
69
70
|
assert_equal 0, DummyMailer.deliveries.size
|
70
71
|
|
71
|
-
Mailer.server[:address] = 'mail.
|
72
|
-
# assert_equal 'mail.
|
72
|
+
Mailer.server[:address] = 'mail.nitroproject.org'
|
73
|
+
# assert_equal 'mail.nitroproject.org', DummyMailer.server[:address]
|
73
74
|
|
74
75
|
Mailer.delivery_method = :test
|
75
76
|
Mailer.template_root = File.join(File.dirname(__FILE__), '..', 'root', 'dummy_mailer')
|
76
77
|
token = 999
|
77
|
-
DummyMailer.deliver_registration('
|
78
|
+
DummyMailer.deliver_registration('george.moschovitis@gmail.com', 'gmosx', token)
|
78
79
|
assert_equal 1, DummyMailer.deliveries.size
|
79
80
|
|
80
|
-
expected = %{From: system@
|
81
|
-
To:
|
82
|
-
Cc:
|
83
|
-
Bcc:
|
81
|
+
expected = %{From: system@nitroproject.org
|
82
|
+
To: george.moschovitis@gmail.com
|
83
|
+
Cc: george.moschovitis@gmail.com
|
84
|
+
Bcc: george.moschovitis@gmail.com
|
84
85
|
Subject: =?utf-8?Q?Nitro=2ecom_registration?=
|
85
86
|
|
86
87
|
Hello gmosx
|
@@ -91,7 +92,7 @@ Here is your <b>Token</b>: 999
|
|
91
92
|
}
|
92
93
|
assert_equal expected, DummyMailer.deliveries[0].encoded
|
93
94
|
|
94
|
-
DummyMailer.deliver_greek('
|
95
|
+
DummyMailer.deliver_greek('george.moschovitis@gmail.com')
|
95
96
|
assert_equal 2, DummyMailer.deliveries.size
|
96
97
|
end
|
97
98
|
=end
|