commontator 4.0.2 → 4.1.1

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 +3 -5
  3. data/app/assets/stylesheets/commontator/comments.css +16 -5
  4. data/app/assets/stylesheets/commontator/comments.css~ +98 -0
  5. data/app/controllers/commontator/application_controller.rb +6 -3
  6. data/app/controllers/commontator/application_controller.rb~ +30 -0
  7. data/app/controllers/commontator/threads_controller.rb +2 -0
  8. data/app/controllers/commontator/threads_controller.rb~ +44 -0
  9. data/app/helpers/commontator/threads_helper.rb +1 -8
  10. data/app/helpers/commontator/threads_helper.rb~ +11 -0
  11. data/app/mailers/commontator/subscriptions_mailer.rb +2 -4
  12. data/app/mailers/commontator/subscriptions_mailer.rb~ +50 -0
  13. data/app/models/commontator/comment.rb +23 -19
  14. data/app/models/commontator/comment.rb~ +106 -0
  15. data/app/models/commontator/thread.rb +10 -10
  16. data/app/models/commontator/thread.rb~ +124 -0
  17. data/app/views/commontator/comments/_show.html.erb +36 -34
  18. data/app/views/commontator/comments/_show.html.erb~ +47 -0
  19. data/app/views/commontator/comments/_votes.html.erb +6 -2
  20. data/app/views/commontator/comments/_votes.html.erb~ +61 -0
  21. data/app/views/commontator/comments/delete.js.erb +2 -2
  22. data/app/views/commontator/comments/delete.js.erb~ +17 -0
  23. data/app/views/commontator/comments/update.js.erb +2 -2
  24. data/app/views/commontator/comments/update.js.erb~ +7 -0
  25. data/app/views/commontator/subscriptions_mailer/comment_created.html.erb +2 -2
  26. data/app/views/commontator/subscriptions_mailer/comment_created.html.erb~ +6 -0
  27. data/app/views/commontator/threads/_show.html.erb +3 -7
  28. data/app/views/commontator/threads/_show.html.erb~ +58 -0
  29. data/config/initializers/commontator.rb +52 -47
  30. data/config/initializers/commontator.rb~ +176 -0
  31. data/lib/commontator.rb +6 -7
  32. data/lib/commontator.rb~ +61 -0
  33. data/lib/commontator/controller_includes.rb +1 -3
  34. data/lib/commontator/controller_includes.rb~ +22 -0
  35. data/lib/commontator/shared_helper.rb +3 -8
  36. data/lib/commontator/shared_helper.rb~ +37 -0
  37. data/lib/commontator/version.rb +1 -1
  38. data/lib/commontator/version.rb~ +3 -0
  39. data/spec/app/controllers/commontator/comments_controller_spec.rb +64 -45
  40. data/spec/app/controllers/commontator/comments_controller_spec.rb~ +580 -0
  41. data/spec/app/controllers/commontator/subscriptions_controller_spec.rb +3 -3
  42. data/spec/app/controllers/commontator/subscriptions_controller_spec.rb~ +99 -0
  43. data/spec/app/controllers/commontator/threads_controller_spec.rb +15 -9
  44. data/spec/app/controllers/commontator/threads_controller_spec.rb~ +126 -0
  45. data/spec/app/helpers/commontator/application_helper_spec.rb +1 -1
  46. data/spec/app/helpers/commontator/application_helper_spec.rb~ +9 -0
  47. data/spec/app/helpers/commontator/threads_helper_spec.rb +1 -5
  48. data/spec/app/helpers/commontator/threads_helper_spec.rb~ +13 -0
  49. data/spec/app/models/commontator/comment_spec.rb +4 -3
  50. data/spec/app/models/commontator/comment_spec.rb~ +62 -0
  51. data/spec/dummy/config/application.rb +1 -1
  52. data/spec/dummy/config/application.rb~ +27 -0
  53. data/spec/dummy/config/initializers/commontator.rb +67 -55
  54. data/spec/dummy/config/initializers/commontator.rb~ +176 -0
  55. data/spec/dummy/config/initializers/commontator2.rb~ +169 -0
  56. data/spec/dummy/db/test.sqlite3 +0 -0
  57. data/spec/dummy/log/test.log +84489 -0
  58. data/spec/dummy/tmp/cache/assets/test/sprockets/02d4b791eb831cf2057bf4703a1218d1 +0 -0
  59. data/spec/dummy/tmp/cache/assets/test/sprockets/0f196a1a50363b0a076ec6e1ee5417f6 +0 -0
  60. data/spec/dummy/tmp/cache/assets/test/sprockets/a41c8be5379abec3c0d0d98e2f0d5609 +0 -0
  61. data/spec/dummy/tmp/cache/assets/test/sprockets/e1f674c11941d62aac1764ef3a7134e4 +0 -0
  62. data/spec/dummy/tmp/cache/assets/test/sprockets/e85565206c3e5fdf9dfeb367c85557b1 +0 -0
  63. data/spec/lib/commontator/commontable_config_spec.rb +1 -1
  64. data/spec/lib/commontator/commontable_config_spec.rb~ +26 -0
  65. data/spec/lib/commontator/commontator_config_spec.rb +5 -5
  66. data/spec/lib/commontator/commontator_config_spec.rb~ +26 -0
  67. data/spec/lib/commontator_spec.rb +6 -4
  68. data/spec/lib/commontator_spec.rb~ +28 -0
  69. data/spec/test_helper.rb +4 -4
  70. data/spec/test_helper.rb~ +37 -0
  71. metadata +46 -2
