commontator 4.11.1 → 5.0.0

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -5
  3. data/app/controllers/commontator/application_controller.rb +4 -4
  4. data/app/controllers/commontator/comments_controller.rb +15 -15
  5. data/app/controllers/commontator/subscriptions_controller.rb +1 -1
  6. data/app/controllers/commontator/threads_controller.rb +5 -5
  7. data/app/mailers/commontator/subscriptions_mailer.rb +25 -37
  8. data/app/models/commontator/comment.rb +11 -11
  9. data/app/models/commontator/subscription.rb +2 -2
  10. data/app/models/commontator/thread.rb +9 -9
  11. data/app/views/commontator/comments/_actions.html.erb +8 -8
  12. data/app/views/commontator/comments/_body.html.erb +1 -1
  13. data/app/views/commontator/comments/_form.html.erb +3 -3
  14. data/app/views/commontator/comments/_list.html.erb +3 -3
  15. data/app/views/commontator/comments/_show.html.erb +8 -8
  16. data/app/views/commontator/comments/_votes.html.erb +16 -16
  17. data/app/views/commontator/comments/cancel.js.erb +5 -5
  18. data/app/views/commontator/comments/create.js.erb +9 -9
  19. data/app/views/commontator/comments/delete.js.erb +7 -7
  20. data/app/views/commontator/comments/edit.js.erb +2 -2
  21. data/app/views/commontator/comments/new.js.erb +4 -4
  22. data/app/views/commontator/comments/update.js.erb +1 -1
  23. data/app/views/commontator/comments/vote.js.erb +3 -3
  24. data/app/views/commontator/shared/_thread.html.erb +6 -6
  25. data/app/views/commontator/subscriptions/_link.html.erb +5 -5
  26. data/app/views/commontator/subscriptions/subscribe.js.erb +3 -3
  27. data/app/views/commontator/subscriptions_mailer/comment_created.html.erb +6 -6
  28. data/app/views/commontator/threads/_reply.html.erb +6 -6
  29. data/app/views/commontator/threads/_show.html.erb +33 -33
  30. data/app/views/commontator/threads/_show.js.erb +7 -7
  31. data/app/views/commontator/threads/show.js.erb +6 -6
  32. data/config/initializers/commontator.rb +43 -38
  33. data/config/locales/de.yml +100 -0
  34. data/config/locales/en.yml +26 -27
  35. data/config/locales/pt-BR.yml +78 -0
  36. data/config/locales/ru.yml +25 -26
  37. data/config/locales/zh.yml +26 -27
  38. data/config/routes.rb +4 -4
  39. data/db/migrate/0_install_commontator.rb +17 -17
  40. data/lib/commontator.rb +2 -2
  41. data/lib/commontator/acts_as_commontable.rb +14 -12
  42. data/lib/commontator/acts_as_commontator.rb +5 -5
  43. data/lib/commontator/shared_helper.rb +6 -6
  44. data/lib/commontator/version.rb +1 -1
  45. data/lib/tasks/commontator_tasks.rake +2 -2
  46. data/spec/controllers/commontator/comments_controller_spec.rb +76 -75
  47. data/spec/controllers/commontator/subscriptions_controller_spec.rb +26 -27
  48. data/spec/controllers/commontator/threads_controller_spec.rb +42 -41
  49. data/spec/dummy/app/controllers/dummy_models_controller.rb +1 -1
  50. data/spec/dummy/app/views/layouts/application.html.erb +1 -2
  51. data/spec/dummy/config/application.rb +1 -1
  52. data/spec/dummy/config/environments/development.rb +1 -2
  53. data/spec/dummy/config/environments/production.rb +1 -2
  54. data/spec/dummy/config/environments/test.rb +1 -2
  55. data/spec/dummy/config/initializers/commontator.rb +7 -7
  56. data/spec/dummy/config/routes.rb +2 -3
  57. data/spec/dummy/db/development.sqlite3 +0 -0
  58. data/spec/dummy/db/migrate/1_create_dummy_models.rb +2 -3
  59. data/spec/dummy/db/migrate/2_create_dummy_users.rb +2 -3
  60. data/spec/dummy/db/migrate/3_acts_as_votable_migration.rb +4 -10
  61. data/spec/dummy/db/schema.rb +45 -48
  62. data/spec/dummy/db/test.sqlite3 +0 -0
  63. data/spec/dummy/log/development.log +413 -0
  64. data/spec/dummy/log/test.log +33690 -0
  65. data/spec/lib/commontator/commontable_config_spec.rb +4 -5
  66. data/spec/lib/commontator/commontator_config_spec.rb +4 -5
  67. data/spec/lib/commontator_spec.rb +2 -3
  68. data/spec/mailers/commontator/subscriptions_mailer_spec.rb +2 -3
  69. data/spec/models/commontator/comment_spec.rb +10 -10
  70. data/spec/rails_helper.rb +3 -2
  71. metadata +64 -44
@@ -1,30 +1,30 @@
1
- ru:
2
- activerecord:
3
- attributes:
4
- commontator/comment:
1
+ ru:
2
+ activerecord:
3
+ attributes:
4
+ commontator/comment:
5
5
  body: Комментарий
6
6
  creator: Создал
7
7
  editor: Редактировал
8
8
  thread: Обсуждение
9
- commontator/subscription:
9
+ commontator/subscription:
10
10
  subscriber: Подписчик
11
11
  thread: Обсуждение
12
- commontator/thread:
12
+ commontator/thread:
13
13
  commontable: Комментируем
14
- models:
15
- commontator/comment:
14
+ models:
15
+ commontator/comment:
16
16
  one: комментарий
17
17
  other: комментарии
18
- commontator/subscription:
18
+ commontator/subscription:
19
19
  one: подписка
20
20
  other: подписки
21
- commontator/thread:
21
+ commontator/thread:
22
22
  one: обсуждение
23
23
  other: обсуждения
24
- commontator:
24
+ commontator:
25
25
  anonymous: Аноним
