carrier 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. data/Gemfile +1 -1
  2. data/VERSION +1 -1
  3. data/app/controllers/carrier/messages_controller.rb +9 -4
  4. data/app/models/carrier/message.rb +9 -5
  5. data/app/models/carrier/message/subject.rb +3 -1
  6. data/app/views/carrier/messages/_archive_chain.html.erb +2 -2
  7. data/app/views/carrier/messages/_index_message.html.erb +1 -1
  8. data/app/views/carrier/messages/_message_collapsed.html.erb +13 -0
  9. data/app/views/carrier/messages/{_message.html.erb → _message_expanded.html.erb} +1 -1
  10. data/app/views/carrier/messages/_reply.html.erb +1 -1
  11. data/app/views/carrier/messages/as_sent.html.erb +42 -35
  12. data/app/views/carrier/messages/collapsed.js.erb +1 -0
  13. data/app/views/carrier/messages/create.js.erb +1 -1
  14. data/app/views/carrier/messages/expanded.js.erb +1 -0
  15. data/app/views/carrier/messages/show.html.erb +5 -3
  16. data/app/views/layouts/carrier/application.html.erb +1 -0
  17. data/carrier.gemspec +10 -10
  18. data/config/routes.rb +1 -0
  19. data/lib/carrier.rb +3 -1
  20. data/lib/carrier/rails/engine.rb +1 -6
  21. data/lib/carrier/version.rb +1 -1
  22. data/spec/carrier/app/models/message_scopes_spec.rb +7 -3
  23. data/spec/carrier/app/models/message_spec.rb +5 -13
  24. data/spec/dummy/app/controllers/default_controller.rb +0 -1
  25. data/spec/dummy/config/routes.rb +0 -2
  26. data/spec/dummy/factories/message.rb +15 -0
  27. data/spec/dummy/factories/user.rb +11 -2
  28. data/spec/dummy/features/carrier.feature +2 -2
  29. data/spec/dummy_spec_helper.rb +3 -1
  30. data/spec/support/singleton.rb +17 -0
  31. metadata +12 -12
  32. data/spec/dummy/app/controllers/posts_controller.rb +0 -83
  33. data/spec/dummy/app/models/post.rb +0 -2
  34. data/spec/support/factories.rb +0 -47
  35. data/spec/support/rspec_helpers.rb +0 -22
data/Gemfile CHANGED
@@ -13,7 +13,7 @@ group :development do
13
13
  end
14
14
 
15
15
  group :development, :test do
16
- gem 'rails', '3.2.2'
16
+ gem 'rails', '>= 3.1'
17
17
  gem 'mysql2'
18
18
  gem 'devise'
19
19
  gem 'cutter'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
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.chain_messages.each do |message|
10
- message.mark_as_read! :for => current_user
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(@message, :notice => t('views.carrier.successfully_created')) }
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 => re(in_answer_to.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
- recipients.collect{|id| User.find(id, :select => "username").username}.join(', ') #
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
- ([] | recipients << sender).compact
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
- <%= content_tag_for :div, message do %>
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,4 +1,4 @@
1
- <%= form_for(@message, :remote => true) do |f| %>
1
+ <%= form_for(@message, :url => carrier.messages_path, :remote => true) do |f| %>
2
2
 
3
3
  <%= error_messages_for @message %>
4
4
 
@@ -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
- <div class="message_ma_archive_chain" id="archive_chain">
7
- <%= render :partial => 'archive_chain', :locals => {:chain => @message.chain} %>
8
- </div>
9
- <h2><%= @message.subject_without_re %></h2>
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
- <% @message.answers.each do |message| %>
16
- <%= render :partial => 'message_expanded', :locals => {:message => message } if message.sender == current_user.id %>
17
- <%= render :partial => 'message_collapsed', :locals => {:message => message } if message.sender != current_user.id %>
18
- <% end %>
11
+ <%= raw(t('views.carrier.participants')) %>
12
+ <%= b raw(t('views.carrier.me')) %>,
13
+ <%= b @message.recipients_names %>
14
+ </div>
19
15
 
20
- <div class="message_ma_wrapper ma_open">
21
- <div class="message_ma_date">
22
- <%= @message.date_formatted %>
23
- </div>
24
- <div class="message_ma_user">
25
- <%= @message.sender_name %>
26
- </div>
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="ma_wrapper">
36
- <%= link_to raw(t 'views.carrier.reply_link'), reply_message_path(@message), :remote => true %>
37
- <div id="reply_form"></div>
38
- </div>
39
- </div>
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 = '<%= message_path @message %>'
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.subject_without_re %></h2>
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
- <%= render :partial => 'message', :collection => @message.answers %>
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 -->
@@ -1,6 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
4
5
  <title>Carrier</title>
5
6
  <%= yield :stylesheets %>
6
7
  <%= javascript_include_tag 'jquery.min', 'rails' %>
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "carrier"
8
- s.version = "0.1.2"
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-04-05"
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/_message.html.erb",
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/factories.rb",
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>, ["= 3.2.2"])
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>, ["= 3.2.2"])
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>, ["= 3.2.2"])
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"])
@@ -7,6 +7,7 @@ Carrier::Engine.routes.draw do
7
7
 
8
8
  resources :messages, :path => prefix_for_messages do
9
9
  member do
10
+ get :as_sent
10
11
  get :reply
11
12
  get :expanded
12
13
  get :collapsed
@@ -1,4 +1,6 @@
1
- require "carrier/rails/engine" if defined?(Rails)
1
+ require 'rails'
2
+
3
+ require "carrier/rails/engine"
2
4
 
3
5
  require 'sweetloader'
4
6
 
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Carrier
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -2,21 +2,25 @@ Message = Carrier::Message
2
2
  Chain = Carrier::Chain
3
3
 
4
4
  describe Carrier::Message do
5
- concern "Scopes" do
5
+ context "Scopes" do
6
6
 
7
7
  let(:user) do
8
- @user ||= create(:user)
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
- create(:first_message, :sender_user => user)
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
- concern "Validations" do
24
- it "should not save messages with empty .content field" do
25
- lambda {
26
- subject.content = ''
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
@@ -1,5 +1,4 @@
1
1
  class DefaultController < ApplicationController
2
2
  def index
3
3
  end
4
-
5
4
  end
@@ -7,8 +7,6 @@ Rails.application.routes.draw do
7
7
  get 'sign_in', :to => 'devise/sessions#new'
8
8
  end
9
9
 
10
- resources :posts
11
-
12
10
  mount Carrier::Engine => "/carrier"
13
11
 
14
12
  root :to => "default#index"
@@ -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 'milovila'
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
@@ -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.2
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-04-05 00:00:00.000000000 Z
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.2.2
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.2.2
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/_message.html.erb
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/factories.rb
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: 645920563
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
@@ -1,2 +0,0 @@
1
- class Post < ActiveRecord::Base
2
- end
@@ -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