@@ -6,7 +6,7 @@ module Commontator
6
6
  setup_controller_spec
7
7
  end
8
8
 
9
- it 'wont subscribe unless authorized' do
9
+ it "won't subscribe unless authorized" do
10
10
  put :subscribe, :thread_id => @thread.id, :use_route => :commontator
11
11
  assert_response 403
12
12
  @thread.subscription_for(nil).must_be_nil
@@ -50,7 +50,7 @@ module Commontator
50
50
  @thread.subscription_for(@user).wont_be_nil
51
51
  end
52
52
 
53
- it 'wont unsubscribe unless authorized' do
53
+ it "won't unsubscribe unless authorized" do
54
54
  @thread.subscribe(@user)
55
55
  put :unsubscribe, :thread_id => @thread.id, :use_route => :commontator
56
56
  assert_response 403
@@ -69,7 +69,7 @@ module Commontator
69
69
  assigns(:thread).errors.wont_be_empty
70
70
  end
71
71
 
72
- it 'must destroy if authorized' do
72
+ it 'must unsubscribe if authorized' do
73
73
  sign_in @user
74
74
 
75
75
  @thread.subscribe(@user)
@@ -0,0 +1,99 @@
1
+ require 'test_helper'
2
+
3
+ module Commontator
4
+ describe SubscriptionsController do
5
+ before do
6
+ setup_controller_spec
7
+ end
8
+
9
+ it 'wont subscribe unless authorized' do
10
+ put :subscribe, :thread_id => @thread.id, :use_route => :commontator
11
+ assert_response 403
12
+ @thread.subscription_for(nil).must_be_nil
13
+ @thread.subscription_for(@user).must_be_nil
14
+
15
+ sign_in @user
16
+ put :subscribe, :thread_id => @thread.id, :use_route => :commontator
17
+ assert_response 403
18
+ @thread.subscription_for(@user).must_be_nil
19
+
20
+ @thread.subscribe(@user)
21
+ @user.can_read = true
22
+ put :subscribe, :thread_id => @thread.id, :use_route => :commontator
23
+ assert_redirected_to @thread
24
+ assigns(:thread).errors.wont_be_empty
25
+ end
26
+
27
+ it 'must subscribe if authorized' do
28
+ sign_in @user
29
+
30
+ @user.can_read = true
31
+ put :subscribe, :thread_id => @thread.id, :use_route => :commontator
32
+ assert_redirected_to @thread
33
+ assigns(:thread).errors.must_be_empty
34
+ @thread.subscription_for(@user).wont_be_nil
35
+
36
+ @thread.unsubscribe(@user)
37
+ @user.can_read = false
38
+ @user.can_edit = true
39
+ put :subscribe, :thread_id => @thread.id, :use_route => :commontator
40
+ assert_redirected_to @thread
41
+ assigns(:thread).errors.must_be_empty
42
+ @thread.subscription_for(@user).wont_be_nil
43
+
44
+ @thread.unsubscribe(@user)
45
+ @user.can_edit = false
46
+ @user.is_admin = true
47
+ put :subscribe, :thread_id => @thread.id, :use_route => :commontator
48
+ assert_redirected_to @thread
49
+ assigns(:thread).errors.must_be_empty
50
+ @thread.subscription_for(@user).wont_be_nil
51
+ end
52
+
53
+ it 'wont unsubscribe unless authorized' do
54
+ @thread.subscribe(@user)
55
+ put :unsubscribe, :thread_id => @thread.id, :use_route => :commontator
56
+ assert_response 403
57
+ @thread.subscription_for(nil).must_be_nil
58
+ @thread.subscription_for(@user).wont_be_nil
59
+
60
+ sign_in @user
61
+ put :unsubscribe, :thread_id => @thread.id, :use_route => :commontator
62
+ assert_response 403
63
+ @thread.subscription_for(@user).wont_be_nil
64
+
65
+ @thread.unsubscribe(@user)
66
+ @user.can_read = true
67
+ put :unsubscribe, :thread_id => @thread.id, :use_route => :commontator
68
+ assert_redirected_to @thread
69
+ assigns(:thread).errors.wont_be_empty
70
+ end
71
+
72
+ it 'must destroy if authorized' do
73
+ sign_in @user
74
+
75
+ @thread.subscribe(@user)
76
+ @user.can_read = true
77
+ put :unsubscribe, :thread_id => @thread.id, :use_route => :commontator
78
+ assert_redirected_to @thread
79
+ assigns(:thread).errors.must_be_empty
80
+ @thread.subscription_for(@user).must_be_nil
81
+
82
+ @thread.subscribe(@user)
83
+ @user.can_read = false
84
+ @user.can_edit = true
85
+ put :unsubscribe, :thread_id => @thread.id, :use_route => :commontator
86
+ assert_redirected_to @thread
87
+ assigns(:thread).errors.must_be_empty
88
+ @thread.subscription_for(@user).must_be_nil
89
+
90
+ @thread.subscribe(@user)
91
+ @user.can_edit = false
92
+ @user.is_admin = true
93
+ put :unsubscribe, :thread_id => @thread.id, :use_route => :commontator
94
+ assert_redirected_to @thread
95
+ assigns(:thread).errors.must_be_empty
96
+ @thread.subscription_for(@user).must_be_nil
97
+ end
98
+ end
99
+ end
@@ -6,7 +6,7 @@ module Commontator
6
6
  setup_controller_spec