26
- comment:
27
- actions:
26
+ comment:
27
+ actions:
28
28
  cancel: Отменить
29
29
  confirm_delete: "Вы уверены, что хотите удалить комментарий?"
30
30
  create: "Оставить Комментарий"
@@ -33,33 +33,32 @@ ru:
33
33
  new: "Новый Комментарий"
34
34
  undelete: Восстановить
35
35
  update: "Изменить Комментарий"
36
- errors:
36
+ errors:
37
37
  already_deleted: "Этот комментарий был удален."
38
38
  create: "Комментарий нельзя оставить потому что"
39
39
  double_posted: "этот комментарий уже есть."
40
40
  not_deleted: "Этот комментарий не удален."
41
41
  update: "Этот комментарий нельзя изменить потому что"
42
- status:
42
+ status:
43
43
  created_at: "Создан %{created_at}."
44
44
  deleted_by: "Комментарий был удален %{deleter_name}."
45
45
  updated_at: "Редактировал %{editor_name}, %{updated_at}."
46
- email:
47
- comment_created:
46
+ email:
47
+ comment_created:
48
48
  body: "%{creator_name} комментировал %{commontable_name}:"
49
49
  subject: "%{creator_name} оставил комментарий к %{commontable_name}"
50
50
  thread_link_html: "<a href=\"%{comment_url}\">Нажмите здесь</a> чтобы посмотреть все комментарии к %{commontable_name}."
51
- undisclosed_recipients: "Не указан получатель"
52
51
  require_login: "Вы должны залогиниться прежде чем оставить комментарий."
53
- subscription:
54
- actions:
52
+ subscription:
53
+ actions:
55
54
  confirm_unsubscribe: "Вы уверены, что хотите отписать от обсуждения?"
56
55
  subscribe: Подписаться
57
56
  unsubscribe: Отписаться
58
- errors:
57
+ errors:
59
58
  already_subscribed: "Вы уже подписаны на это обсуждение."
60
59
  not_subscribed: "Вы не подписаны на это обсуждение."
61
- thread:
62
- actions:
60
+ thread:
61
+ actions:
63
62
  show_all: "Показать все комментарии"
64
63
  filter: "Фильтровать комментарии"
65
64
  close: "Закрыть обсуждение"
@@ -70,10 +69,10 @@ ru:
70
69
  errors:
71
70
  already_closed: "Это обсуждение было закрыто."
72
71
  not_closed: "Это обсуждение не закрыто."
73
- status:
72
+ status:
74
73
  cannot_post: "Новый комментарии нельзя разместить в данный момент."
75
74
  closed: "Комментарии (Закрыты %{closer_name})"
76
75
  open: Комментарии
77
- time:
78
- formats:
76
+ time:
77
+ formats:
79
78
  commontator: "%b %d %Y в %I:%M%p %Z"
@@ -1,30 +1,30 @@
1
- zh:
2
- activerecord:
3
- attributes:
4
- commontator/comment:
1
+ zh:
2
+ activerecord:
3
+ attributes:
4
+ commontator/comment:
5
5
  body: "留言"
6
6
  creator: "留言者"
7
7
  editor: "編輯"
8
8
  thread: "討論"
9
- commontator/subscription:
9
+ commontator/subscription:
10
10
  subscriber: "訂閱者"
11
11
  thread: "討論"
12
- commontator/thread:
12
+ commontator/thread:
13
13
  commontable: "可以留言"
14
- models:
15
- commontator/comment:
14
+ models:
15
+ commontator/comment:
16
16
  one: "留言"
17
17
  other: "留言"
18
- commontator/subscription:
18
+ commontator/subscription:
19
19
  one: "訂閱"
20
20
  other: "訂閱"
21
- commontator/thread:
21
+ commontator/thread:
22
22
  one: "討論"
23
23
  other: "討論"
24
- commontator:
24
+ commontator:
25
25
  anonymous: "匿名"
26
- comment:
27
- actions:
26
+ comment:
27
+ actions:
28
28
  cancel: "取消"
29
29
  confirm_delete: "確定要刪除這筆留言嗎?"
30
30
  create: "發佈"
@@ -33,33 +33,32 @@ zh:
33
33
  new: "新留言"
34
34
  undelete: "未刪除"
35
35
  update: "修改留言"
36
- errors:
36
+ errors:
37
37
  already_deleted: "此留言已經被刪除了"
38
38
  create: "此留言無法發佈因為:"
39
39
  double_posted: "已經有一筆相同的留言。"
40
40
  not_deleted: "此留言未被刪除"
41
41
  update: "此留言無法被修改因為:"
42
- status:
42
+ status:
43
43
  created_at: "於%{created_at}發佈"
44
44
  deleted_by: "被%{deleter_name}刪除"
45
45
  updated_at: "最在於%{updated_at}被%{editor_name}修改"
46
- email:
47
- comment_created:
46
+ email:
47
+ comment_created:
48
48
  body: "%{creator_name}留言於%{commontable_name}"
49
49
  subject: "%{creator_name}於%{commontable_name}發佈了一則留言"
50
50
  thread_link_html: "<a href=\"%{comment_url}\">點此處</a>看%{commontable_name}的所有留言"
51
- undisclosed_recipients: "收件者"
52
51
  require_login: "你需要先登入"
53
- subscription:
54
- actions:
52
+ subscription:
53
+ actions:
55
54
  confirm_unsubscribe: "你確定要去取消訂閱此則討論嗎?"
56
55
  subscribe: "訂閱"
57
56
  unsubscribe: "取消訂閱"
58
- errors:
57
+ errors:
59
58
  already_subscribed: "你已經訂閱過了"
60
59
  not_subscribed: "你沒有訂閱過"
61
- thread:
62
- actions:
60
+ thread:
61
+ actions:
63
62
  show_all: "列出所有留言"
64
63
  filter: "過濾留言"
65
64
  close: "關閉討論"
@@ -67,13 +66,13 @@ zh:
67
66
  reopen: "回復討論"
