proclaim 0.5.5 → 0.5.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8bce2e7e2311f573903511a372524c9f096a0870
4
- data.tar.gz: 57f23111baf862cbd0de4f1fa0f3e7c2814ae7b1
3
+ metadata.gz: 5010df73f9c56158e2848567ff36f237e84416b8
4
+ data.tar.gz: eb2c9683b06d54f40af0ca609af12c8f0794fae4
5
5
  SHA512:
6
- metadata.gz: 9219b01cd666a5d4c118c5c038ff11e04178c44ca71de009684ab8f88a189b1ab7a846d4b05d142f02610c8f26173206ad5ca4200c84e1e9b0d5a1542066ef05
7
- data.tar.gz: a16ecba90c52f4e95cfd4e6dc795f4a0d9f9c449d2228e43faa7f7afee6e75fa12565cef31685b43d74aa3566ca8f0fbe9842d69c2b7a95e57d207a27599a1b9
6
+ metadata.gz: 830649b8fad5fc8c4206b1cc96b9ea6730d839a1c4a5638e1601c9327ecd947315d647b1b85ad10275d52e2a463fa4c704e16282c6b7045720247f177218e6b8
7
+ data.tar.gz: 9f55f501b0639edda86983c4bcef68531df58edd279cf13d5922977510f4cf989bed9991e3f17a4b64acb5146deccf6145ae49eea6f66a29ae113d494a6ea9ce
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ v 0.5.6
2
+ - Refactor json responses in controllers
3
+ - Add a few more corner-case tests
4
+
1
5
  v 0.5.5
2
6
  - Add comment count to Post index
3
7
 
data/README.md CHANGED
@@ -33,7 +33,7 @@ Proclaim 0.5 works with Rails 4.2 and on, with Ruby 1.9.3 and on. Add it to your
33
33
  Gemfile with:
34
34
 
35
35
  ```ruby
36
- gem 'proclaim', "~> 0.5.5"
36
+ gem 'proclaim', "~> 0.5.6"
37
37
  ```
38
38
 
39
39
  Run `bundle install` to install it.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.5
1
+ 0.5.6
@@ -41,4 +41,38 @@ class Proclaim::ApplicationController < ApplicationController
41
41
  def cache_name_from_url(url)
42
42
  url.match(/[^\/]*?\/[^\/]*\z/)
43
43
  end
44
+
45
+ def handleJsonRequest(object, options = {})
46
+ operation = options[:operation] || true
47
+ successJson = options[:success_json] || true
48
+ failureJson = options[:failure_json] || lambda {object.errors.full_messages}
49
+ unauthorizedStatus = options[:unauthorized_status] || :unauthorized
50
+
51
+ begin
52
+ authorize object
53
+
54
+ yield if block_given?
55
+ return if performed? # Don't continue if the block rendered
56
+
57
+ respond_to do |format|
58
+ if (operation == true) or (operation.respond_to?(:call) and operation.call)
59
+ if successJson.respond_to? :call
60
+ successJson = successJson.call
61
+ end
62
+
63
+ format.json { render json: successJson }
64
+ else
65
+ if failureJson.respond_to? :call
66
+ failureJson = failureJson.call
67
+ end
68
+
69
+ format.json { render json: failureJson, status: :unprocessable_entity }
70
+ end
71
+ end
72
+ rescue Pundit::NotAuthorizedError
73
+ respond_to do |format|
74
+ format.json { render json: true, status: unauthorizedStatus }
75
+ end
76
+ end
77
+ end
44
78
  end
@@ -9,84 +9,66 @@ module Proclaim
9
9
  def create
10
10
  @comment = Comment.new(comment_params)
11
11
 
12
- begin
13
- authorize @comment
14
-
15
- if antispam_params[:answer] == antispam_params[:solution]
16
- subscription = nil
17
- params = subscription_params
18
- if params and params[:subscribe]
19
- subscription = Subscription.new(name: @comment.author,
20
- email: params[:email],
21
- post: @comment.post)
22
- end
23
-
24
- respond_to do |format|
25
- begin
26
- Comment.transaction do
27
- @comment.save!
28
-
29
- if subscription
30
- subscription.save!
31
- end
12
+ subscription = nil
13
+ if subscription_params and subscription_params[:subscribe]
14
+ subscription = Subscription.new(name: @comment.author,
15
+ email: subscription_params[:email],
16
+ post: @comment.post)
17
+ end
32
18
 
