carrier 0.1.2 → 0.1.3
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.
- data/Gemfile +1 -1
- data/VERSION +1 -1
- data/app/controllers/carrier/messages_controller.rb +9 -4
- data/app/models/carrier/message.rb +9 -5
- data/app/models/carrier/message/subject.rb +3 -1
- data/app/views/carrier/messages/_archive_chain.html.erb +2 -2
- data/app/views/carrier/messages/_index_message.html.erb +1 -1
- data/app/views/carrier/messages/_message_collapsed.html.erb +13 -0
- data/app/views/carrier/messages/{_message.html.erb → _message_expanded.html.erb} +1 -1
- data/app/views/carrier/messages/_reply.html.erb +1 -1
- data/app/views/carrier/messages/as_sent.html.erb +42 -35
- data/app/views/carrier/messages/collapsed.js.erb +1 -0
- data/app/views/carrier/messages/create.js.erb +1 -1
- data/app/views/carrier/messages/expanded.js.erb +1 -0
- data/app/views/carrier/messages/show.html.erb +5 -3
- data/app/views/layouts/carrier/application.html.erb +1 -0
- data/carrier.gemspec +10 -10
- data/config/routes.rb +1 -0
- data/lib/carrier.rb +3 -1
- data/lib/carrier/rails/engine.rb +1 -6
- data/lib/carrier/version.rb +1 -1
- data/spec/carrier/app/models/message_scopes_spec.rb +7 -3
- data/spec/carrier/app/models/message_spec.rb +5 -13
- data/spec/dummy/app/controllers/default_controller.rb +0 -1
- data/spec/dummy/config/routes.rb +0 -2
- data/spec/dummy/factories/message.rb +15 -0
- data/spec/dummy/factories/user.rb +11 -2
- data/spec/dummy/features/carrier.feature +2 -2
- data/spec/dummy_spec_helper.rb +3 -1
- data/spec/support/singleton.rb +17 -0
- metadata +12 -12
- data/spec/dummy/app/controllers/posts_controller.rb +0 -83
- data/spec/dummy/app/models/post.rb +0 -2
- data/spec/support/factories.rb +0 -47
- data/spec/support/rspec_helpers.rb +0 -22
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
@@ -3,11 +3,16 @@
|
|
3
3
|
module Carrier
|
4
4
|
class MessagesController < ApplicationController
|
5
5
|
|
6
|
-
before_filter :only => [:show] do
|
6
|
+
before_filter :only => [:show, :as_sent] do
|
7
7
|
@message = Message.find(params[:id], :include => :chain)
|
8
8
|
|
9
|
-
@message.
|
10
|
-
|
9
|
+
@message.mark_chain_as_read_for current_user
|
10
|
+
end
|
11
|
+
|
12
|
+
[:collapsed, :expanded].each do |mode|
|
13
|
+
define_method(mode) do
|
14
|
+
@message = Message.find(params[:id])
|
15
|
+
# @message.mark_as_read! :for => current_user if mode == :expanded
|
11
16
|
end
|
12
17
|
end
|
13
18
|
|
@@ -42,7 +47,7 @@ module Carrier
|
|
42
47
|
@message = Message.new(params[:message])
|
43
48
|
respond_to do |format|
|
44
49
|
if @message.save
|
45
|
-
format.html { redirect_to(
|
50
|
+
format.html { redirect_to(carrier.messages_path, :notice => t('views.carrier.successfully_created')) }
|
46
51
|
format.js
|
47
52
|
else
|
48
53
|
format.js { render :action => "new" }
|
@@ -37,7 +37,7 @@ module Carrier
|
|
37
37
|
in_answer_to = find id
|
38
38
|
new :sender => user.id,
|
39
39
|
:recipients => find_recipients(in_answer_to, user),
|
40
|
-
:subject =>
|
40
|
+
:subject => in_answer_to.subject,
|
41
41
|
:chain_id => in_answer_to.chain_id,
|
42
42
|
:answers_to => in_answer_to.id
|
43
43
|
end
|
@@ -47,6 +47,12 @@ module Carrier
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
+
def mark_chain_as_read_for user
|
51
|
+
chain_messages.each do |message|
|
52
|
+
message.mark_as_read! :for => user
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
50
56
|
def chain_archived?
|
51
57
|
chain && archived_for_any_user?
|
52
58
|
end
|
@@ -89,7 +95,7 @@ module Carrier
|
|
89
95
|
end
|
90
96
|
|
91
97
|
def recipients_names
|
92
|
-
|
98
|
+
User.where(:id => recipients).pluck(:username).join(', ')
|
93
99
|
end
|
94
100
|
|
95
101
|
def recipients_names= recipients_array
|
@@ -103,15 +109,13 @@ module Carrier
|
|
103
109
|
end
|
104
110
|
|
105
111
|
def participants
|
106
|
-
(
|
112
|
+
(recipients + [sender]).compact
|
107
113
|
end
|
108
114
|
|
109
115
|
def date_formatted
|
110
116
|
created_at.strftime('%H:%M %d.%m')
|
111
117
|
end
|
112
118
|
|
113
|
-
protected
|
114
|
-
|
115
119
|
private
|
116
120
|
|
117
121
|
def chain!
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Carrier
|
2
2
|
class Message < ActiveRecord::Base
|
3
|
-
|
3
|
+
|
4
|
+
=begin
|
4
5
|
class << self
|
5
6
|
def re name
|
6
7
|
if name.match(/re/).nil?
|
@@ -19,6 +20,7 @@ module Carrier
|
|
19
20
|
def subject_without_re
|
20
21
|
subject.gsub(/re\[\d+\]: /,'')
|
21
22
|
end
|
23
|
+
=end
|
22
24
|
|
23
25
|
end
|
24
26
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% if chain.archived_for?(current_user) %>
|
2
2
|
<%= b raw(t 'views.carrier.thread_archived') %>
|
3
|
-
<%= link_to raw(t 'views.carrier.unarchive_link'), unarchive_chain_path(:chain_id => chain, :user_id => current_user), :remote => true, :method => :post %>
|
3
|
+
<%= link_to raw(t 'views.carrier.unarchive_link'), carrier.unarchive_chain_path(:chain_id => chain, :user_id => current_user), :remote => true, :method => :post %>
|
4
4
|
<% else %>
|
5
|
-
<%= link_to raw(t 'views.carrier.archive_link'), archive_chain_path(:chain_id => chain, :user_id => current_user), :remote => true, :method => :post %>
|
5
|
+
<%= link_to raw(t 'views.carrier.archive_link'), carrier.archive_chain_path(:chain_id => chain, :user_id => current_user), :remote => true, :method => :post %>
|
6
6
|
<% end %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= link_to message, :class => "message_ma_wrapper #{'ma_has_new' if m > 0 }" do %>
|
1
|
+
<%= link_to (action_name == 'sent' ? carrier.as_sent_message_path(message) : carrier.message_path(message)), :class => "message_ma_wrapper #{'ma_has_new' if m > 0 }" do %>
|
2
2
|
<div class="message_ma_date"><%= message.date_formatted %></div>
|
3
3
|
<div class="message_ma_users">
|
4
4
|
<%= truncate(message.sender_name + " + " + message.recipients_names, :length => 20) %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= link_to carrier.expanded_message_path(message), :remote => true, :class => "message_collapse", :id => "message-#{message.id}" do %>
|
2
|
+
<div class="message_ma_wrapper">
|
3
|
+
<div class="message_ma_date"><%= raw message.date_formatted %></div>
|
4
|
+
<div class="message_ma_user"><%= message.sender_name %></div>
|
5
|
+
<div>
|
6
|
+
<% if unread_messages.include? message %>
|
7
|
+
<b class='red'>unread</b>
|
8
|
+
<% end %>
|
9
|
+
|
10
|
+
<%= simple_format truncate(message.content, :length => 88) %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%=
|
1
|
+
<%= link_to carrier.collapsed_message_path(message), :remote => true, :class => "message_collapse", :id => "message-#{message.id}" do %>
|
2
2
|
<div class="message_ma_wrapper ma_open">
|
3
3
|
<div class="message_ma_date"><%= raw message.date_formatted %></div>
|
4
4
|
<div class="message_ma_user"><%= message.sender_name %></div>
|
@@ -1,40 +1,47 @@
|
|
1
1
|
<div id="carrier">
|
2
|
-
<div class="carrier_wr">
|
3
|
-
<%= render :partial => 'head' %>
|
4
|
-
<%= render :partial => 'nav_messages' %>
|
5
|
-
<div class="message_ma_box_info">
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
<%= raw(t('views.carrier.participants')) %>
|
11
|
-
<%= b raw(t('views.carrier.me')) %>,
|
12
|
-
<%= b @message.recipients_names %>
|
13
|
-
</div>
|
2
|
+
<div class="carrier_wr">
|
3
|
+
<%= render :partial => 'head' %>
|
4
|
+
<%= render :partial => 'nav_messages' %>
|
5
|
+
<div class="message_ma_box_info">
|
6
|
+
<div class="message_ma_archive_chain" id="archive_chain">
|
7
|
+
<%= render :partial => 'archive_chain', :locals => {:chain => @message.chain} %>
|
8
|
+
</div>
|
9
|
+
<h2><%= @message.subject %></h2>
|
14
10
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
<%= raw(t('views.carrier.participants')) %>
|
12
|
+
<%= b raw(t('views.carrier.me')) %>,
|
13
|
+
<%= b @message.recipients_names %>
|
14
|
+
</div>
|
19
15
|
|
20
|
-
|
21
|
-
|
22
|
-
<%=
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
<div>
|
28
|
-
<b><%= @message.subject %></b>
|
29
|
-
</div>
|
30
|
-
<div>
|
31
|
-
<%= @message.content %>
|
32
|
-
</div>
|
33
|
-
</div>
|
16
|
+
<% @message.answers.each do |message| %>
|
17
|
+
<% if message.sender == current_user.id %>
|
18
|
+
<%= render :partial => 'message_expanded', :locals => {:message => message } %>
|
19
|
+
<% else %>
|
20
|
+
<%= render :partial => 'message_collapsed', :locals => {:message => message } %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
34
23
|
|
35
|
-
<div class="
|
36
|
-
|
37
|
-
|
38
|
-
</div>
|
39
|
-
|
24
|
+
<div class="message_ma_wrapper ma_open">
|
25
|
+
<div class="message_ma_date">
|
26
|
+
<%= @message.date_formatted %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div class="message_ma_user">
|
30
|
+
<%= @message.sender_name %>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div>
|
34
|
+
<b><%= @message.subject %></b>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div>
|
38
|
+
<%= @message.content %>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<div class="ma_wrapper">
|
43
|
+
<%= link_to raw(t 'views.carrier.reply_link'), carrier.reply_message_path(@message), :remote => true %>
|
44
|
+
<div id="reply_form"></div>
|
45
|
+
</div>
|
46
|
+
</div>
|
40
47
|
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
$('#message-<%= @message.id %>').replaceWith('<%= escape_javascript(render :partial => 'message_collapsed.html.erb', :locals => {:message => @message}) %>')
|
@@ -1 +1 @@
|
|
1
|
-
document.location.href = '<%=
|
1
|
+
document.location.href = '<%= carrier.as_sent_message_path @message %>'
|
@@ -0,0 +1 @@
|
|
1
|
+
$('#message-<%= @message.id %>').replaceWith('<%= escape_javascript(render :partial => 'message_expanded.html.erb', :locals => {:message => @message }) %>')
|
@@ -6,13 +6,15 @@
|
|
6
6
|
<div class="message_ma_archive_chain" id="archive_chain">
|
7
7
|
<%= render :partial => 'archive_chain', :locals => {:chain => @message.chain} %>
|
8
8
|
</div>
|
9
|
-
<h2><%= @message.
|
9
|
+
<h2><%= @message.subject %></h2>
|
10
10
|
<%= raw(t('views.carrier.participants')) %>
|
11
11
|
<%= b raw(t('views.carrier.me')) %>,
|
12
12
|
<%= b @message.recipients_names %>
|
13
13
|
</div>
|
14
14
|
|
15
|
-
|
15
|
+
<% @message.answers.each do |message| %>
|
16
|
+
<%= render :partial => 'message_collapsed', :locals => { :message => message } %>
|
17
|
+
<% end %>
|
16
18
|
|
17
19
|
<div class="message_ma_wrapper ma_open">
|
18
20
|
<div class="message_ma_date">
|
@@ -27,7 +29,7 @@
|
|
27
29
|
</div>
|
28
30
|
|
29
31
|
<div class="ma_wrapper">
|
30
|
-
<%= link_to raw(t 'views.carrier.reply_link'), reply_message_path(@message), :remote => true %>
|
32
|
+
<%= link_to raw(t 'views.carrier.reply_link'), carrier.reply_message_path(@message), :remote => true %>
|
31
33
|
<div id="reply_form"></div>
|
32
34
|
</div>
|
33
35
|
</div> <!-- // div.carrier_wr -->
|
data/carrier.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "carrier"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["stanislaw"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-05-24"
|
13
13
|
s.description = "Raw github-like messaging system to reuse across Rails apps. Acts as Rails 3.1 mountable engine. Fast and robust."
|
14
14
|
s.email = "s.pankevich@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -52,12 +52,15 @@ Gem::Specification.new do |s|
|
|
52
52
|
"app/views/carrier/messages/_form.html.erb",
|
53
53
|
"app/views/carrier/messages/_head.html.erb",
|
54
54
|
"app/views/carrier/messages/_index_message.html.erb",
|
55
|
-
"app/views/carrier/messages/
|
55
|
+
"app/views/carrier/messages/_message_collapsed.html.erb",
|
56
|
+
"app/views/carrier/messages/_message_expanded.html.erb",
|
56
57
|
"app/views/carrier/messages/_nav_messages.html.erb",
|
57
58
|
"app/views/carrier/messages/_recipients.html.erb",
|
58
59
|
"app/views/carrier/messages/_reply.html.erb",
|
59
60
|
"app/views/carrier/messages/as_sent.html.erb",
|
61
|
+
"app/views/carrier/messages/collapsed.js.erb",
|
60
62
|
"app/views/carrier/messages/create.js.erb",
|
63
|
+
"app/views/carrier/messages/expanded.js.erb",
|
61
64
|
"app/views/carrier/messages/index.html.erb",
|
62
65
|
"app/views/carrier/messages/new.html.erb",
|
63
66
|
"app/views/carrier/messages/new.js.erb",
|
@@ -97,13 +100,11 @@ Gem::Specification.new do |s|
|
|
97
100
|
"spec/dummy/app/assets/stylesheets/scaffold.css",
|
98
101
|
"spec/dummy/app/controllers/application_controller.rb",
|
99
102
|
"spec/dummy/app/controllers/default_controller.rb",
|
100
|
-
"spec/dummy/app/controllers/posts_controller.rb",
|
101
103
|
"spec/dummy/app/helpers/application_helper.rb",
|
102
104
|
"spec/dummy/app/helpers/default_helper.rb",
|
103
105
|
"spec/dummy/app/helpers/posts_helper.rb",
|
104
106
|
"spec/dummy/app/mailers/.gitkeep",
|
105
107
|
"spec/dummy/app/models/.gitkeep",
|
106
|
-
"spec/dummy/app/models/post.rb",
|
107
108
|
"spec/dummy/app/models/user.rb",
|
108
109
|
"spec/dummy/app/views/default/index.html.erb",
|
109
110
|
"spec/dummy/app/views/devise/confirmations/new.html.erb",
|
@@ -183,8 +184,7 @@ Gem::Specification.new do |s|
|
|
183
184
|
"spec/dummy_spec_helper.rb",
|
184
185
|
"spec/requests/main_spec.rb",
|
185
186
|
"spec/support/controller_macros.rb",
|
186
|
-
"spec/support/
|
187
|
-
"spec/support/rspec_helpers.rb"
|
187
|
+
"spec/support/singleton.rb"
|
188
188
|
]
|
189
189
|
s.homepage = "http://github.com/stanislaw/carrier"
|
190
190
|
s.licenses = ["MIT"]
|
@@ -204,7 +204,7 @@ Gem::Specification.new do |s|
|
|
204
204
|
s.add_development_dependency(%q<unicorn>, [">= 0"])
|
205
205
|
s.add_development_dependency(%q<rake-kit>, [">= 0"])
|
206
206
|
s.add_development_dependency(%q<jeweler>, [">= 1.6.4"])
|
207
|
-
s.add_development_dependency(%q<rails>, ["
|
207
|
+
s.add_development_dependency(%q<rails>, [">= 3.1"])
|
208
208
|
s.add_development_dependency(%q<mysql2>, [">= 0"])
|
209
209
|
s.add_development_dependency(%q<devise>, [">= 0"])
|
210
210
|
s.add_development_dependency(%q<cutter>, [">= 0"])
|
@@ -217,7 +217,7 @@ Gem::Specification.new do |s|
|
|
217
217
|
s.add_dependency(%q<unicorn>, [">= 0"])
|
218
218
|
s.add_dependency(%q<rake-kit>, [">= 0"])
|
219
219
|
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
220
|
-
s.add_dependency(%q<rails>, ["
|
220
|
+
s.add_dependency(%q<rails>, [">= 3.1"])
|
221
221
|
s.add_dependency(%q<mysql2>, [">= 0"])
|
222
222
|
s.add_dependency(%q<devise>, [">= 0"])
|
223
223
|
s.add_dependency(%q<cutter>, [">= 0"])
|
@@ -231,7 +231,7 @@ Gem::Specification.new do |s|
|
|
231
231
|
s.add_dependency(%q<unicorn>, [">= 0"])
|
232
232
|
s.add_dependency(%q<rake-kit>, [">= 0"])
|
233
233
|
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
234
|
-
s.add_dependency(%q<rails>, ["
|
234
|
+
s.add_dependency(%q<rails>, [">= 3.1"])
|
235
235
|
s.add_dependency(%q<mysql2>, [">= 0"])
|
236
236
|
s.add_dependency(%q<devise>, [">= 0"])
|
237
237
|
s.add_dependency(%q<cutter>, [">= 0"])
|
data/config/routes.rb
CHANGED
data/lib/carrier.rb
CHANGED
data/lib/carrier/rails/engine.rb
CHANGED
@@ -32,7 +32,7 @@ module Carrier
|
|
32
32
|
end
|
33
33
|
|
34
34
|
module Carrier
|
35
|
-
class Engine < Rails::Engine
|
35
|
+
class Engine < ::Rails::Engine
|
36
36
|
engine_name :carrier
|
37
37
|
isolate_namespace Carrier
|
38
38
|
|
@@ -46,13 +46,8 @@ module Carrier
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
initializer "carrier" do
|
50
|
-
#Carrier.models_requires
|
51
|
-
end
|
52
|
-
|
53
49
|
config.to_prepare do
|
54
50
|
Carrier.carrier_requires
|
55
|
-
Carrier.check_unread!
|
56
51
|
# Carrier.models_requires
|
57
52
|
|
58
53
|
Carrier.include_helpers
|
data/lib/carrier/version.rb
CHANGED
@@ -2,21 +2,25 @@ Message = Carrier::Message
|
|
2
2
|
Chain = Carrier::Chain
|
3
3
|
|
4
4
|
describe Carrier::Message do
|
5
|
-
|
5
|
+
context "Scopes" do
|
6
6
|
|
7
7
|
let(:user) do
|
8
|
-
|
8
|
+
singleton(:user)
|
9
9
|
end
|
10
10
|
|
11
11
|
specify {
|
12
12
|
Message.count.should == 0
|
13
13
|
Chain.count.should == 0
|
14
14
|
Message.for_or_by(user).size.should == 0
|
15
|
-
|
15
|
+
|
16
|
+
create(:message, :sender_user => user)
|
17
|
+
|
16
18
|
Message.for(user).size.should == 0
|
17
19
|
Message.by(user).size.should == 1
|
18
20
|
Message.for_or_by(user).size.should == 1
|
21
|
+
|
19
22
|
create(:second_message)
|
23
|
+
|
20
24
|
Message.for(user).size.should == 1
|
21
25
|
Message.by(user).size.should == 1
|
22
26
|
Message.for_or_by(user).size.should == 2
|
@@ -20,19 +20,11 @@ describe Carrier::Message do
|
|
20
20
|
subject.recipients.should == []
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
it "should
|
25
|
-
|
26
|
-
|
27
|
-
subject.save!
|
28
|
-
}.should raise_error(ActiveRecord::RecordInvalid)
|
29
|
-
end
|
30
|
-
it "should not save messages with wrong recipients" do
|
31
|
-
lambda {
|
32
|
-
subject.sender = 1
|
33
|
-
subject.content = 'something'
|
34
|
-
subject.save!
|
35
|
-
}.should raise_error(ActiveRecord::RecordInvalid)
|
23
|
+
context "#recipients_names" do
|
24
|
+
it "should return recipients names joined by ', '" do
|
25
|
+
message = singleton :message
|
26
|
+
message.recipients_names.should == "miloviza, marixa"
|
36
27
|
end
|
37
28
|
end
|
29
|
+
|
38
30
|
end
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
FactoryGirl.define do
|
2
2
|
factory :message, :class => Carrier::Message do
|
3
|
+
sender { singleton(:user).id }
|
4
|
+
recipients { [ singleton(:second_user).id, singleton(:third_user).id ] }
|
5
|
+
content "content of test message"
|
6
|
+
subject "subject of test message"
|
7
|
+
end
|
8
|
+
|
9
|
+
factory :second_message, :class => Carrier::Message do
|
10
|
+
sender_user { |su| singleton(:second_user) }
|
11
|
+
recipients { |r| [ singleton(:user).id ] }
|
12
|
+
|
13
|
+
content "content of test message"
|
14
|
+
subject "subject of test message"
|
15
|
+
end
|
16
|
+
|
17
|
+
factory :third_message, :class => Carrier::Message do
|
3
18
|
sender_user { |su| singleton(:user) }
|
4
19
|
recipients { |r| [ singleton(:second_user).id ] }
|
5
20
|
|
@@ -1,13 +1,22 @@
|
|
1
1
|
FactoryGirl.define do
|
2
|
-
factory :user do
|
2
|
+
factory :user, :class => User do
|
3
|
+
id 1
|
3
4
|
email 'stanislaw@gmail.com'
|
4
5
|
username 'stanislaw'
|
5
6
|
password '666666'
|
6
7
|
end
|
7
8
|
|
8
9
|
factory :second_user, :class => User do
|
10
|
+
id 2
|
9
11
|
email 'miloviza@gmail.com'
|
10
|
-
username '
|
12
|
+
username 'miloviza'
|
13
|
+
password '666666'
|
14
|
+
end
|
15
|
+
|
16
|
+
factory :third_user, :class => User do
|
17
|
+
id 3
|
18
|
+
email 'marixa@gmail.com'
|
19
|
+
username 'marixa'
|
11
20
|
password '666666'
|
12
21
|
end
|
13
22
|
end
|
@@ -35,8 +35,8 @@ Feature:
|
|
35
35
|
And I fill in "Message" with "Content for test message"
|
36
36
|
And I press "Send"
|
37
37
|
Then I should see "Message successfully created"
|
38
|
-
Then I should see "Subject for test message"
|
39
|
-
Then I should see "Content for test message"
|
38
|
+
# Then I should see "Subject for test message"
|
39
|
+
# Then I should see "Content for test message"
|
40
40
|
|
41
41
|
@javascript
|
42
42
|
Scenario: Archiving a message
|
data/spec/dummy_spec_helper.rb
CHANGED
@@ -10,6 +10,7 @@ require 'cutter'
|
|
10
10
|
require 'shoulda'
|
11
11
|
require 'factory_girl_rails'
|
12
12
|
|
13
|
+
require_all File.expand_path('../dummy/factories', __FILE__)
|
13
14
|
require_all File.expand_path('../support', __FILE__)
|
14
15
|
|
15
16
|
# ActiveRecord::Base.logger = Logger.new(STDERR)
|
@@ -32,7 +33,8 @@ RSpec.configure do |config|
|
|
32
33
|
config.after(:each, :type => :request) {Warden.test_reset!}
|
33
34
|
|
34
35
|
config.mock_with :rspec
|
35
|
-
|
36
|
+
|
37
|
+
include SingletonHelper
|
36
38
|
config.include FactoryGirl::Syntax::Methods
|
37
39
|
|
38
40
|
config.use_transactional_fixtures = true
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module SingletonHelper
|
2
|
+
def singleton name, *options
|
3
|
+
@@singletons ||= {}
|
4
|
+
|
5
|
+
begin
|
6
|
+
@@singletons[name].reload
|
7
|
+
|
8
|
+
rescue NoMethodError, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotFound => e
|
9
|
+
# puts "singleton error (#{e.class}): " << e.message
|
10
|
+
@@singletons[name] ||= create name, *options
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def reset_singletons!
|
15
|
+
@@singletons = {}
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: require_all
|
@@ -144,17 +144,17 @@ dependencies:
|
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
145
145
|
none: false
|
146
146
|
requirements:
|
147
|
-
- - '
|
147
|
+
- - ! '>='
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version: 3.
|
149
|
+
version: '3.1'
|
150
150
|
type: :development
|
151
151
|
prerelease: false
|
152
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
153
|
none: false
|
154
154
|
requirements:
|
155
|
-
- - '
|
155
|
+
- - ! '>='
|
156
156
|
- !ruby/object:Gem::Version
|
157
|
-
version: 3.
|
157
|
+
version: '3.1'
|
158
158
|
- !ruby/object:Gem::Dependency
|
159
159
|
name: mysql2
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
@@ -247,12 +247,15 @@ files:
|
|
247
247
|
- app/views/carrier/messages/_form.html.erb
|
248
248
|
- app/views/carrier/messages/_head.html.erb
|
249
249
|
- app/views/carrier/messages/_index_message.html.erb
|
250
|
-
- app/views/carrier/messages/
|
250
|
+
- app/views/carrier/messages/_message_collapsed.html.erb
|
251
|
+
- app/views/carrier/messages/_message_expanded.html.erb
|
251
252
|
- app/views/carrier/messages/_nav_messages.html.erb
|
252
253
|
- app/views/carrier/messages/_recipients.html.erb
|
253
254
|
- app/views/carrier/messages/_reply.html.erb
|
254
255
|
- app/views/carrier/messages/as_sent.html.erb
|
256
|
+
- app/views/carrier/messages/collapsed.js.erb
|
255
257
|
- app/views/carrier/messages/create.js.erb
|
258
|
+
- app/views/carrier/messages/expanded.js.erb
|
256
259
|
- app/views/carrier/messages/index.html.erb
|
257
260
|
- app/views/carrier/messages/new.html.erb
|
258
261
|
- app/views/carrier/messages/new.js.erb
|
@@ -292,13 +295,11 @@ files:
|
|
292
295
|
- spec/dummy/app/assets/stylesheets/scaffold.css
|
293
296
|
- spec/dummy/app/controllers/application_controller.rb
|
294
297
|
- spec/dummy/app/controllers/default_controller.rb
|
295
|
-
- spec/dummy/app/controllers/posts_controller.rb
|
296
298
|
- spec/dummy/app/helpers/application_helper.rb
|
297
299
|
- spec/dummy/app/helpers/default_helper.rb
|
298
300
|
- spec/dummy/app/helpers/posts_helper.rb
|
299
301
|
- spec/dummy/app/mailers/.gitkeep
|
300
302
|
- spec/dummy/app/models/.gitkeep
|
301
|
-
- spec/dummy/app/models/post.rb
|
302
303
|
- spec/dummy/app/models/user.rb
|
303
304
|
- spec/dummy/app/views/default/index.html.erb
|
304
305
|
- spec/dummy/app/views/devise/confirmations/new.html.erb
|
@@ -378,8 +379,7 @@ files:
|
|
378
379
|
- spec/dummy_spec_helper.rb
|
379
380
|
- spec/requests/main_spec.rb
|
380
381
|
- spec/support/controller_macros.rb
|
381
|
-
- spec/support/
|
382
|
-
- spec/support/rspec_helpers.rb
|
382
|
+
- spec/support/singleton.rb
|
383
383
|
homepage: http://github.com/stanislaw/carrier
|
384
384
|
licenses:
|
385
385
|
- MIT
|
@@ -395,7 +395,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
395
395
|
version: '0'
|
396
396
|
segments:
|
397
397
|
- 0
|
398
|
-
hash:
|
398
|
+
hash: -583455053
|
399
399
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
400
400
|
none: false
|
401
401
|
requirements:
|
@@ -1,83 +0,0 @@
|
|
1
|
-
class PostsController < ApplicationController
|
2
|
-
# GET /posts
|
3
|
-
# GET /posts.json
|
4
|
-
def index
|
5
|
-
@posts = Post.all
|
6
|
-
|
7
|
-
respond_to do |format|
|
8
|
-
format.html # index.html.erb
|
9
|
-
format.json { render json: @posts }
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
# GET /posts/1
|
14
|
-
# GET /posts/1.json
|
15
|
-
def show
|
16
|
-
@post = Post.find(params[:id])
|
17
|
-
|
18
|
-
respond_to do |format|
|
19
|
-
format.html # show.html.erb
|
20
|
-
format.json { render json: @post }
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# GET /posts/new
|
25
|
-
# GET /posts/new.json
|
26
|
-
def new
|
27
|
-
@post = Post.new
|
28
|
-
|
29
|
-
respond_to do |format|
|
30
|
-
format.html # new.html.erb
|
31
|
-
format.json { render json: @post }
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# GET /posts/1/edit
|
36
|
-
def edit
|
37
|
-
@post = Post.find(params[:id])
|
38
|
-
end
|
39
|
-
|
40
|
-
# POST /posts
|
41
|
-
# POST /posts.json
|
42
|
-
def create
|
43
|
-
@post = Post.new(params[:post])
|
44
|
-
|
45
|
-
respond_to do |format|
|
46
|
-
if @post.save
|
47
|
-
format.html { redirect_to @post, notice: 'Post was successfully created.' }
|
48
|
-
format.json { render json: @post, status: :created, location: @post }
|
49
|
-
else
|
50
|
-
format.html { render action: "new" }
|
51
|
-
format.json { render json: @post.errors, status: :unprocessable_entity }
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# PUT /posts/1
|
57
|
-
# PUT /posts/1.json
|
58
|
-
def update
|
59
|
-
@post = Post.find(params[:id])
|
60
|
-
|
61
|
-
respond_to do |format|
|
62
|
-
if @post.update_attributes(params[:post])
|
63
|
-
format.html { redirect_to @post, notice: 'Post was successfully updated.' }
|
64
|
-
format.json { head :ok }
|
65
|
-
else
|
66
|
-
format.html { render action: "edit" }
|
67
|
-
format.json { render json: @post.errors, status: :unprocessable_entity }
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
# DELETE /posts/1
|
73
|
-
# DELETE /posts/1.json
|
74
|
-
def destroy
|
75
|
-
@post = Post.find(params[:id])
|
76
|
-
@post.destroy
|
77
|
-
|
78
|
-
respond_to do |format|
|
79
|
-
format.html { redirect_to posts_url }
|
80
|
-
format.json { head :ok }
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
data/spec/support/factories.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
FactoryGirl.define do
|
2
|
-
factory :first_message, :class => Carrier::Message do
|
3
|
-
id 1
|
4
|
-
association :sender_user, :factory => :user
|
5
|
-
recipients [2, 3]
|
6
|
-
content "Hello!"
|
7
|
-
subject "FirstMessage"
|
8
|
-
association :chain, :factory => :chain
|
9
|
-
end
|
10
|
-
|
11
|
-
factory :second_message, :class => Carrier::Message do
|
12
|
-
id 2
|
13
|
-
association :sender_user, :factory => :user_second
|
14
|
-
recipients [3, 1]
|
15
|
-
content "Hello you too!"
|
16
|
-
subject "SecondMessage"
|
17
|
-
association :chain, :factory => :chain
|
18
|
-
end
|
19
|
-
|
20
|
-
factory :user do
|
21
|
-
id 1
|
22
|
-
username "stanisla"
|
23
|
-
email "stanisla@gmail.com"
|
24
|
-
password "666666"
|
25
|
-
password_confirmation "666666"
|
26
|
-
end
|
27
|
-
|
28
|
-
factory :user_second, :class => User do
|
29
|
-
id 2
|
30
|
-
username "marixa"
|
31
|
-
email "marixa@gmail.com"
|
32
|
-
password "666666"
|
33
|
-
password_confirmation "666666"
|
34
|
-
end
|
35
|
-
|
36
|
-
factory :user_third, :class => User do
|
37
|
-
id 3
|
38
|
-
username "miloviza"
|
39
|
-
email "miloviza@gmail.com"
|
40
|
-
password "666666"
|
41
|
-
password_confirmation "666666"
|
42
|
-
end
|
43
|
-
|
44
|
-
factory :chain, :class => Carrier::Chain do
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
|
2
|
-
module RSpec
|
3
|
-
module Core
|
4
|
-
class ExampleGroup
|
5
|
-
|
6
|
-
class << self
|
7
|
-
alias_method :concern, :describe if instance_methods.include?(:describe)
|
8
|
-
|
9
|
-
def register_concern
|
10
|
-
alias_method :concern, :describe if instance_methods.include?(:describe)
|
11
|
-
end
|
12
|
-
|
13
|
-
def singleton_method_added name
|
14
|
-
class << self
|
15
|
-
undef_method :register_concern
|
16
|
-
end if name == :describe
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|