68
67
  show: "打開留言"
69
68
  hide: "关闭留言"
70
- errors:
69
+ errors:
71
70
  already_closed: "此討論已經被關閉"
72
71
  not_closed: "此討論尚未被關閉"
73
- status:
72
+ status:
74
73
  cannot_post: "現在還不能發佈"
75
74
  closed: "留言已經被%{closer_name}關閉"
76
75
  open: 留言
77
- time:
78
- formats:
76
+ time:
77
+ formats:
79
78
  commontator: "%b %d %Y 於 %I:%M%p %Z"
data/config/routes.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  Commontator::Engine.routes.draw do
2
- resources :threads, :only => [:show] do
3
- resources :comments, :except => [:index, :destroy], :shallow => true do
2
+ resources :threads, only: [:show] do
3
+ resources :comments, except: [:index, :destroy], shallow: true do
4
4
  member do
5
5
  put 'delete'
6
6
  put 'undelete'
@@ -17,8 +17,8 @@ Commontator::Engine.routes.draw do
17
17
  put 'close'
18
18
  put 'reopen'
19
19
 
20
- put 'subscribe', :to => 'subscriptions#subscribe'
21
- put 'unsubscribe', :to => 'subscriptions#unsubscribe'
20
+ put 'subscribe', to: 'subscriptions#subscribe'
21
+ put 'unsubscribe', to: 'subscriptions#unsubscribe'
22
22
  end
23
23
  end
24
24
  end
@@ -1,38 +1,38 @@
1
- class InstallCommontator < ActiveRecord::Migration
1
+ class InstallCommontator < ActiveRecord::Migration[5.0]
2
2
  def change
3
3
  create_table :commontator_comments do |t|
4
4
  t.string :creator_type
5
5
  t.integer :creator_id
6
6
  t.string :editor_type
7
7
  t.integer :editor_id
8
- t.integer :thread_id, :null => false
9
- t.text :body, :null => false
8
+ t.integer :thread_id, null: false
9
+ t.text :body, null: false
10
10
  t.datetime :deleted_at
11
11
 
12
- t.integer :cached_votes_up, :default => 0
13
- t.integer :cached_votes_down, :default => 0
12
+ t.integer :cached_votes_up, default: 0
13
+ t.integer :cached_votes_down, default: 0
14
14
 
15
- t.timestamps
15
+ t.timestamps null: false
16
16
  end
17
17
 
18
18
  add_index :commontator_comments, [:creator_id, :creator_type, :thread_id],
19
- :name => 'index_commontator_comments_on_c_id_and_c_type_and_t_id'
19
+ name: 'index_commontator_comments_on_c_id_and_c_type_and_t_id'
20
20
  add_index :commontator_comments, [:thread_id, :created_at]
21
21
 
22
22
  add_index :commontator_comments, :cached_votes_up
23
23
  add_index :commontator_comments, :cached_votes_down
24
-
24
+
25
25
  create_table :commontator_subscriptions do |t|
26
- t.string :subscriber_type, :null => false
27
- t.integer :subscriber_id, :null => false
28
- t.integer :thread_id, :null => false
26
+ t.string :subscriber_type, null: false
27
+ t.integer :subscriber_id, null: false
28
+ t.integer :thread_id, null: false
29
29
 
30
- t.timestamps
30
+ t.timestamps null: false
31
31
  end
32
32
 
33
33
  add_index :commontator_subscriptions, [:subscriber_id, :subscriber_type, :thread_id],
34
- :unique => true,
35
- :name => 'index_commontator_subscriptions_on_s_id_and_s_type_and_t_id'
34
+ unique: true,
35
+ name: 'index_commontator_subscriptions_on_s_id_and_s_type_and_t_id'
36
36
  add_index :commontator_subscriptions, :thread_id
37
37
 
38
38
  create_table :commontator_threads do |t|
@@ -42,11 +42,11 @@ class InstallCommontator < ActiveRecord::Migration
42
42
  t.string :closer_type
43
43
  t.integer :closer_id
44
44
 
45
- t.timestamps
45
+ t.timestamps null: false
46
46
  end
47
47
 
48
48
  add_index :commontator_threads, [:commontable_id, :commontable_type],
49
- :unique => true,
50
- :name => 'index_commontator_threads_on_c_id_and_c_type'
49
+ unique: true,
50
+ name: 'index_commontator_threads_on_c_id_and_c_type'
51
51
  end
52
52
  end
data/lib/commontator.rb CHANGED
@@ -128,8 +128,8 @@ module Commontator
128
128
  commontator_config(user).user_avatar_proc.call(user, view)
129
129
  end
130
130
 
131
- def self.commontator_mentions(user, search_phrase)
132
- commontator_config(user).user_mentions_proc.call(user, search_phrase)
131
+ def self.commontator_mentions(user, thread, search_phrase)
132
+ commontator_config(user).user_mentions_proc.call(user, thread, search_phrase)
133
133
  end
134
134
 
135
135
  def self.commontable_name(commontable)
@@ -7,7 +7,7 @@ module Commontator
7
7
  base.is_commontable = false
8
8
  base.extend(ClassMethods)
9
9
  end
10
-
10
+
11
11
  module ClassMethods
12
12
  def acts_as_commontable(options = {})
13
13
  class_eval do
@@ -15,24 +15,26 @@ module Commontator
15
15
  self.commontable_config = Commontator::CommontableConfig.new(options)
16
16
  self.is_commontable = true
17
17
 
18
- has_one :thread, :as => :commontable,
19
- :class_name => 'Commontator::Thread'
18
+ has_one :thread, as: :commontable,
19
+ class_name: 'Commontator::Thread'
20
20
 
21
21
  validates_presence_of :thread
22
22
 
23
- def thread_with_commontator
24
- @thread ||= thread_without_commontator
25
- return @thread unless @thread.nil?
23
+ prepend ThreadWithCommontator
24
+ end
25
+ end
26
26
 