33
- format.json { render_comment_json(@comment) }
34
- end
35
- rescue ActiveRecord::RecordInvalid
36
- errorMessages = Array.new
37
- errorMessages += @comment.errors.full_messages
19
+ errors = Array.new
20
+ options = Hash.new
21
+ options[:success_json] = lambda {comment_json(@comment)}
22
+ options[:failure_json] = lambda {errors}
23
+ options[:operation] = lambda do
24
+ respond_to do |format|
25
+ begin
26
+ # Wrap saving the comment in a transaction, so if the
27
+ # subscription fails to save, the comment doesn't save either
28
+ # (and vice-versa).
29
+ Comment.transaction do
30
+ @comment.save!
38
31
 
39
32
  if subscription
40
- errorMessages += subscription.errors.full_messages
33
+ subscription.save!
41
34
  end
42
35
 
43
- format.json { render json: errorMessages, status: :unprocessable_entity }
36
+ return true
44
37
  end
38
+ rescue ActiveRecord::RecordInvalid
39
+ errors += @comment.errors.full_messages
40
+
41
+ if subscription
42
+ errors += subscription.errors.full_messages
43
+ end
44
+
45
+ return false
45
46
  end
46
- else
47
+ end
48
+ end
49
+
50
+ # Don't leak that the post actually exists. Turn the "unauthorized"
51
+ # into a "not found"
52
+ options[:unauthorized_status] = :not_found
53
+
54
+ handleJsonRequest(@comment, options) do
55
+ if antispam_params[:answer] != antispam_params[:solution]
47
56
  respond_to do |format|
48
57
  format.json { render json: ["Antispam question wasn't answered correctly"], status: :unprocessable_entity }
49
58
  end
50
59
  end
51
- rescue Pundit::NotAuthorizedError
52
- respond_to do |format|
53
- # Don't leak that the post actually exists. Turn the
54
- # "unauthorized" into a "not found"
55
- format.json { render json: true, status: :not_found }
56
- end
57
60
  end
58
61
  end
59
62
 
60
63
  def update
61
- begin
62
- authorize @comment
63
-
64
- respond_to do |format|
65
- if @comment.update(comment_params)
66
- format.json { render_comment_json(@comment) }
67
- else
68
- format.json { render json: @comment.errors.full_messages, status: :unprocessable_entity }
69
- end
70
- end
71
- rescue Pundit::NotAuthorizedError
72
- respond_to do |format|
73
- format.json { render json: true, status: :unauthorized }
74
- end
75
- end
64
+ handleJsonRequest(@comment,
65
+ operation: lambda {@comment.update(comment_params)},
66
+ success_json: lambda {comment_json(@comment)})
76
67
  end
77
68
 
78
69
  def destroy
79
- begin
80
- authorize @comment
81
-
82
- respond_to do |format|
83
- @comment.destroy
84
- format.json { render json: true, status: :ok }
85
- end
86
- rescue Pundit::NotAuthorizedError
87
- respond_to do |format|
88
- format.json { render json: true, status: :unauthorized }
89
- end
70
+ handleJsonRequest(@comment) do
71
+ @comment.destroy
90
72
  end
91
73
  end
92
74
 
@@ -96,10 +78,10 @@ module Proclaim
96
78
  @comment = Comment.find(params[:id])
97
79
  end
98
80
 
