has_messages 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,47 +1,34 @@
1
- *SVN*
1
+ == master
2
2
 
3
- *0.1.1* (June 22nd, 2008)
3
+ == 0.1.2 / 2008-06-29
4
+
5
+ * Add compatibility with state_machine 0.2.0
6
+
7
+ == 0.1.1 / 2008-06-22
4
8
 
5
9
  * Remove log files from gems
6
10
 
7
- *0.1.0* (May 5th, 2008)
11
+ == 0.1.0 / 2008-05-05
8
12
 
9
13
  * Remove dependency on acts_as_list
10
-
11
14
  * Update to reflect changes from has_states to state_machine
12
-
13
15
  * Introduce an ActionMailer-type api for adding the various types of recipients
14
-
15
16
  * Update migrations to support Rails 2.0 syntax
16
-
17
17
  * Replace has_finder dependency with named_scope
18
-
19
18
  * Remove has_messages helper
20
-
21
19
  * Update documentation
22
20
 
23
- *0.0.1* (September 26th, 2007)
21
+ == 0.0.1 / 2007-09-26
24
22
 
25
23
  * Add state_changes fixtures for tests
26
-
27
24
  * Use has_finder for tracking the deletion status of Messages/MessageRecipients
28
-
29
25
  * Message#forward and Message#reply should create new instances of the current class, not always Message
30
-
31
26
  * Add type field to MessageRecipient table
32
-
33
27
  * Allow message senders to not be model recipients in third-party plugins
34
-
35
28
  * Remove old references to Message::StateExtension
36
-
37
29
  * Update with dependency on custom_callbacks
38
-
39
30
  * Add documentation
40
-
41
31
  * Convert dos newlines to unix newlines
42
-
43
32
  * Move ReceiverMessage state into the MessageRecipient class
44
-
45
33
  * Moved Build extensions out of the MessageRecipient class
46
-
47
34
  * Fix determining whether classes exist in has_messages
File without changes
@@ -4,21 +4,21 @@
4
4
 
5
5
  == Resources
6
6
 
7
- Wiki
8
-
9
- * http://wiki.pluginaweek.org/Has_messages
10
-
11
7
  API
12
8
 
13
9
  * http://api.pluginaweek.org/has_messages
14
10
 
11
+ Bugs
12
+
13
+ * http://pluginaweek.lighthouseapp.com/projects/13274-has_messages
14
+
15
15
  Development
16
16
 
17
- * http://dev.pluginaweek.org/browser/trunk/has_messages
17
+ * http://github.com/pluginaweek/has_messages
18
18
 
19
19
  Source
20
20
 
21
- * http://svn.pluginaweek.org/trunk/has_messages
21
+ * git://github.com/pluginaweek/has_messages.git
22
22
 
23
23
  == Description
24
24
 
@@ -55,19 +55,19 @@ for more information about the asssociations that are generated from this macro.
55
55
  message.to user1, user2
56
56
  message.subject = 'Hey!'
57
57
  message.body = 'Does anyone want to go out tonight?'
58
- message.deliver!
58
+ message.deliver
59
59
 
60
60
  === Replying to messages
61
61
 
62
62
  reply = message.reply_to_all
63
63
  reply.body = "I'd love to go out!"
64
- reply.deliver!
64
+ reply.deliver
65
65
 
66
66
  === Forwarding messages
67
67
 
68
68
  forward = message.forward
69
69
  forward.body = 'Interested?'
70
- forward.deliver!
70
+ forward.deliver
71
71
 
72
72
  === Processing messages asynchronously
73
73
 
@@ -75,21 +75,21 @@ In addition to delivering messages immediately, you can also *queue* messages so
75
75
  that an external application processes and delivers them. This is especially
76
76
  useful for messages that need to be sent outside of the confines of the application.
77
77
 
78
- To queue messages for external processing, you can use the <tt>queue!</tt> event,
79
- rather than <tt>deliver!</tt>. This will indicate to any external processes that
78
+ To queue messages for external processing, you can use the +queue+ event,
79
+ rather than +deliver+. This will indicate to any external processes that
80
80
  the message is ready to be sent.
81
81
 
82
82
  To process queued emails, you need an external cron job that checks and sends
83
83
  them like so:
84
84
 
85
85
  Message.with_state('queued').each do |message|
86
- message.deliver!
86
+ message.deliver
87
87
  end
88
88
 
89
89
  == Testing
90
90
 
91
91
  Before you can run any tests, the following gem must be installed:
