carrier 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|