99
- def render_comment_json(comment)
100
- render json: {
101
- id: comment.id,
102
- html: comment_to_html(comment)
81
+ def comment_json(comment)
82
+ return {
83
+ id: comment.id,
84
+ html: comment_to_html(comment)
103
85
  }
104
86
  end
105
87
 
@@ -7,40 +7,18 @@ module Proclaim
7
7
  def create
8
8
  @image = Image.new(post_id: image_params[:post_id])
9
9
 
10
- begin
11
- authorize @image
12
-
10
+ handleJsonRequest(@image,
11
+ operation: lambda {@image.save},
12
+ success_json: lambda {@image.image.url}) do
13
13
  @image.image = image_params[:image]
14
-
15
- respond_to do |format|
16
- if @image.save
17
- format.json { render json: @image.image.url }
18
- else
19
- format.json { render json: @image.errors.full_messages, status: :unprocessable_entity }
20
- end
21
- end
22
- rescue Pundit::NotAuthorizedError
23
- respond_to do |format|
24
- format.json { render json: true, status: :unauthorized }
25
- end
26
14
  end
27
15
  end
28
16
 
29
17
  def cache
30
18
  @image = Image.new
31
19
 
32
- begin
33
- authorize @image
34
-
20
+ handleJsonRequest(@image, success_json: lambda {@image.image.url}) do
35
21
  @image.image = file_params[:file]
36
-
37
- respond_to do |format|
38
- format.json { render json: @image.image.url }
39
- end
40
- rescue Pundit::NotAuthorizedError
41
- respond_to do |format|
42
- format.json { render json: true, status: :unauthorized }
43
- end
44
22
  end
45
23
  end
46
24
 
@@ -59,37 +37,18 @@ module Proclaim
59
37
  @image = Image.find(image_id)
60
38
  end
61
39
 
62
- begin
63
- authorize @image
64
-
40
+ handleJsonRequest(@image, success_json: {id: image_id}) do
65
41
  if @image.new_record?
66
42
  @image.image.remove!
67
43
  end
68
-
69
- respond_to do |format|
70
- format.json { render json: {id: image_id}, status: :ok }
71
- end
72
- rescue Pundit::NotAuthorizedError
73
- respond_to do |format|
74
- format.json { render json: true, status: :unauthorized }
75
- end
76
44
  end
77
45
  end
78
46
 
79
47
  def destroy
80
48
  @image = Image.find(params[:id])
81
49
 
82
- begin
83
- authorize @image
84
-
85
- respond_to do |format|
86
- @image.destroy
87
- format.json { render json: true, status: :ok }
88
- end
89
- rescue Pundit::NotAuthorizedError
90
- respond_to do |format|
91
- format.json { render json: true, status: :unauthorized }
92
- end
50
+ handleJsonRequest(@image) do
51
+ @image.destroy
93
52
  end
94
53
  end
95
54
 
@@ -27,8 +27,6 @@
27
27
  <%= f.label :body %><br />
28
28
  <%= f.text_area :body, rows: 7, cols: 50 %><br />
29
29
 
30
-
31
-
32
30
  <% if comment.new_record? %>
33
31
  <%= label namespace_space+"antispam", "answer", "Spam bots can't do math. What is #{random_number_1} + #{random_number_2}?" %><br />
34
32
  <%= text_field "antispam", "answer", id: namespace_space+"antispam_answer" %><br />
@@ -1,3 +1,3 @@
1
1
  module Proclaim
2
- VERSION = "0.5.5"
2
+ VERSION = "0.5.6"
3
3
  end
@@ -88,7 +88,7 @@ module Proclaim
88
88
  assert_update_comment newComment
89
89
  end
90
90
 
91
- test "should not root update comment if not logged in" do
91
+ test "should not update root comment if not logged in" do
92
92
  newComment = FactoryGirl.create(:comment)
93
93
  refute_update_comment newComment
94
94
  end
@@ -45,6 +45,36 @@ module Proclaim
45
45
  assert_response :unauthorized
46
46
  end
47
47
 
48
+ test "should not create image without a post" do
49
+ user = FactoryGirl.create(:user)
50
+ sign_in user
51
+
52
+ image = FactoryGirl.build(:image, post: nil, image: nil)
53
+
54
+ assert_no_difference('Image.count') do
55
+ post :create, format: :json, image: {
56
+ image: Rack::Test::UploadedFile.new(File.join(Rails.root, '../', 'support', 'images', 'test.jpg'))
57
+ }
58
+ end
59
+
60
+ assert_response :unprocessable_entity
61
+ end
62
+
63
+ test "should not create image without actual image" do
64
+ user = FactoryGirl.create(:user)
65
+ sign_in user
66
+
67
+ image = FactoryGirl.build(:image, image: nil)
68
+
69
+ assert_no_difference('Image.count') do
70
+ post :create, format: :json, image: {
71
+ post_id: image.post_id
72
+ }
73
+ end
74
+
75
+ assert_response :unprocessable_entity
76
+ end
77
+
48
78
  test "should cache image if logged in" do
49
79
  user = FactoryGirl.create(:user)
50
80
  sign_in user
@@ -93,7 +123,7 @@ module Proclaim
93
123
  assert_response :unauthorized
94
124
  end
95
125
 
96
- test "should not destroy image if logged in but return ID" do
126
+ test "discard should not destroy image if logged in but return ID" do
97
127
  user = FactoryGirl.create(:user)
98
128
  sign_in user
99
129
 
@@ -110,11 +140,24 @@ module Proclaim
110
140
  assert_equal image.id.to_s, json["id"]
111
141
  end
112
142
 
143
+ test "should destroy image if logged in" do
144
+ user = FactoryGirl.create(:user)
145
+ sign_in user
146
+
147
+ image = FactoryGirl.create(:image)
148
+
149
+ assert_difference('Image.count', -1) do
150
+ delete :destroy, format: :json, id: image.id
151
+ end
152
+
153
+ assert_response :success
154
+ end
155
+
113
156
  test "should not destroy image if not logged in" do
114
157
  image = FactoryGirl.create(:image)
115
158
 
116
159
  assert_no_difference('Image.count') do
117
- post :discard, format: :json, file: image.image.url
160
+ delete :destroy, format: :json, id: image.id
118
161
  end
119
162
 
120
163
  assert_response :unauthorized
@@ -125,6 +125,44 @@ module Proclaim
125
125
  assert assigns(:post).published?
126
126
  end
127
127
 
128
+ test "should not create post without title" do
129
+ user = FactoryGirl.create(:user)
130
+ sign_in user
131
+
132
+ newPost = FactoryGirl.build(:post)
133
+
134
+ assert_no_difference('Post.count') do
135
+ post :create, post: {
136
+ author_id: newPost.author_id,
137
+ body: newPost.body
138
+ # Leave off title
139
+ }
140
+ end
141
+
142
+ assert assigns(:post).errors.any?,
143
+ "Expected an error due to lack of post title"
144
+ assert_template :new, "Expected new view to be rendered again"
145
+ end
146
+
147
+ test "should not create post without body" do
148
+ user = FactoryGirl.create(:user)
149
+ sign_in user
150
+
151
+ newPost = FactoryGirl.build(:post)
152
+
153
+ assert_no_difference('Post.count') do
154
+ post :create, post: {
155
+ author_id: newPost.author_id,
156
+ title: newPost.title
157
+ # Leave off body
158
+ }
159
+ end
160
+
161
+ assert assigns(:post).errors.any?,
162
+ "Expected an error due to lack of post body"
163
+ assert_template :new, "Expected new view to be rendered again"
164
+ end
165
+
128
166
  test "should upload images when creating post" do
129
167
  user = FactoryGirl.create(:user)
130
168
  sign_in user
@@ -367,6 +405,38 @@ module Proclaim
367
405
  assert_match /not authorized/, flash[:error]
368
406
  end
369
407
 
408
+ test "should not update post without title" do
409
+ user = FactoryGirl.create(:user)
410
+ sign_in user
411
+
412
+ newPost = FactoryGirl.create(:post)
413
+
414
+ patch :update, id: newPost, post: {
415
+ author_id: newPost.author_id,
416
+ title: "" # Remove title
417
+ }
418
+
419
+ assert assigns(:post).errors.any?,
420
+ "Expected an error due to lack of post title"
421
+ assert_template :edit, "Expected edit view to be rendered again"
422
+ end
423
+
424
+ test "should not update post without body" do
425
+ user = FactoryGirl.create(:user)
426
+ sign_in user
427
+
428
+ newPost = FactoryGirl.create(:post)
429
+
430
+ patch :update, id: newPost, post: {
431
+ author_id: newPost.author_id,
432
+ body: "" # Remove body
433
+ }
434
+
435
+ assert assigns(:post).errors.any?,
436
+ "Expected an error due to lack of post body"
437
+ assert_template :edit, "Expected edit view to be rendered again"
438
+ end
439
+
370
440
  test "should destroy post if logged in" do
371
441
  user = FactoryGirl.create(:user)
372
442
  sign_in user
@@ -48,6 +48,12 @@ module Proclaim
48
48
  assert_equal subscription, assigns(:subscription)
49
49
  end
50
50
 
51
+ test "show should return not found is token is invalid" do
52
+ assert_raises ActiveRecord::RecordNotFound do
53
+ get :show, token: 12345
54
+ end
55
+ end
56
+
51
57
  test "should get new if logged in" do
52
58
  user = FactoryGirl.create(:user)
53
59
  sign_in user
@@ -240,6 +240,44 @@ class CommentTest < ActionDispatch::IntegrationTest
240
240
  "The old child comment body should be gone!"
241
241
  end
242
242
 
243
+ test "edit should show error without author" do
244
+ user = FactoryGirl.create(:user)
245
+ sign_in user
246
+
247
+ comment = FactoryGirl.create(:published_comment)
248
+
249
+ visit proclaim.post_path(comment.post)
250
+
251
+ @show_page.comment_edit_link(comment).click
252
+
253
+ within("#edit_comment_#{comment.id}") do
254
+ fill_in 'Author', with: "" # An empty author should result in an error
255
+ end
256
+
257
+ @show_page.edit_comment_submit_button(comment).click
258
+
259
+ assert page.has_css?('div.error')
260
+ end
261
+
262
+ test "edit should show error without body" do
263
+ user = FactoryGirl.create(:user)
264
+ sign_in user
265
+
266
+ comment = FactoryGirl.create(:published_comment)
267
+
268
+ visit proclaim.post_path(comment.post)
269
+
270
+ @show_page.comment_edit_link(comment).click
271
+
272
+ within("#edit_comment_#{comment.id}") do
273
+ fill_in 'Body', with: "" # An empty body should result in an error
274
+ end
275
+
276
+ @show_page.edit_comment_submit_button(comment).click
277
+
278
+ assert page.has_css?('div.error')
279
+ end
280
+
243
281
  test "should not have option to delete if not logged in" do
244
282
  comment = FactoryGirl.create(:published_comment)
245
283
 
@@ -181,7 +181,7 @@ class PostFormTest < ActionDispatch::IntegrationTest
181
181
  assert page.has_no_text?("&quot;quotes&quot;"), "Show page should not be showing HTML entities in title!"
182
182
  end
183
183
 
184
- test "should show error without title" do
184
+ test "new should show error without title" do
185
185
  user = FactoryGirl.create(:user)
186
186
  sign_in user
187
187
 
@@ -203,7 +203,7 @@ class PostFormTest < ActionDispatch::IntegrationTest
203
203
  end
204
204
  end
205
205
 
206
- test "should show error without body" do
206
+ test "new should show error without body" do
207
207
  user = FactoryGirl.create(:user)
208
208
  sign_in user
209
209
 
@@ -53,6 +53,12 @@ module Proclaim
53
53
  assert_equal subscription2, Subscription.from_token(token2)
54
54
  end
55
55
 
56
+ test "an invalid token should raise a NotFound" do
57
+ assert_raises ActiveRecord::RecordNotFound do
58
+ Subscription.from_token("123456")
59
+ end
60
+ end
61
+
56
62
  test "should require valid post or none at all" do
57
63
  # Post 12345 doesn't exist
58
64
  subscription = FactoryGirl.build(:subscription, post_id: 12345)
@@ -0,0 +1,87 @@
1
+ require 'test_helper'
2
+
3
+ class ApplicationPolicyTest < ActiveSupport::TestCase
4
+ test "application index" do
5
+ user = FactoryGirl.create(:user)
6
+
7
+ # Verify that a user cannot visit the index by default
8
+ policy = ApplicationPolicy.new(user, nil)
9
+ refute policy.index?, "A user should be not able to visit the index by default"
10
+
11
+ # Verify that a guest cannot visit the index by default
12
+ policy = ApplicationPolicy.new(nil, nil)
13
+ refute policy.index?, "A guest should not be able to visit the index by default"
14
+ end
15
+
16
+ test "application show" do
17
+ user = FactoryGirl.create(:user)
18
+
19
+ # Verify that a user cannot view an object by default
20
+ policy = ApplicationPolicy.new(user, nil)
21
+ refute policy.show?, "A user should be not able to view an object by default"
22
+
23
+ # Verify that a guest cannot view an object by default
24
+ policy = ApplicationPolicy.new(nil, nil)
25
+ refute policy.show?, "A guest should not be able to view an object by default"
26
+ end
27
+
28
+ test "application create" do
29
+ user = FactoryGirl.create(:user)
30
+
31
+ # Verify that a user cannot create an object by default
32
+ policy = ApplicationPolicy.new(user, nil)
33
+ refute policy.create?, "A user should be not able to create an object by default"
34
+
35
+ # Verify that a guest cannot create an object by default
36
+ policy = ApplicationPolicy.new(nil, nil)
37
+ refute policy.create?, "A guest should not be able to create an object by default"
38
+ end
39
+
40
+ test "application new" do
41
+ user = FactoryGirl.create(:user)
42
+
43
+ # Verify that a user cannot visit the new action by default
44
+ policy = ApplicationPolicy.new(user, nil)
45
+ refute policy.new?, "A user should be not able to visit the new action by default"
46
+
47
+ # Verify that a guest cannot visit the new action by default
48
+ policy = ApplicationPolicy.new(nil, nil)
49
+ refute policy.new?, "A guest should not be able to visit the new action by default"
50
+ end
51
+
52
+ test "application update" do
53
+ user = FactoryGirl.create(:user)
54
+
55
+ # Verify that a user cannot update an object by default
56
+ policy = ApplicationPolicy.new(user, nil)
57
+ refute policy.update?, "A user should be not able to update an object by default"
58
+
59
+ # Verify that a guest cannot update an object by default
60
+ policy = ApplicationPolicy.new(nil, nil)
61
+ refute policy.update?, "A guest should not be able to update an object by default"
62
+ end
63
+
64
+ test "application edit" do
65
+ user = FactoryGirl.create(:user)
66
+
67
+ # Verify that a user cannot visit the edit action by default
68
+ policy = ApplicationPolicy.new(user, nil)
69
+ refute policy.edit?, "A user should be not able to visit the edit action by default"
70
+
71
+ # Verify that a guest cannot visit the edit action by default
72
+ policy = ApplicationPolicy.new(nil, nil)
73
+ refute policy.edit?, "A guest should not be able to visit the edit action by default"
74
+ end
75
+
76
+ test "application destroy" do
77
+ user = FactoryGirl.create(:user)
78
+
79
+ # Verify that a user cannot destroy an object by default
80
+ policy = ApplicationPolicy.new(user, nil)
81
+ refute policy.destroy?, "A user should be not able to destroy an object by default"
82
+
83
+ # Verify that a guest cannot destroy an object by default
84
+ policy = ApplicationPolicy.new(nil, nil)
85
+ refute policy.destroy?, "A guest should not be able to destroy an object by default"
86
+ end
87
+ end
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class ProclaimTest < ActiveSupport::TestCase
4
- test "truth" do
5
- assert_kind_of Module, Proclaim
6
- end
4
+ test "truth" do
5
+ assert_kind_of Module, Proclaim
6
+ end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proclaim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Fazzari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-29 00:00:00.000000000 Z
11
+ date: 2015-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -505,6 +505,7 @@ files:
505
505
  - test/models/proclaim/image_test.rb
506
506
  - test/models/proclaim/post_test.rb
507
507
  - test/models/proclaim/subscription_test.rb
508
+ - test/policies/application_policy_test.rb
508
509
  - test/policies/proclaim/comment_policy_test.rb
509
510
  - test/policies/proclaim/image_policy_test.rb
510
511
  - test/policies/proclaim/post_policy_test.rb
@@ -601,6 +602,7 @@ test_files:
601
602
  - test/dummy/config/initializers/cookies_serializer.rb
602
603
  - test/dummy/config/initializers/inflections.rb
603
604
  - test/dummy/README.rdoc
605
+ - test/policies/application_policy_test.rb
604
606
  - test/policies/proclaim/subscription_policy_test.rb
605
607
  - test/policies/proclaim/post_policy_test.rb
606
608
  - test/policies/proclaim/image_policy_test.rb