27
- @thread = build_thread
28
- @thread.save if persisted?
29
- @thread
30
- end
27
+ module ThreadWithCommontator
28
+ def thread
29
+ @thread ||= super
30
+ return @thread unless @thread.nil?
31
31
 
32
- alias_method_chain :thread, :commontator
32
+ @thread = build_thread
33
+ @thread.save if persisted?
34
+ @thread
33
35
  end
34
36
  end
35
-
37
+
36
38
  alias_method :acts_as_commentable, :acts_as_commontable
37
39
  end
38
40
  end
@@ -15,11 +15,11 @@ module Commontator
15
15
  self.commontator_config = Commontator::CommontatorConfig.new(options)
16
16
  self.is_commontator = true
17
17
 
18
- has_many :comments, :as => :creator,
19
- :class_name => 'Commontator::Comment'
20
- has_many :subscriptions, :as => :subscriber,
21
- :class_name => 'Commontator::Subscription',
22
- :dependent => :destroy
18
+ has_many :comments, as: :creator,
19
+ class_name: 'Commontator::Comment'
20
+ has_many :subscriptions, as: :subscriber,
21
+ class_name: 'Commontator::Subscription',
22
+ dependent: :destroy
23
23
  end
24
24
  end
25
25
 
@@ -4,9 +4,9 @@ module Commontator
4
4
  user = Commontator.current_user_proc.call(self)
5
5
  thread = commontable.thread
6
6
 
7
- render(:partial => 'commontator/shared/thread',
8
- :locals => { :thread => thread,
9
- :user => user }).html_safe
7
+ render(partial: 'commontator/shared/thread',
8
+ locals: { thread: thread,
9
+ user: user }).html_safe
10
10
  end
11
11
 
12
12
  def commontator_gravatar_image_tag(user, border = 1, options = {})
@@ -17,9 +17,9 @@ module Commontator
17
17
  hash = Digest::MD5.hexdigest(email)
18
18
  url = "http#{base}.gravatar.com/avatar/#{hash}?#{options.to_query}"
19
19
 
20
- image_tag(url, { :alt => name,
21
- :title => name,
22
- :border => border })
20
+ image_tag(url, { alt: name,
21
+ title: name,
22
+ border: border })
23
23
  end
24
24
  end
25
25
  end
@@ -1,3 +1,3 @@
1
1
  module Commontator
2
- VERSION = "4.11.1"
2
+ VERSION = "5.0.0"
3
3
  end
@@ -10,7 +10,7 @@ namespace :commontator do
10
10
  if File.exists?(File.expand_path(File.basename(file), 'config/initializers'))
11
11
  print "NOTE: Initializer #{File.basename(file)} from commontator has been skipped. Initializer with the same name already exists.\n"
12
12
  else
13
- cp file, 'config/initializers', :verbose => false
13
+ cp file, 'config/initializers', verbose: false
14
14
  print "Copied initializer #{File.basename(file)} from commontator\n"
15
15
  end
16
16
  end
@@ -23,7 +23,7 @@ namespace :commontator do
23
23
  desc "Copy #{name} from commontator to application"
24
24
  task name.to_sym do
25
25
  namespace = path.start_with?('app') ? '/commontator' : ''
26
- cp_r File.expand_path("../../../#{path}#{namespace}", __FILE__), path, :verbose => false
26
+ cp_r File.expand_path("../../../#{path}#{namespace}", __FILE__), path, verbose: false
27
27
  print "Copied #{name} from commontator\n"
28
28
  end
29
29
  end
@@ -16,11 +16,11 @@ module Commontator
16
16
  end
17
17
 
18
18
  it "won't get new unless authorized" do
19
- get :new, :thread_id => @thread.id
19
+ get :new, params: { thread_id: @thread.id }
20
20
  expect(response).to have_http_status(:forbidden)
21
21
 
22
22
  sign_in @user
23
- get :new, :thread_id => @thread.id
23
+ get :new, params: { thread_id: @thread.id }
24
24
  expect(response).to have_http_status(:forbidden)
25
25
  end
26
26
 
@@ -28,19 +28,19 @@ module Commontator
28
28
  sign_in @user
29
29
 
30
30
  @user.can_read = true
31
- get :new, :thread_id => @thread.id
31
+ get :new, params: { thread_id: @thread.id }
32
32
  expect(response).to redirect_to @thread
33
33
  expect(assigns(:comment).errors).to be_empty
34
34
 
35
35
  @user.can_read = false
36
36
  @user.can_edit = true
37
- get :new, :thread_id => @thread.id
37
+ get :new, params: { thread_id: @thread.id }
38
38
  expect(response).to redirect_to @thread
39
39
  expect(assigns(:comment).errors).to be_empty
40
40
 
41
41
  @user.can_edit = false
42
42
  @user.is_admin = true
43
- get :new, :thread_id => @thread.id
43
+ get :new, params: { thread_id: @thread.id }
44
44
  expect(response).to redirect_to @thread
45
45
  expect(assigns(:comment).errors).to be_empty
46
46
  end
@@ -49,18 +49,18 @@ module Commontator
49
49
  attributes = Hash.new
50
50
  attributes[:body] = 'Something else'
51
51
 
52
- post :create, :thread_id => @thread.id, :comment => attributes
52
+ post :create, params: { thread_id: @thread.id, comment: attributes }
53
53
  expect(response).to have_http_status(:forbidden)
54
54
 
55
55
  sign_in @user
56
- post :create, :thread_id => @thread.id, :comment => attributes
56
+ post :create, params: { thread_id: @thread.id, comment: attributes }
57
57
  expect(response).to have_http_status(:forbidden)
58
58
 
59
59
  @user.can_read = true
60
60
  @user.can_edit = true
61
61
  @user.is_admin = true
62
62
  expect(@thread.close).to eq true
63
- post :create, :thread_id => @thread.id, :comment => attributes
63
+ post :create, params: { thread_id: @thread.id, comment: attributes }
64
64
  expect(response).to have_http_status(:forbidden)
