proclaim 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
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