7
7
  end
8
8
 
9
- it 'wont show unless authorized' do
9
+ it "won't show unless authorized" do
10
10
  get :show, :id => @thread.id, :use_route => :commontator
11
11
  assert_response 403
12
12
 
@@ -34,20 +34,23 @@ module Commontator
34
34
  assert_redirected_to commontable_path
35
35
  end
36
36
 
37
- it 'wont close unless authorized and open' do
37
+ it "won't close unless authorized and open" do
38
38
  put :close, :id => @thread.id, :use_route => :commontator
39
39
  assert_response 403
40
- assigns(:thread).is_closed?.must_equal false
40
+ @thread.reload
41
+ @thread.is_closed?.must_equal false
41
42
 
42
43
  sign_in @user
43
44
  put :close, :id => @thread.id, :use_route => :commontator
44
45
  assert_response 403
45
- assigns(:thread).is_closed?.must_equal false
46
+ @thread.reload
47
+ @thread.is_closed?.must_equal false
46
48
 
47
49
  @user.can_read = true
48
50
  put :close, :id => @thread.id, :use_route => :commontator
49
51
  assert_response 403
50
- assigns(:thread).is_closed?.must_equal false
52
+ @thread.reload
53
+ @thread.is_closed?.must_equal false
51
54
 
52
55
  @user.can_edit = true