65
65
  end
66
66
 
@@ -70,7 +70,7 @@ module Commontator
70
70
 
71
71
  attributes[:body] = 'Something else'
72
72
  @user.can_read = true
73
- post :create, :thread_id => @thread.id, :comment => attributes
73
+ post :create, params: { thread_id: @thread.id, comment: attributes }
74
74
  expect(response).to redirect_to @thread
75
75
  expect(assigns(:comment).errors).to be_empty
76
76
  expect(assigns(:comment).body).to eq 'Something else'
@@ -81,7 +81,7 @@ module Commontator
81
81
  attributes[:body] = 'Another thing'
82
82
  @user.can_read = false
83
83
  @user.can_edit = true
84
- post :create, :thread_id => @thread.id, :comment => attributes
84
+ post :create, params: { thread_id: @thread.id, comment: attributes }
85
85
  expect(response).to redirect_to @thread
86
86
  expect(assigns(:comment).errors).to be_empty
87
87
  expect(assigns(:comment).body).to eq 'Another thing'
@@ -92,7 +92,7 @@ module Commontator
92
92
  attributes[:body] = 'And this too'
93
93
  @user.can_edit = false
94
94
  @user.is_admin = true
95
- post :create, :thread_id => @thread.id, :comment => attributes
95
+ post :create, params: { thread_id: @thread.id, comment: attributes }
96
96
  expect(response).to redirect_to @thread
97
97
  expect(assigns(:comment).errors).to be_empty
98
98
  expect(assigns(:comment).body).to eq 'And this too'
@@ -107,12 +107,12 @@ module Commontator
107
107
  attributes = Hash.new
108
108
 
109
109
  attributes[:body] = 'Something'
110
- post :create, :thread_id => @thread.id, :comment => attributes
110
+ post :create, params: { thread_id: @thread.id, comment: attributes }
111
111
  assert_redirected_to @thread
112
112
  expect(assigns(:comment).errors).not_to be_empty
113
113
 
114
114
  attributes[:body] = 'Something else'
115
- post :create, :thread_id => @thread.id, :comment => attributes
115
+ post :create, params: { thread_id: @thread.id, comment: attributes }
116
116
  expect(response).to redirect_to @thread
117
117
  expect(assigns(:comment).errors).to be_empty
118
118
  expect(assigns(:comment).body).to eq 'Something else'
@@ -121,17 +121,17 @@ module Commontator
121
121
  expect(assigns(:comment).thread).to eq @thread
122
122
 
123
123
  attributes[:body] = 'Something else'
124
- post :create, :thread_id => @thread.id, :comment => attributes
124
+ post :create, params: { thread_id: @thread.id, comment: attributes }
125
125
  expect(response).to redirect_to @thread
126
126
  expect(assigns(:comment).errors).not_to be_empty
127
127
  end
128
128
 
129
129
  it "won't edit unless authorized" do
130
- get :edit, :id => @comment.id
130
+ get :edit, params: { id: @comment.id }
131
131
  expect(response).to have_http_status(:forbidden)
132
132
 
133
133
  sign_in @user
134
- get :edit, :id => @comment.id
134
+ get :edit, params: { id: @comment.id }
135
135
  expect(response).to have_http_status(:forbidden)
136
136
 
137
137
  user2 = DummyUser.create
@@ -139,7 +139,7 @@ module Commontator
139
139
  user2.can_edit = true
140
140
  user2.is_admin = true
141
141
  sign_in user2
142
- get :edit, :id => @comment.id
142
+ get :edit, params: { id: @comment.id }
143
143
  expect(response).to have_http_status(:forbidden)
144
144
 
145
145
  @user.can_read = true
@@ -151,7 +151,7 @@ module Commontator
151
151
  comment2.creator = @user
152
152
  comment2.body = 'Something else'
153
153
  comment2.save!
154
- get :edit, :id => @comment.id
154
+ get :edit, params: { id: @comment.id }
155
155
  expect(response).to have_http_status(:forbidden)
156
156
  end
157
157
 
@@ -159,19 +159,19 @@ module Commontator
159
159
  sign_in @user
160
160
 
161
161
  @user.can_read = true
162
- get :edit, :id => @comment.id
162
+ get :edit, params: { id: @comment.id }
163
163
  expect(response).to redirect_to @thread
164
164
  expect(assigns(:comment).errors).to be_empty
165
165
 
166
166
  @user.can_read = false
167
167
  @user.can_edit = true
168
- get :edit, :id => @comment.id
168
+ get :edit, params: { id: @comment.id }
169
169
  expect(response).to redirect_to @thread
170
170
  expect(assigns(:comment).errors).to be_empty
171
171
 
172
172
  @user.can_edit = false
173
173
  @user.is_admin = true
174
- get :edit, :id => @comment.id
174
+ get :edit, params: { id: @comment.id }
175
175
  expect(response).to redirect_to @thread
176
176
  expect(assigns(:comment).errors).to be_empty
177
177
  end
@@ -180,14 +180,14 @@ module Commontator
180
180
  attributes = Hash.new
181
181
  attributes[:body] = 'Something else'
182
182
 
183
- put :update, :id => @comment.id, :comment => attributes
183
+ put :update, params: { id: @comment.id, comment: attributes }
184
184
  expect(response).to have_http_status(:forbidden)
185
185
  @comment.reload
186
186
  expect(@comment.body).to eq 'Something'
187
187
  expect(@comment.editor).to be_nil
188
188
 
189
189
  sign_in @user
190
- put :update, :id => @comment.id, :comment => attributes
190
+ put :update, params: { id: @comment.id, comment: attributes }
191
191
  expect(response).to have_http_status(:forbidden)
192
192
  @comment.reload
193
193
  expect(@comment.body).to eq 'Something'
@@ -198,7 +198,7 @@ module Commontator
198
198
  user2.can_edit = true
199
199
  user2.is_admin = true
200
200
  sign_in user2