92
- * plugin_test_helper[http://wiki.pluginaweek.org/Plugin_test_helper]
92
+ * plugin_test_helper[http://github.com/pluginaweek/plugin_test_helper]
93
93
 
94
94
  To run against a specific version of Rails:
95
95
 
@@ -98,5 +98,5 @@ To run against a specific version of Rails:
98
98
  == Dependencies
99
99
 
100
100
  * Rails 2.1 or later
101
- * plugins_plus[http://wiki.pluginaweek.org/Plugins_plus]
102
- * state_machine[http://wiki.pluginaweek.org/State_machine]
101
+ * plugins_plus[http://github.com/pluginaweek/plugins_plus]
102
+ * state_machine[http://github.com/pluginaweek/state_machine]
data/Rakefile CHANGED
@@ -3,47 +3,55 @@ require 'rake/rdoctask'
3
3
  require 'rake/gempackagetask'
4
4
  require 'rake/contrib/sshpublisher'
5
5
 
6
- PKG_NAME = 'has_messages'
7
- PKG_VERSION = '0.1.1'
8
- PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
9
- RUBY_FORGE_PROJECT = 'pluginaweek'
10
-
11
- desc 'Default: run unit tests.'
6
+ spec = Gem::Specification.new do |s|
7
+ s.name = 'has_messages'
8
+ s.version = '0.1.2'
9
+ s.platform = Gem::Platform::RUBY
10
+ s.summary = 'Demonstrates a reference implementation for sending messages between users.'
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 'state_machine', '>= 0.2.0'
17
+
18
+ s.author = 'Aaron Pfeifer'
19
+ s.email = 'aaron@pluginaweek.org'
20
+ s.homepage = 'http://www.pluginaweek.org'
21
+ s.rubyforge_project = 'pluginaweek'
22
+ end
23
+
24
+ desc 'Default: run all tests.'
12
25
  task :default => :test
13
26
 
14
- desc 'Test the has_messages plugin.'
27
+ desc "Test the #{spec.name} plugin."
15
28
  Rake::TestTask.new(:test) do |t|
16
29
  t.libs << 'lib'
17
- t.pattern = 'test/**/*_test.rb'
30
+ t.test_files = spec.test_files
18
31
  t.verbose = true
19
32
  end
20
33
 
21
- desc 'Generate documentation for the has_messages plugin.'
34
+ begin
35
+ require 'rcov/rcovtask'
36
+ namespace :test do
37
+ desc "Test the #{spec.name} plugin with Rcov."
38
+ Rcov::RcovTask.new(:rcov) do |t|
39
+ t.libs << 'lib'
40
+ t.test_files = spec.test_files
41
+ t.rcov_opts << '--exclude="^(?!lib/|app/)"'
42
+ t.verbose = true
43
+ end
44
+ end
45
+ rescue LoadError
46
+ end
47
+
48
+ desc "Generate documentation for the #{spec.name} plugin."
22
49
  Rake::RDocTask.new(:rdoc) do |rdoc|
23
50
  rdoc.rdoc_dir = 'rdoc'
24
- rdoc.title = 'HasMessages'
51
+ rdoc.title = spec.name
25
52
  rdoc.template = '../rdoc_template.rb'
26
53
  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 messages between users.'
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_messages'
40
- s.has_rdoc = true
41
- s.test_files = Dir['test/**/*_test.rb']
42
- s.add_dependency 'state_machine', '>= 0.1.0'
43
-
44
- s.author = 'Aaron Pfeifer'
45
- s.email = 'aaron@pluginaweek.org'
46
- s.homepage = 'http://www.pluginaweek.org'
54
+ rdoc.rdoc_files.include('README.rdoc', 'CHANGELOG.rdoc', 'LICENSE', 'lib/**/*.rb', 'app/**/*.rb')
47
55
  end
48
56
 
49
57
  Rake::GemPackageTask.new(spec) do |p|
@@ -52,14 +60,14 @@ Rake::GemPackageTask.new(spec) do |p|
52
60
  p.need_zip = true
53
61
  end
54
62
 
55
- desc 'Publish the beta gem'
63
+ desc 'Publish the beta gem.'
56
64
  task :pgem => [:package] do
57
- Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{PKG_FILE_NAME}.gem").upload
65
+ Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{spec.name}-#{spec.version}.gem").upload
58
66
  end
59
67
 
60
- desc 'Publish the API documentation'
68
+ desc 'Publish the API documentation.'
61
69
  task :pdoc => [:rdoc] do
62
- Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{PKG_NAME}", 'rdoc').upload
70
+ Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{spec.name}", 'rdoc').upload
63
71
  end
64
72
 
65
73
  desc 'Publish the API docs and gem'
@@ -72,10 +80,10 @@ task :release => [:gem, :package] do
72
80
  ruby_forge = RubyForge.new.configure
73
81
  ruby_forge.login
74
82
 
75
- %w( gem tgz zip ).each do |ext|
76
- file = "pkg/#{PKG_FILE_NAME}.#{ext}"
83
+ %w(gem tgz zip).each do |ext|
84
+ file = "pkg/#{spec.name}-#{spec.version}.#{ext}"
77
85
  puts "Releasing #{File.basename(file)}..."
78
86
 
79
- ruby_forge.add_release(RUBY_FORGE_PROJECT, PKG_NAME, PKG_VERSION, file)
87
+ ruby_forge.add_release(spec.rubyforge_project, spec.name, spec.version, file)
80
88
  end
81
89
  end
data/lib/has_messages.rb CHANGED
@@ -23,8 +23,8 @@ module PluginAWeek #:nodoc:
23
23
  # message.subject = 'Hello'
24
24
  # message.body = 'How are you?'
25
25
  # message.to User.find(456)
26
- # message.save!
27
- # message.deliver!
26
+ # message.save
27
+ # message.deliver
28
28
  #
29
29
  # == Drafts
30
30
  #
data/test/factory.rb CHANGED
@@ -1,26 +1,32 @@
1
1
  module Factory
2
- # Build actions for the class
3
- def self.build(klass, &block)
4
- name = klass.to_s.underscore
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
- module_eval <<-end_eval
8
- def valid_#{name}_attributes(attributes = {})
9
- #{name}_attributes(attributes)
10
- attributes
11
- end
12
-
13
- def new_#{name}(attributes = {})
14
- #{klass}.new(valid_#{name}_attributes(attributes))
15
- end
16
-
17
- def create_#{name}(*args)
18
- record = new_#{name}(*args)
19
- record.save!
20
- record.reload
21
- record
22
- end
23
- end_eval
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 Message do |attributes|
@@ -36,7 +36,7 @@ class UserTest < Test::Unit::TestCase
36
36
  def test_should_be_able_to_send_new_messages
37
37
  message = @user.messages.build
38
38
  message.to create_user(:login => 'John')
39
- assert message.deliver!
39
+ assert message.deliver
40
40
  end
41
41
  end
42
42
 
@@ -44,7 +44,7 @@ class UserWithUnsentMessages < Test::Unit::TestCase
44
44
  def setup
45
45
  @user = create_user
46
46
  @sent_message = create_message(:sender => @user, :to => create_user(:login => 'you'))
47
- @sent_message.deliver!
47
+ @sent_message.deliver
48
48
  @first_draft = create_message(:sender => @user)
49
49
  @second_draft = create_message(:sender => @user)
50
50
  end
@@ -65,10 +65,10 @@ class UserWithSentMessages < Test::Unit::TestCase
65
65
  @draft = create_message(:sender => @user)
66
66
 
67
67
  @first_sent_message = create_message(:sender => @user, :to => @to)
68
- @first_sent_message.deliver!
68
+ @first_sent_message.deliver
69
69
 
70
70
  @second_sent_message = create_message(:sender => @user, :to => @to)
71
- @second_sent_message.deliver!
71
+ @second_sent_message.deliver
72
72
  end
73
73
 
74
74
  def test_should_have_sent_messages
@@ -88,10 +88,10 @@ class UserWithReceivedMessages < Test::Unit::TestCase
88
88
  @unsent_message = create_message(:sender => @sender, :to => @user)
89
89
 
90
90
  @first_sent_message = create_message(:sender => @sender, :to => @user)
91
- @first_sent_message.deliver!
91
+ @first_sent_message.deliver
92
92
 
93
93
  @second_sent_message = create_message(:sender => @sender, :to => @user)
94
- @second_sent_message.deliver!
94
+ @second_sent_message.deliver
95
95
  end
96
96
 
97
97
  def test_should_have_received_messages
@@ -109,16 +109,16 @@ class UserWithHiddenMessagesTest < Test::Unit::TestCase
109
109
  @unsent_message = create_message(:sender => @user)
110
110
 
111
111
  hidden_sent_message = create_message(:sender => @user, :to => @friend)
112
- hidden_sent_message.deliver!
112
+ hidden_sent_message.deliver
113
113
  hidden_sent_message.hide!
114
114
  @sent_message = create_message(:sender => @user, :to => @friend)
115
- @sent_message.deliver!
115
+ @sent_message.deliver
116
116
 
117
117
  hidden_received_message = create_message(:sender => @friend, :to => @user)
118
- hidden_received_message.deliver!
118
+ hidden_received_message.deliver
119
119
  hidden_received_message.recipients.first.hide!
120
120
  @received_message = create_message(:sender => @friend, :to => @user)
121
- @received_message.deliver!
121
+ @received_message.deliver
122
122
  end
123
123
 
124
124
  def test_should_not_include_hidden_messages_in_messages
@@ -164,14 +164,14 @@ class MessageRecipientUnreadWithUnsentMessageTest < Test::Unit::TestCase
164
164
  end
165
165
 
166
166
  def test_should_not_be_able_to_view
167
- assert !@recipient.view!
167
+ assert !@recipient.view
168
168
  end
169
169
  end
170
170
 
171
171
  class MessageRecipientUnreadWithSentMessageTest < Test::Unit::TestCase
172
172
  def setup
173
173
  @recipient = create_message_recipient
174
- @recipient.message.deliver!
174
+ @recipient.message.deliver
175
175
  end
176
176
 
177
177
  def test_should_be_in_the_unread_state
@@ -179,15 +179,15 @@ class MessageRecipientUnreadWithSentMessageTest < Test::Unit::TestCase
179
179
  end
180
180
 
181
181
  def test_should_be_able_to_view
182
- assert @recipient.view!
182
+ assert @recipient.view
183
183
  end
184
184
  end
185
185
 
186
186
  class MessageRecipientReadTest < Test::Unit::TestCase
187
187
  def setup
188
188
  @recipient = create_message_recipient
189
- @recipient.message.deliver!
190
- @recipient.view!
189
+ @recipient.message.deliver
190
+ @recipient.view
191
191
  end
192
192
 
193
193
  def test_should_be_in_the_read_state
@@ -195,7 +195,7 @@ class MessageRecipientReadTest < Test::Unit::TestCase
195
195
  end
196
196
 
197
197
  def test_should_not_be_able_to_view
198
- assert !@recipient.view!
198
+ assert !@recipient.view
199
199
  end
200
200
  end
201
201
 
@@ -156,11 +156,11 @@ class MessageWithoutRecipientsTest < Test::Unit::TestCase
156
156
  end
157
157
 
158
158
  def test_should_not_be_able_to_queue
159
- assert !@message.queue!
159
+ assert !@message.queue
160
160
  end
161
161
 
162
162
  def test_should_not_be_able_to_deliver
163
- assert !@message.deliver!
163
+ assert !@message.deliver
164
164
  end
165
165
  end
166
166
 
@@ -193,18 +193,18 @@ class MessageWithRecipientsTest < Test::Unit::TestCase
193
193
  end
194
194
 
195
195
  def test_should_be_able_to_queue
196
- assert @message.queue!
196
+ assert @message.queue
197
197
  end
198
198
 
199
199
  def test_should_be_able_to_deliver
200
- assert @message.deliver!
200
+ assert @message.deliver
201
201
  end
202
202
  end
203
203
 
204
204
  class MessageQueuedTest < Test::Unit::TestCase
205
205
  def setup
206
206
  @message = create_message(:to => create_user(:login => 'coward'))
207
- @message.queue!
207
+ @message.queue
208
208
  end
209
209
 
210
210
  def test_should_be_in_the_queued_state
@@ -212,18 +212,18 @@ class MessageQueuedTest < Test::Unit::TestCase
212
212
  end
213
213
 
214
214
  def test_should_not_be_able_to_queue
215
- assert !@message.queue!
215
+ assert !@message.queue
216
216
  end
217
217
 
218
218
  def test_should_be_able_to_deliver
219
- assert @message.deliver!
219
+ assert @message.deliver
220
220
  end
221
221
  end
222
222
 
223
223
  class MessageDeliveredTest < Test::Unit::TestCase
224
224
  def setup
225
225
  @message = create_message(:to => create_user(:login => 'coward'))
226
- @message.deliver!
226
+ @message.deliver
227
227
  end
228
228
 
229
229
  def test_should_be_in_the_sent_state
@@ -231,11 +231,11 @@ class MessageDeliveredTest < Test::Unit::TestCase
231
231
  end
232
232
 
233
233
  def test_should_not_be_able_to_queue
234
- assert !@message.queue!
234
+ assert !@message.queue
235
235
  end
236
236
 
237
237
  def test_should_not_be_able_to_deliver
238
- assert !@message.deliver!
238
+ assert !@message.deliver
239
239
  end
240
240
  end
241
241
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_messages
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Pfeifer
8
- autorequire: has_messages
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-06-22 00:00:00 -04:00
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.0
22
+ version: 0.2.0
23
23
  version:
24
24
  description:
25
25
  email: aaron@pluginaweek.org
@@ -55,11 +55,11 @@ files:
55
55
  - test/unit
56
56
  - test/unit/message_test.rb
57
57
  - test/unit/message_recipient_test.rb
58
- - CHANGELOG
58
+ - CHANGELOG.rdoc
59
59
  - init.rb
60
- - MIT-LICENSE
60
+ - LICENSE
61
61
  - Rakefile
62
- - README
62
+ - README.rdoc
63
63
  has_rdoc: true
64
64
  homepage: http://www.pluginaweek.org
65
65
  post_install_message:
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  version:
82
82
  requirements: []
83
83
 
84
- rubyforge_project:
84
+ rubyforge_project: pluginaweek
85
85
  rubygems_version: 1.1.1
86
86
  signing_key:
87
87
  specification_version: 2