53
56
  @thread.close.must_equal true
@@ -76,21 +79,24 @@ module Commontator
76
79
  assigns(:thread).closer.must_equal @user
77
80
  end
78
81
 
79
- it 'wont reopen unless authorized and closed' do
82
+ it "won't reopen unless authorized and closed" do
80
83
  @thread.close.must_equal true
81
84
  put :reopen, :id => @thread.id, :use_route => :commontator
82
85
  assert_response 403
83
- assigns(:thread).is_closed?.must_equal true
86
+ @thread.reload
87
+ @thread.is_closed?.must_equal true
84
88
 
85
89
  sign_in @user
86
90
  put :reopen, :id => @thread.id, :use_route => :commontator
87
91
  assert_response 403
88
- assigns(:thread).is_closed?.must_equal true
92
+ @thread.reload
93
+ @thread.is_closed?.must_equal true
89
94
 
90
95
  @user.can_read = true
91
96
  put :reopen, :id => @thread.id, :use_route => :commontator
92
97
  assert_response 403
93
- assigns(:thread).is_closed?.must_equal true
98
+ @thread.reload
99
+ @thread.is_closed?.must_equal true
94
100
 
95
101
  @thread.reopen.must_equal true
96
102
  @user.can_edit = true
@@ -0,0 +1,126 @@
1
+ require 'test_helper'
2
+
3
+ module Commontator
4
+ describe ThreadsController do
5
+ before do
6
+ setup_controller_spec
7
+ end
8
+
9
+ it "won't show unless authorized" do
10
+ get :show, :id => @thread.id, :use_route => :commontator
11
+ assert_response 403
12
+
13
+ sign_in @user
14
+ get :show, :id => @thread.id, :use_route => :commontator
15
+ assert_response 403
16
+ end
17
+
18
+ it 'must show if authorized' do
19
+ commontable_path = Rails.application.routes.url_helpers.dummy_model_path(@commontable)
20
+ sign_in @user
21
+
22
+ @user.can_read = true
23
+ get :show, :id => @thread.id, :use_route => :commontator
24
+ assert_redirected_to commontable_path
25
+
26
+ @user.can_read = false
27
+ @user.can_edit = true
28
+ get :show, :id => @thread.id, :use_route => :commontator
29
+ assert_redirected_to commontable_path
30
+
31
+ @user.can_edit = false
32
+ @user.is_admin = true
33
+ get :show, :id => @thread.id, :use_route => :commontator
34
+ assert_redirected_to commontable_path
35
+ end
36
+
37
+ it "won't close unless authorized and open" do
38
+ put :close, :id => @thread.id, :use_route => :commontator
39
+ assert_response 403
40
+ assigns(:thread).is_closed?.must_equal false
41
+
42
+ sign_in @user
43
+ put :close, :id => @thread.id, :use_route => :commontator
44
+ assert_response 403
45
+ @thread.reload
46
+ @thread.is_closed?.must_equal false
47
+
48
+ @user.can_read = true
49
+ put :close, :id => @thread.id, :use_route => :commontator
50
+ assert_response 403
51
+ @thread.reload
52
+ @thread.is_closed?.must_equal false
53
+
54
+ @user.can_edit = true
55
+ @thread.close.must_equal true
56
+ put :close, :id => @thread.id, :use_route => :commontator
57
+ assert_redirected_to @thread
58
+ assigns(:thread).errors.wont_be_empty
59
+ end
60
+
61
+ it 'must close if authorized and open' do
62
+ sign_in @user
63
+
64
+ @user.can_edit = true
65
+ put :close, :id => @thread.id, :use_route => :commontator
66
+ assert_redirected_to @thread
67
+ assigns(:thread).errors.must_be_empty
68
+ assigns(:thread).is_closed?.must_equal true
69
+ assigns(:thread).closer.must_equal @user
70
+
71
+ assigns(:thread).reopen.must_equal true
72
+ @user.can_edit = false
73
+ @user.is_admin = true
74
+ put :close, :id => @thread.id, :use_route => :commontator
75
+ assert_redirected_to @thread
76
+ assigns(:thread).errors.must_be_empty
77
+ assigns(:thread).is_closed?.must_equal true
78
+ assigns(:thread).closer.must_equal @user
79
+ end
80
+
81
+ it "won't reopen unless authorized and closed" do
82
+ @thread.close.must_equal true
83
+ put :reopen, :id => @thread.id, :use_route => :commontator
84
+ assert_response 403
85
+ @thread.reload
86
+ @thread.is_closed?.must_equal true
87
+
88
+ sign_in @user
89
+ put :reopen, :id => @thread.id, :use_route => :commontator
90
+ assert_response 403
91
+ @thread.reload
92
+ @thread.is_closed?.must_equal true
93
+
94
+ @user.can_read = true
95
+ put :reopen, :id => @thread.id, :use_route => :commontator
96
+ assert_response 403
97
+ @thread.reload
98
+ @thread.is_closed?.must_equal true
99
+
100
+ @thread.reopen.must_equal true
101
+ @user.can_edit = true
102
+ put :reopen, :id => @thread.id, :use_route => :commontator
103
+ assert_redirected_to @thread
104
+ assigns(:thread).errors.wont_be_empty
105
+ end
106
+
107
+ it 'must reopen if authorized and closed' do
108
+ sign_in @user
109
+
110
+ @thread.close.must_equal true
111
+ @user.can_edit = true
112
+ put :reopen, :id => @thread.id, :use_route => :commontator
113
+ assert_redirected_to @thread
114
+ assigns(:thread).errors.must_be_empty
115
+ assigns(:thread).is_closed?.must_equal false
116
+
117
+ assigns(:thread).close.must_equal true
118
+ @user.can_edit = false
119
+ @user.is_admin = true
120
+ put :reopen, :id => @thread.id, :use_route => :commontator
121
+ assert_redirected_to @thread
122
+ assigns(:thread).errors.must_be_empty
123
+ assigns(:thread).is_closed?.must_equal false
124
+ end
125
+ end
126
+ end
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  module Commontator
4
4
  describe ApplicationHelper do