201
- put :update, :id => @comment.id, :comment => attributes
201
+ put :update, params: { id: @comment.id, comment: attributes }
202
202
  expect(response).to have_http_status(:forbidden)
203
203
  @comment.reload
204
204
  expect(@comment.body).to eq 'Something'
@@ -213,7 +213,7 @@ module Commontator
213
213
  comment2.creator = @user
214
214
  comment2.body = 'Something else'
215
215
  comment2.save!
216
- put :update, :id => @comment.id, :comment => attributes
216
+ put :update, params: { id: @comment.id, comment: attributes }
217
217
  expect(response).to have_http_status(:forbidden)
218
218
  @comment.reload
219
219
  expect(@comment.body).to eq 'Something'
@@ -226,42 +226,42 @@ module Commontator
226
226
  attributes[:body] = 'Something else'
227
227
 
228
228
  @user.can_read = true
229
- put :update, :id => @comment.id, :comment => attributes
229
+ put :update, params: { id: @comment.id, comment: attributes }
230
230
  expect(response).to redirect_to @thread
231
231
  expect(assigns(:comment).errors).to be_empty
232
232
  expect(assigns(:comment).editor).to eq @user
233
233
 
234
234
  @user.can_read = false
235
235
  @user.can_edit = true
236
- put :update, :id => @comment.id, :comment => attributes
236
+ put :update, params: { id: @comment.id, comment: attributes }
237
237
  expect(response).to redirect_to @thread
238
238
  expect(assigns(:comment).errors).to be_empty
239
239
  expect(assigns(:comment).editor).to eq @user
240
240
 
241
241
  @user.can_edit = false
242
242
  @user.is_admin = true
243
- put :update, :id => @comment.id, :comment => attributes
243
+ put :update, params: { id: @comment.id, comment: attributes }
244
244
  expect(response).to redirect_to @thread
245
245
  expect(assigns(:comment).errors).to be_empty
246
246
  expect(assigns(:comment).editor).to eq @user
247
247
  end
248
248
 
249
249
  it "won't delete unless authorized and not deleted" do
250
- put :delete, :id => @comment.id
250
+ put :delete, params: { id: @comment.id }
251
251
  expect(response).to have_http_status(:forbidden)
252
252
  @comment.reload
253
253
  expect(@comment.is_deleted?).to eq false
254
254
 
255
255
  sign_in @user
256
256
 
257
- put :delete, :id => @comment.id
257
+ put :delete, params: { id: @comment.id }
258
258
  expect(response).to have_http_status(:forbidden)
259
259
  @comment.reload
260
260
  expect(@comment.is_deleted?).to eq false
261
261
 
262
262
  @user.can_read = true
263
263
  expect(@comment.delete_by(@user)).to eq true
264
- put :delete, :id => @comment.id
264
+ put :delete, params: { id: @comment.id }
265
265
  expect(response).to redirect_to @thread
266
266
  expect(assigns(:comment).errors).not_to be_empty
267
267
 
@@ -271,7 +271,7 @@ module Commontator
271
271
  comment2.body = 'Something else'
272
272
  comment2.save!
273
273
  expect(@comment.undelete_by(@user)).to eq true
274
- put :delete, :id => @comment.id
274
+ put :delete, params: { id: @comment.id }
275
275
  expect(response).to have_http_status(:forbidden)
276
276
  @comment.reload
277
277
  expect(@comment.is_deleted?).to eq false
@@ -281,7 +281,7 @@ module Commontator
281
281
  sign_in @user
282
282
 
283
283
  @user.can_read = true
284
- put :delete, :id => @comment.id
284
+ put :delete, params: { id: @comment.id }
285
285
  expect(response).to redirect_to @thread
286
286
  expect(assigns(:comment).errors).to be_empty
287
287
  expect(assigns(:comment).is_deleted?).to eq true
@@ -297,7 +297,7 @@ module Commontator
297
297
 
298
298
  expect(assigns(:comment).undelete_by(@user)).to eq true
299
299
  user2.can_edit = true
300
- put :delete, :id => @comment.id
300
+ put :delete, params: { id: @comment.id }
301
301
  expect(response).to redirect_to @thread
302
302
  expect(assigns(:comment).errors).to be_empty
303
303
  expect(assigns(:comment).is_deleted?).to eq true
@@ -306,7 +306,7 @@ module Commontator
306
306
  expect(assigns(:comment).undelete_by(@user)).to eq true
307
307
  user2.can_edit = false
308
308
  user2.is_admin = true
309
- put :delete, :id => @comment.id
309
+ put :delete, params: { id: @comment.id }
310
310
  expect(response).to redirect_to @thread
311
311
  expect(assigns(:comment).errors).to be_empty
312
312
  expect(assigns(:comment).is_deleted?).to eq true
@@ -315,21 +315,21 @@ module Commontator
315
315
 
316
316
  it "won't undelete unless authorized and deleted" do
317
317
  expect(@comment.delete_by(@user)).to eq true
318
- put :undelete, :id => @comment.id
318
+ put :undelete, params: { id: @comment.id }
319
319
  expect(response).to have_http_status(:forbidden)
320
320
  @comment.reload
321
321
  expect(@comment.is_deleted?).to eq true
322
322
 
323
323
  sign_in @user
324
324
 
325
- put :undelete, :id => @comment.id
325
+ put :undelete, params: { id: @comment.id }
326
326
  expect(response).to have_http_status(:forbidden)
327
327
  @comment.reload
328
328
  expect(@comment.is_deleted?).to eq true
329
329
 
330
330
  @user.can_read = true
331
331
  expect(@comment.undelete_by(@user)).to eq true
332
- put :undelete, :id => @comment.id
332
+ put :undelete, params: { id: @comment.id }
333
333
  expect(response).to redirect_to @thread
334
334
  expect(assigns(:comment).errors).not_to be_empty
335
335
 
@@ -338,7 +338,7 @@ module Commontator
338
338
  user2.can_edit = true
