has_emails 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/{CHANGELOG → CHANGELOG.rdoc} +8 -15
- data/{README → README.rdoc} +14 -14
- data/Rakefile +46 -38
- data/test/factory.rb +27 -21
- data/test/functional/has_emails_test.rb +10 -10
- data/test/unit/email_test.rb +1 -1
- metadata +8 -8
- /data/{MIT-LICENSE → LICENSE} +0 -0
@@ -1,35 +1,28 @@
|
|
1
|
-
|
1
|
+
== master
|
2
2
|
|
3
|
-
|
3
|
+
== 0.1.2 / 2008-06-29
|
4
|
+
|
5
|
+
* Add compatibility with has_messages 0.1.2
|
6
|
+
|
7
|
+
== 0.1.1 / 2008-06-22
|
4
8
|
|
5
9
|
* Remove log files from gems
|
6
10
|
|
7
|
-
|
11
|
+
== 0.1.0 / 2008-05-05
|
8
12
|
|
9
13
|
* Update to latest has_messages api
|
10
|
-
|
11
14
|
* Simplify by removing support for models other than EmailAddresses in Emails
|
12
|
-
|
13
15
|
* Updated documentation
|
14
16
|
|
15
|
-
|
17
|
+
== 0.0.1 / 2007-09-26
|
16
18
|
|
17
19
|
* Refactor has_email_address/has_email_addresses so that new associations for unsent/sent emails isn't created for has_email_address
|
18
|
-
|
19
20
|
* Add state changes fixtures for tests
|
20
|
-
|
21
21
|
* Add tests for ApplicationMailer
|
22
|
-
|
23
22
|
* Add support for tracking the original email address for senders/recipients even if the email address changes on the associated model (i.e. EmailAddress/User/etc.)
|
24
|
-
|
25
23
|
* Support converting models with an email_address/email_addresses association
|
26
|
-
|
27
24
|
* Allow the sender of emails to be an arbitrary string email address
|
28
|
-
|
29
25
|
* Add documentation
|
30
|
-
|
31
26
|
* Move test fixtures out of the test application root directory
|
32
|
-
|
33
27
|
* Convert dos newlines to unix newlines
|
34
|
-
|
35
28
|
* Update against latest changes to has_messages
|
data/{README → README.rdoc}
RENAMED
@@ -5,21 +5,21 @@ logging and asynchronous support.
|
|
5
5
|
|
6
6
|
== Resources
|
7
7
|
|
8
|
-
Wiki
|
9
|
-
|
10
|
-
* http://wiki.pluginaweek.org/Has_emails
|
11
|
-
|
12
8
|
API
|
13
9
|
|
14
10
|
* http://api.pluginaweek.org/has_emails
|
15
11
|
|
12
|
+
Bugs
|
13
|
+
|
14
|
+
* http://pluginaweek.lighthouseapp.com/projects/13272-has_emails
|
15
|
+
|
16
16
|
Development
|
17
17
|
|
18
|
-
* http://
|
18
|
+
* http://github.com/pluginaweek/has_emails
|
19
19
|
|
20
20
|
Source
|
21
21
|
|
22
|
-
*
|
22
|
+
* git://github.com/pluginaweek/has_emails.git
|
23
23
|
|
24
24
|
== Description
|
25
25
|
|
@@ -51,19 +51,19 @@ In addition to queueing emails, you can build them directly like so:
|
|
51
51
|
email.to EmailAddress.find(456)
|
52
52
|
email.subject = 'Hey!'
|
53
53
|
email.body = 'Does anyone want to go out tonight?'
|
54
|
-
email.deliver
|
54
|
+
email.deliver
|
55
55
|
|
56
56
|
=== Replying to emails
|
57
57
|
|
58
58
|
reply = email.reply_to_all
|
59
59
|
reply.body = "I'd love to go out!"
|
60
|
-
reply.deliver
|
60
|
+
reply.deliver
|
61
61
|
|
62
62
|
=== Forwarding emails
|
63
63
|
|
64
64
|
forward = email.forward
|
65
65
|
forward.body = 'Interested?'
|
66
|
-
forward.deliver
|
66
|
+
forward.deliver
|
67
67
|
|
68
68
|
=== Processing email asynchronously
|
69
69
|
|
@@ -76,13 +76,13 @@ To process queued emails, you need an external cron job that checks and sends
|
|
76
76
|
them like so:
|
77
77
|
|
78
78
|
Email.with_state('queued').each do |email|
|
79
|
-
email.deliver
|
79
|
+
email.deliver
|
80
80
|
end
|
81
81
|
|
82
82
|
== Testing
|
83
83
|
|
84
84
|
Before you can run any tests, the following gem must be installed:
|
85
|
-
* plugin_test_helper[http://
|
85
|
+
* plugin_test_helper[http://github.com/pluginaweek/plugin_test_helper]
|
86
86
|
|
87
87
|
To run against a specific version of Rails:
|
88
88
|
|
@@ -91,6 +91,6 @@ To run against a specific version of Rails:
|
|
91
91
|
== Dependencies
|
92
92
|
|
93
93
|
* Rails 2.1 or later
|
94
|
-
* plugins_plus[http://
|
95
|
-
* has_messages[http://
|
96
|
-
* state_machine[http://
|
94
|
+
* plugins_plus[http://github.com/pluginaweek/plugins_plus]
|
95
|
+
* has_messages[http://github.com/pluginaweek/has_messages]
|
96
|
+
* state_machine[http://github.com/pluginaweek/state_machine]
|
data/Rakefile
CHANGED
@@ -3,48 +3,56 @@ require 'rake/rdoctask'
|
|
3
3
|
require 'rake/gempackagetask'
|
4
4
|
require 'rake/contrib/sshpublisher'
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
spec = Gem::Specification.new do |s|
|
7
|
+
s.name = 'has_emails'
|
8
|
+
s.version = '0.1.2'
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
s.summary = 'Demonstrates a reference implementation for sending emails with logging and asynchronous support.'
|
11
|
+
|
12
|
+
s.files = FileList['{app,db,lib,test}/**/*'].to_a - FileList['test/app_root/log/*'].to_a + %w(CHANGELOG.rdoc init.rb LICENSE Rakefile README.rdoc)
|
13
|
+
s.require_path = 'lib'
|
14
|
+
s.has_rdoc = true
|
15
|
+
s.test_files = Dir['test/**/*_test.rb']
|
16
|
+
s.add_dependency 'has_messages', '>= 0.1.2'
|
17
|
+
s.add_dependency 'validates_as_email_address', '>= 0.0.2'
|
18
|
+
|
19
|
+
s.author = 'Aaron Pfeifer'
|
20
|
+
s.email = 'aaron@pluginaweek.org'
|
21
|
+
s.homepage = 'http://www.pluginaweek.org'
|
22
|
+
s.rubyforge_project = 'pluginaweek'
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'Default: run all tests.'
|
12
26
|
task :default => :test
|
13
27
|
|
14
|
-
desc
|
28
|
+
desc "Test the #{spec.name} plugin."
|
15
29
|
Rake::TestTask.new(:test) do |t|
|
16
30
|
t.libs << 'lib'
|
17
|
-
t.
|
31
|
+
t.test_files = spec.test_files
|
18
32
|
t.verbose = true
|
19
33
|
end
|
20
34
|
|
21
|
-
|
35
|
+
begin
|
36
|
+
require 'rcov/rcovtask'
|
37
|
+
namespace :test do
|
38
|
+
desc "Test the #{spec.name} plugin with Rcov."
|
39
|
+
Rcov::RcovTask.new(:rcov) do |t|
|
40
|
+
t.libs << 'lib'
|
41
|
+
t.test_files = spec.test_files
|
42
|
+
t.rcov_opts << '--exclude="^(?!lib/|app/)"'
|
43
|
+
t.verbose = true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
rescue LoadError
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Generate documentation for the #{spec.name} plugin."
|
22
50
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
23
51
|
rdoc.rdoc_dir = 'rdoc'
|
24
|
-
rdoc.title =
|
52
|
+
rdoc.title = spec.name
|
25
53
|
rdoc.template = '../rdoc_template.rb'
|
26
54
|
rdoc.options << '--line-numbers' << '--inline-source'
|
27
|
-
rdoc.rdoc_files.include('README')
|
28
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
29
|
-
end
|
30
|
-
|
31
|
-
spec = Gem::Specification.new do |s|
|
32
|
-
s.name = PKG_NAME
|
33
|
-
s.version = PKG_VERSION
|
34
|
-
s.platform = Gem::Platform::RUBY
|
35
|
-
s.summary = 'Demonstrates a reference implementation for sending emails with logging and asynchronous support.'
|
36
|
-
|
37
|
-
s.files = FileList['{app,db,lib,test}/**/*'].to_a - FileList['test/app_root/log/*'].to_a + %w(CHANGELOG init.rb MIT-LICENSE Rakefile README)
|
38
|
-
s.require_path = 'lib'
|
39
|
-
s.autorequire = 'has_emails'
|
40
|
-
s.has_rdoc = true
|
41
|
-
s.test_files = Dir['test/**/*_test.rb']
|
42
|
-
s.add_dependency 'has_messages', '>= 0.1.0'
|
43
|
-
s.add_dependency 'validates_as_email_address', '>= 0.0.2'
|
44
|
-
|
45
|
-
s.author = 'Aaron Pfeifer'
|
46
|
-
s.email = 'aaron@pluginaweek.org'
|
47
|
-
s.homepage = 'http://www.pluginaweek.org'
|
55
|
+
rdoc.rdoc_files.include('README.rdoc', 'CHANGELOG.rdoc', 'LICENSE', 'lib/**/*.rb', 'app/**/*.rb')
|
48
56
|
end
|
49
57
|
|
50
58
|
Rake::GemPackageTask.new(spec) do |p|
|
@@ -53,14 +61,14 @@ Rake::GemPackageTask.new(spec) do |p|
|
|
53
61
|
p.need_zip = true
|
54
62
|
end
|
55
63
|
|
56
|
-
desc 'Publish the beta gem'
|
64
|
+
desc 'Publish the beta gem.'
|
57
65
|
task :pgem => [:package] do
|
58
|
-
Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{
|
66
|
+
Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{spec.name}-#{spec.version}.gem").upload
|
59
67
|
end
|
60
68
|
|
61
|
-
desc 'Publish the API documentation'
|
69
|
+
desc 'Publish the API documentation.'
|
62
70
|
task :pdoc => [:rdoc] do
|
63
|
-
Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{
|
71
|
+
Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{spec.name}", 'rdoc').upload
|
64
72
|
end
|
65
73
|
|
66
74
|
desc 'Publish the API docs and gem'
|
@@ -73,10 +81,10 @@ task :release => [:gem, :package] do
|
|
73
81
|
ruby_forge = RubyForge.new.configure
|
74
82
|
ruby_forge.login
|
75
83
|
|
76
|
-
%w(
|
77
|
-
file = "pkg/#{
|
84
|
+
%w(gem tgz zip).each do |ext|
|
85
|
+
file = "pkg/#{spec.name}-#{spec.version}.#{ext}"
|
78
86
|
puts "Releasing #{File.basename(file)}..."
|
79
87
|
|
80
|
-
ruby_forge.add_release(
|
88
|
+
ruby_forge.add_release(spec.rubyforge_project, spec.name, spec.version, file)
|
81
89
|
end
|
82
90
|
end
|
data/test/factory.rb
CHANGED
@@ -1,26 +1,32 @@
|
|
1
1
|
module Factory
|
2
|
-
# Build actions for the
|
3
|
-
def self.build(
|
4
|
-
name =
|
5
|
-
define_method("#{name}_attributes", block)
|
2
|
+
# Build actions for the model
|
3
|
+
def self.build(model, &block)
|
4
|
+
name = model.to_s.underscore
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
6
|
+
define_method("#{name}_attributes", block)
|
7
|
+
define_method("valid_#{name}_attributes") {|*args| valid_attributes_for(model, *args)}
|
8
|
+
define_method("new_#{name}") {|*args| new_record(model, *args)}
|
9
|
+
define_method("create_#{name}") {|*args| create_record(model, *args)}
|
10
|
+
end
|
11
|
+
|
12
|
+
# Get valid attributes for the model
|
13
|
+
def valid_attributes_for(model, attributes = {})
|
14
|
+
name = model.to_s.underscore
|
15
|
+
send("#{name}_attributes", attributes)
|
16
|
+
attributes
|
17
|
+
end
|
18
|
+
|
19
|
+
# Build an unsaved record
|
20
|
+
def new_record(model, *args)
|
21
|
+
model.new(valid_attributes_for(model, *args))
|
22
|
+
end
|
23
|
+
|
24
|
+
# Build and save/reload a record
|
25
|
+
def create_record(model, *args)
|
26
|
+
record = new_record(model, *args)
|
27
|
+
record.save!
|
28
|
+
record.reload
|
29
|
+
record
|
24
30
|
end
|
25
31
|
|
26
32
|
build Email do |attributes|
|
@@ -36,7 +36,7 @@ class EmailAddresFunctionalsTest < Test::Unit::TestCase
|
|
36
36
|
def test_should_be_able_to_send_new_emails
|
37
37
|
email = @email_address.emails.build
|
38
38
|
email.to create_email_address(:spec => 'jane.smith@gmail.com')
|
39
|
-
assert email.deliver
|
39
|
+
assert email.deliver
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -44,7 +44,7 @@ class EmailAddressWithUnsentEmails < Test::Unit::TestCase
|
|
44
44
|
def setup
|
45
45
|
@email_address = create_email_address
|
46
46
|
@sent_email = create_email(:sender => @email_address, :to => create_email_address(:spec => 'jane.smith@gmail.com'))
|
47
|
-
@sent_email.deliver
|
47
|
+
@sent_email.deliver
|
48
48
|
@first_draft = create_email(:sender => @email_address)
|
49
49
|
@second_draft = create_email(:sender => @email_address)
|
50
50
|
end
|
@@ -65,10 +65,10 @@ class EmailAddressWithSentEmails < Test::Unit::TestCase
|
|
65
65
|
@draft = create_email(:sender => @email_address)
|
66
66
|
|
67
67
|
@first_sent_email = create_email(:sender => @email_address, :to => @to)
|
68
|
-
@first_sent_email.deliver
|
68
|
+
@first_sent_email.deliver
|
69
69
|
|
70
70
|
@second_sent_email = create_email(:sender => @email_address, :to => @to)
|
71
|
-
@second_sent_email.deliver
|
71
|
+
@second_sent_email.deliver
|
72
72
|
end
|
73
73
|
|
74
74
|
def test_should_have_sent_emails
|
@@ -88,10 +88,10 @@ class EmailAddressWithReceivedEmails < Test::Unit::TestCase
|
|
88
88
|
@unsent_email = create_email(:sender => @sender, :to => @email_address)
|
89
89
|
|
90
90
|
@first_sent_email = create_email(:sender => @sender, :to => @email_address)
|
91
|
-
@first_sent_email.deliver
|
91
|
+
@first_sent_email.deliver
|
92
92
|
|
93
93
|
@second_sent_email = create_email(:sender => @sender, :to => @email_address)
|
94
|
-
@second_sent_email.deliver
|
94
|
+
@second_sent_email.deliver
|
95
95
|
end
|
96
96
|
|
97
97
|
def test_should_have_received_emails
|
@@ -109,16 +109,16 @@ class EmailAddressWithHiddenEmailsTest < Test::Unit::TestCase
|
|
109
109
|
@unsent_email = create_email(:sender => @email_address)
|
110
110
|
|
111
111
|
hidden_sent_email = create_email(:sender => @email_address, :to => @friend)
|
112
|
-
hidden_sent_email.deliver
|
112
|
+
hidden_sent_email.deliver
|
113
113
|
hidden_sent_email.hide!
|
114
114
|
@sent_email = create_email(:sender => @email_address, :to => @friend)
|
115
|
-
@sent_email.deliver
|
115
|
+
@sent_email.deliver
|
116
116
|
|
117
117
|
hidden_received_email = create_email(:sender => @friend, :to => @email_address)
|
118
|
-
hidden_received_email.deliver
|
118
|
+
hidden_received_email.deliver
|
119
119
|
hidden_received_email.recipients.first.hide!
|
120
120
|
@received_email = create_email(:sender => @friend, :to => @email_address)
|
121
|
-
@received_email.deliver
|
121
|
+
@received_email.deliver
|
122
122
|
end
|
123
123
|
|
124
124
|
def test_should_not_include_hidden_emails_in_emails
|
data/test/unit/email_test.rb
CHANGED
@@ -12,7 +12,7 @@ class EmailAfterBeingDeliveredTest < Test::Unit::TestCase
|
|
12
12
|
:cc => create_email_address(:spec => 'support@localhost'),
|
13
13
|
:bcc => create_email_address(:spec => 'feedback@localhost')
|
14
14
|
)
|
15
|
-
assert @email.deliver
|
15
|
+
assert @email.deliver
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_should_send_mail
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_emails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Pfeifer
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-06-
|
12
|
+
date: 2008-06-29 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.1.
|
22
|
+
version: 0.1.2
|
23
23
|
version:
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
25
|
name: validates_as_email_address
|
@@ -67,11 +67,11 @@ files:
|
|
67
67
|
- test/unit/email_address_test.rb
|
68
68
|
- test/unit/action_mailer_test.rb
|
69
69
|
- test/unit/email_test.rb
|
70
|
-
- CHANGELOG
|
70
|
+
- CHANGELOG.rdoc
|
71
71
|
- init.rb
|
72
|
-
-
|
72
|
+
- LICENSE
|
73
73
|
- Rakefile
|
74
|
-
- README
|
74
|
+
- README.rdoc
|
75
75
|
has_rdoc: true
|
76
76
|
homepage: http://www.pluginaweek.org
|
77
77
|
post_install_message:
|
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
93
|
version:
|
94
94
|
requirements: []
|
95
95
|
|
96
|
-
rubyforge_project:
|
96
|
+
rubyforge_project: pluginaweek
|
97
97
|
rubygems_version: 1.1.1
|
98
98
|
signing_key:
|
99
99
|
specification_version: 2
|
/data/{MIT-LICENSE → LICENSE}
RENAMED
File without changes
|