5
5
  it 'must print javascript proc' do
6
- javascript_proc.must_equal 'Dummy Javascript'
6
+ javascript_proc.must_equal ''
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ module Commontator
4
+ describe ApplicationHelper do
5
+ it 'must print javascript proc' do
6
+ javascript_proc.must_equal 'Dummy Javascript'
7
+ end
8
+ end
9
+ end
@@ -7,11 +7,7 @@ module Commontator
7
7
  end
8
8
 
9
9
  it 'must print commontable name' do
10
- commontable_name(@thread).must_equal 'dummy model'
11
- end
12
-
13
- it 'must print commontable id' do
14
- commontable_id(@thread).must_equal @thread.commontable_id
10
+ commontable_name(@thread).must_equal 'DummyModel #2'
15
11
  end
16
12
  end
17
13
  end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ module Commontator
4
+ describe ThreadsHelper do
5
+ before do
6
+ setup_helper_spec
7
+ end
8
+
9
+ it 'must print commontable name' do
10
+ commontable_name(@thread).must_equal 'DummyModel #1'
11
+ end
12
+ end
13
+ end
@@ -48,14 +48,15 @@ module Commontator
48
48
  it 'must make proper timestamps' do
49
49
  @comment.save!
50
50
 
51
- @comment.timestamp.must_equal "#{@thread.config.comment_create_verb_past.capitalize} on #{@comment.created_at.strftime(@thread.config.timestamp_format)}"
51
+ @comment.created_timestamp.must_equal "#{@thread.config.comment_create_verb_past.capitalize} on #{@comment.created_at.strftime(@thread.config.timestamp_format)}"
52
+ @comment.updated_timestamp.must_equal ''
52
53
 