339
339
  user2.is_admin = true
340
340
  expect(@comment.delete_by(user2)).to eq true
341
- put :undelete, :id => @comment.id
341
+ put :undelete, params: { id: @comment.id }
342
342
  expect(response).to have_http_status(:forbidden)
343
343
  @comment.reload
344
344
  expect(@comment.is_deleted?).to eq true
@@ -350,7 +350,7 @@ module Commontator
350
350
  comment2.save!
351
351
  expect(@comment.undelete_by(@user)).to eq true
352
352
  expect(@comment.delete_by(@user)).to eq true
353
- put :undelete, :id => @comment.id
353
+ put :undelete, params: { id: @comment.id }
354
354
  expect(response).to have_http_status(:forbidden)
355
355
  @comment.reload
356
356
  expect(@comment.is_deleted?).to eq true
@@ -361,7 +361,7 @@ module Commontator
361
361
 
362
362
  expect(@comment.delete_by(@user)).to eq true
363
363
  @user.can_read = true
364
- put :undelete, :id => @comment.id
364
+ put :undelete, params: { id: @comment.id }
365
365
  expect(response).to redirect_to @thread
366
366
  expect(assigns(:comment).errors).to be_empty
367
367
  expect(assigns(:comment).is_deleted?).to eq false
@@ -376,7 +376,7 @@ module Commontator
376
376
 
377
377
  expect(assigns(:comment).delete_by(@user)).to eq true
378
378
  user2.can_edit = true
379
- put :undelete, :id => @comment.id
379
+ put :undelete, params: { id: @comment.id }
380
380
  expect(response).to redirect_to @thread
381
381
  expect(assigns(:comment).errors).to be_empty
382
382
  expect(assigns(:comment).is_deleted?).to eq false
@@ -384,14 +384,14 @@ module Commontator
384
384
  expect(assigns(:comment).delete_by(@user)).to eq true
385
385
  user2.can_edit = false
386
386
  user2.is_admin = true
387
- put :undelete, :id => @comment.id
387
+ put :undelete, params: { id: @comment.id }
388
388
  expect(response).to redirect_to @thread
389
389
  expect(assigns(:comment).errors).to be_empty
390
390
  expect(assigns(:comment).is_deleted?).to eq false
391
391
  end
392
392
 
393
393
  it "won't upvote unless authorized" do
394
- put :upvote, :id => @comment.id
394
+ put :upvote, params: { id: @comment.id }
395
395
  expect(response).to have_http_status(:forbidden)
396
396
  @comment.reload
397
397
  expect(@comment.get_upvotes).to be_empty
@@ -399,7 +399,7 @@ module Commontator
399
399
 
400
400
  sign_in @user
401
401
  @user.can_read = true
402
- put :upvote, :id => @comment.id
402
+ put :upvote, params: { id: @comment.id }
403
403
  expect(response).to have_http_status(:forbidden)
404
404
  @comment.reload
405
405
  expect(@comment.get_upvotes).to be_empty
@@ -407,7 +407,7 @@ module Commontator
407
407
 
408
408
  user2 = DummyUser.create
409
409
  sign_in user2
410
- put :upvote, :id => @comment.id
410
+ put :upvote, params: { id: @comment.id }
411
411
  expect(response).to have_http_status(:forbidden)
412
412
  @comment.reload
413
413
  expect(@comment.get_upvotes).to be_empty
@@ -419,26 +419,26 @@ module Commontator
419
419
  user2.can_read = true
420
420
  sign_in user2
421
421
 
422
- put :upvote, :id => @comment.id
422
+ put :upvote, params: { id: @comment.id }
423
423
  expect(response).to redirect_to @thread
424
424
  expect(assigns(:comment).get_upvotes.count).to eq 1
425
425
  expect(assigns(:comment).get_downvotes).to be_empty
426
426
 
427
- put :upvote, :id => @comment.id
427
+ put :upvote, params: { id: @comment.id }
428
428
  expect(response).to redirect_to @thread
429
429
  expect(assigns(:comment).get_upvotes.count).to eq 1
430
430
  expect(assigns(:comment).get_downvotes).to be_empty
431
431
 
432
432
  expect(@comment.downvote_from(user2)).to eq true
433
433
 
434
- put :upvote, :id => @comment.id
434
+ put :upvote, params: { id: @comment.id }
435
435
  expect(response).to redirect_to @thread
436
436
  expect(assigns(:comment).get_upvotes.count).to eq 1
437
437
  expect(assigns(:comment).get_downvotes).to be_empty
438
438
  end
439
439
 
440
440
  it "won't downvote unless authorized" do
441
- put :downvote, :id => @comment.id
441
+ put :downvote, params: { id: @comment.id }
442
442
  expect(response).to have_http_status(:forbidden)
443
443
  @comment.reload
444
444
  expect(@comment.get_upvotes).to be_empty
@@ -446,7 +446,7 @@ module Commontator
446
446
 
447
447
  sign_in @user
448
448
  @user.can_read = true
449
- put :downvote, :id => @comment.id
449
+ put :downvote, params: { id: @comment.id }
450
450
  expect(response).to have_http_status(:forbidden)
451
451
  @comment.reload
452
452
  expect(@comment.get_upvotes).to be_empty
@@ -454,7 +454,7 @@ module Commontator
454
454
 
455
455
  user2 = DummyUser.create
456
456
  sign_in user2
457
- put :downvote, :id => @comment.id
457
+ put :downvote, params: { id: @comment.id }
458
458
  expect(response).to have_http_status(:forbidden)
459
459
  @comment.reload
460
460
  expect(@comment.get_upvotes).to be_empty
@@ -466,19 +466,19 @@ module Commontator
466
466
  user2.can_read = true
467
467
  sign_in user2
468
468
 
469
- put :downvote, :id => @comment.id
469
+ put :downvote, params: { id: @comment.id }
470
470
  expect(response).to redirect_to @thread
471
471
  expect(@comment.get_upvotes).to be_empty
