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.
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