53
54
  @comment.body = 'Something else'
54
55
  @comment.editor = @user
55
56
  @comment.save!
56
57
 
57
- @comment.timestamp.must_equal "#{@thread.config.comment_create_verb_past.capitalize} on #{@comment.created_at.strftime(@thread.config.timestamp_format)}" + \
58
- " | Last #{@thread.config.comment_edit_verb_past} on #{@comment.updated_at.strftime(@thread.config.timestamp_format)}"
58
+ @comment.created_timestamp.must_equal "#{@thread.config.comment_create_verb_past.capitalize} on #{@comment.created_at.strftime(@thread.config.timestamp_format)}"
59
+ @comment.updated_timestamp.must_equal "Last #{@thread.config.comment_edit_verb_past} on #{@comment.updated_at.strftime(@thread.config.timestamp_format)}"
59
60
  end
60
61
  end
61
62
  end
@@ -0,0 +1,62 @@
1
+ require 'test_helper'
2
+ require 'acts_as_votable'
3
+
4
+ module Commontator
5
+ describe Comment do
6
+ before do
7
+ setup_model_spec
8
+ @comment = Comment.new
9
+ @comment.thread = @thread
10
+ @comment.creator = @user
11
+ @comment.body = 'Something'
12
+ end
13
+
14
+ it 'must be votable if acts_as_votable is installed' do
15
+ Comment.must_respond_to(:acts_as_votable)
16
+ @comment.is_votable?.must_equal true
17
+ @comment.acts_as_votable_initialized.must_equal true
18
+ end
19
+
20
+ it 'must know if it has been modified' do
21
+ @comment.save!
22
+
23
+ @comment.is_modified?.must_equal false
24
+
25
+ @comment.body = 'Something else'
26
+ @comment.editor = @user
27
+ @comment.save!
28
+
29
+ @comment.is_modified?.must_equal true
30
+ end
31
+
32
+ it 'must know if it has been deleted' do
33
+ user = DummyUser.new
34
+
35
+ @comment.is_deleted?.must_equal false
36
+ @comment.editor.must_be_nil
37
+
38
+ @comment.delete_by(user)
39
+
40
+ @comment.is_deleted?.must_equal true
41
+ @comment.editor.must_equal user
42
+
43
+ @comment.undelete_by(user)
44
+
45
+ @comment.is_deleted?.must_equal false
46
+ end
47
+
48
+ it 'must make proper timestamps' do
49
+ @comment.save!
50
+
51
+ @comment.created_timestamp.must_equal "#{@thread.config.comment_create_verb_past.capitalize} on #{@comment.created_at.strftime(@thread.config.timestamp_format)}"
52
+ @comment.updated_timestamp.must_equal ''
53
+
54
+ @comment.body = 'Something else'
55
+ @comment.editor = @user
56
+ @comment.save!
57
+
58
+ @comment.created_timestamp.must_equal "#{@thread.config.comment_create_verb_past.capitalize} on #{@comment.created_at.strftime(@thread.config.timestamp_format)}"
59
+ @comment.updated_timestamp.must_equal 'Last #{@thread.config.comment_edit_verb_past} on #{@comment.updated_at.strftime(@thread.config.timestamp_format)}'
60
+ end
61
+ end
62
+ end