472
472
  expect(@comment.get_downvotes.count).to eq 1
473
473
 
474
- put :downvote, :id => @comment.id
474
+ put :downvote, params: { id: @comment.id }
475
475
  expect(response).to redirect_to @thread
476
476
  expect(@comment.get_upvotes).to be_empty
477
477
  expect(@comment.get_downvotes.count).to eq 1
478
478
 
479
479
  expect(@comment.upvote_from(user2)).to eq true
480
480
 
481
- put :downvote, :id => @comment.id
481
+ put :downvote, params: { id: @comment.id }
482
482
  expect(response).to redirect_to @thread
483
483
  expect(@comment.get_upvotes).to be_empty
484
484
  expect(@comment.get_downvotes.count).to eq 1
@@ -487,7 +487,7 @@ module Commontator
487
487
  it "won't unvote unless authorized" do
488
488
  expect(@comment.upvote_from(@user)).to eq true
489
489
 
490
- put :unvote, :id => @comment.id
490
+ put :unvote, params: { id: @comment.id }
491
491
  expect(response).to have_http_status(:forbidden)
492
492
  @comment.reload
493
493
  expect(@comment.get_upvotes.count).to eq 1
@@ -495,7 +495,7 @@ module Commontator
495
495
 
496
496
  sign_in @user
497
497
  @user.can_read = true
498
- put :unvote, :id => @comment.id
498
+ put :unvote, params: { id: @comment.id }
499
499
  expect(response).to have_http_status(:forbidden)
500
500
  @comment.reload
501
501
  expect(@comment.get_upvotes.count).to eq 1
@@ -503,7 +503,7 @@ module Commontator
503
503
 
504
504
  user2 = DummyUser.create
505
505
  sign_in user2
506
- put :unvote, :id => @comment.id
506
+ put :unvote, params: { id: @comment.id }
507
507
  expect(response).to have_http_status(:forbidden)
508
508
  @comment.reload
509
509
  expect(@comment.get_upvotes.count).to eq 1
@@ -516,18 +516,18 @@ module Commontator
516
516
  sign_in user2
517
517
 
518
518
  expect(@comment.upvote_from(user2)).to eq true
519
- put :unvote, :id => @comment.id
519
+ put :unvote, params: { id: @comment.id }
520
520
  expect(response).to redirect_to @thread
521
521
  expect(assigns(:comment).get_upvotes).to be_empty
522
522
  expect(assigns(:comment).get_downvotes).to be_empty
523
523
 
524
- put :unvote, :id => @comment.id
524
+ put :unvote, params: { id: @comment.id }
525
525
  expect(response).to redirect_to @thread
526
526
  expect(assigns(:comment).get_upvotes).to be_empty
527
527
  expect(assigns(:comment).get_downvotes).to be_empty
528
528
 
529
529
  expect(@comment.downvote_from(user2)).to eq true
530
- put :unvote, :id => @comment.id
530
+ put :unvote, params: { id: @comment.id }
531
531
  expect(response).to redirect_to @thread
532
532
  expect(assigns(:comment).get_upvotes).to be_empty
533
533
  expect(assigns(:comment).get_downvotes).to be_empty
@@ -540,10 +540,9 @@ module Commontator
540
540
  @user.can_read = true
541
541
  sign_in @user
542
542
 
543
- attributes = { :body => 'Something else' }
544
- expect {
545
- post :create, :thread_id => @thread.id, :comment => attributes
546
- }.not_to change{ ActionMailer::Base.deliveries.count }
543
+ attributes = { body: 'Something else' }
544
+ expect_any_instance_of(ActionMailer::MessageDelivery).not_to receive(:deliver_later)
545
+ post :create, params: { thread_id: @thread.id, comment: attributes }
547
546
  expect(assigns(:comment).errors).to be_empty
548
547
  end
549
548
 
@@ -555,10 +554,9 @@ module Commontator
555
554
  @user.can_read = true
556
555
  sign_in @user
557
556
 
558
- attributes = { :body => 'Something else' }
559
- expect {
560
- post :create, :thread_id => @thread.id, :comment => attributes
561
- }.to change{ ActionMailer::Base.deliveries.count }.by(1)
557
+ attributes = { body: 'Something else' }
558
+ expect_any_instance_of(ActionMailer::MessageDelivery).to receive(:deliver_later)
559
+ post :create, params: { thread_id: @thread.id, comment: attributes }
562
560
  expect(assigns(:comment).errors).to be_empty
563
561
  end
564
562
 
@@ -567,9 +565,11 @@ module Commontator
567
565
  let!(:other_user) { DummyUser.create }
568
566
 
569
567
  let(:attributes) { { body: 'some comment' } }
570
- let(:call_request) { post :create, thread_id: @thread.id,
571
- comment: attributes,
572
- mentioned_ids: [user_to_subscribe.id] }
568
+ let(:call_request) do
569
+ post :create, params: { thread_id: @thread.id,
570
+ comment: attributes,
571
+ mentioned_ids: [user_to_subscribe.id] }
572
+ end
573
573
 
574
574
  before do
575
575
  @user.can_read = true
@@ -587,7 +587,8 @@ module Commontator
587
587
  end
588
588
 
589
589
  it 'does not send subscription emails' do
590
- expect{ call_request }.not_to change{ ActionMailer::Base.deliveries.count }
590
+ expect_any_instance_of(ActionMailer::MessageDelivery).not_to receive(:deliver_later)
591
+ call_request
591
592
  end
592
593
  end
593
594
 
@@ -603,10 +604,10 @@ module Commontator
603
604
  end
604
605
 
605
606
  it 'sends a subscription email' do
606
- expect{ call_request }.to change{ ActionMailer::Base.deliveries.count }.by(1)
607
+ expect_any_instance_of(ActionMailer::MessageDelivery).to receive(:deliver_later)
608
+ call_request
607
609
  end
608
610
  end
609
611
  end
610
612
  end
611
613
  end
612
-