proclaim 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +4 -0
- data/README.md +1 -1
- data/VERSION +1 -1
- data/app/controllers/proclaim/posts_controller.rb +1 -1
- data/app/models/proclaim/post.rb +1 -1
- data/app/views/layouts/proclaim/subscription_mailer.html.erb +1 -1
- data/app/views/proclaim/posts/_form.html.erb +3 -3
- data/app/views/proclaim/posts/index.html.erb +1 -1
- data/app/views/proclaim/posts/show.html.erb +1 -1
- data/app/views/proclaim/subscription_mailer/new_post_notification_email.html.erb +1 -1
- data/lib/generators/proclaim/templates/initialize_proclaim.rb +6 -6
- data/lib/proclaim/version.rb +1 -1
- data/test/integration/with_javascript/post_form_test.rb +55 -9
- data/test/integration/with_javascript/post_show_test.rb +47 -0
- data/test/test_helper.rb +6 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f01a5d261bff3eb7daf30ba4bde79f074c20e58
|
4
|
+
data.tar.gz: 1519808eae64115a710a98131470e6b4fa61cd5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef0e2bdf09f08125eaf80c8f7fd91c7831b8081b4414ba28b472463d8f29db4fb196772d01f10185261c3eb57b9a0d8bc3d9797591134ca803f707a499866f2b
|
7
|
+
data.tar.gz: ce8688fb5521fa7777645fb4fabdaa7ae7a75e95860974cd2c769f9eb91b6e19b0cf75518a527b3167a58f4df6a6643fa74e10fd625e703f3618d8231cf47e86
|
data/CHANGELOG
CHANGED
data/README.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
@@ -100,7 +100,7 @@ module Proclaim
|
|
100
100
|
def post_params
|
101
101
|
# Ensure post title is sanitized of all HTML
|
102
102
|
if params[:post].include? :title
|
103
|
-
params[:post][:title] = Rails::Html::FullSanitizer.new.sanitize(params[:post][:title])
|
103
|
+
params[:post][:title] = HTMLEntities.new.decode(Rails::Html::FullSanitizer.new.sanitize(params[:post][:title]))
|
104
104
|
end
|
105
105
|
|
106
106
|
params.require(:post).permit(:title,
|
data/app/models/proclaim/post.rb
CHANGED
@@ -7,14 +7,14 @@
|
|
7
7
|
$(document).find("form.new_post h1.editable"),
|
8
8
|
$(document).find("input#post_body"),
|
9
9
|
$(document).find("form.new_post div.editable"),
|
10
|
-
<%=
|
10
|
+
<%= Proclaim.editor_toolbar_buttons.to_json.html_safe %>);
|
11
11
|
<% else %>
|
12
12
|
new Editor($(document).find("form.edit_post"),
|
13
13
|
$(document).find("input#post_title"),
|
14
14
|
$(document).find("form.edit_post h1.editable"),
|
15
15
|
$(document).find("input#post_body"),
|
16
16
|
$(document).find("form.edit_post div.editable"),
|
17
|
-
<%=
|
17
|
+
<%= Proclaim.editor_toolbar_buttons.to_json.html_safe %>);
|
18
18
|
<% end %>
|
19
19
|
});
|
20
20
|
</script>
|
@@ -36,7 +36,7 @@
|
|
36
36
|
<h1 class = "post_title editable" data-disable-return="true" data-disable-toolbar="true" data-placeholder="Post Title"><%= @post.title %></h1>
|
37
37
|
|
38
38
|
<div class = "post_body editable" data-placeholder = "Post Body" data-image-upload-path="<%= cache_image_path %>" data-image-delete-path="<%= discard_image_path %>">
|
39
|
-
<%=
|
39
|
+
<%= @post.body.html_safe %>
|
40
40
|
</div>
|
41
41
|
|
42
42
|
<div class = "post_information" style = "margin-bottom: 30px;">
|
@@ -3,23 +3,23 @@ Proclaim.setup do |config|
|
|
3
3
|
# `current_author_method` and `authentication_method`. For example, setting
|
4
4
|
# `author_class = "Admin"` changes the default `current_author_method` to be
|
5
5
|
# `:current_admin`, etc.
|
6
|
-
#author_class = "User"
|
6
|
+
#config.author_class = "User"
|
7
7
|
|
8
8
|
# Method to obtain the name of the author. This should be a method on the
|
9
9
|
# author class.
|
10
|
-
#author_name_method = :name
|
10
|
+
#config.author_name_method = :name
|
11
11
|
|
12
12
|
# Method to obtain the currently-authenticated user. Should return nil if
|
13
13
|
# no user is currently authenticated.
|
14
|
-
#current_author_method = :current_user
|
14
|
+
#config.current_author_method = :current_user
|
15
15
|
|
16
16
|
# Method to verify that a user is authenticated, and if not, will redirect
|
17
17
|
# to some sort of authentication page.
|
18
|
-
#authentication_method = :authenticate_user!
|
18
|
+
#config.authentication_method = :authenticate_user!
|
19
19
|
|
20
20
|
# Maximum length for the excerpts shown on the posts index.
|
21
|
-
#excerpt_length = 500
|
21
|
+
#config.excerpt_length = 500
|
22
22
|
|
23
23
|
# Buttons to display on post editor toolbar
|
24
|
-
#editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor', 'header1', 'header2', 'quote']
|
24
|
+
#config.editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor', 'header1', 'header2', 'quote']
|
25
25
|
end
|
data/lib/proclaim/version.rb
CHANGED
@@ -33,17 +33,19 @@ class PostFormTest < ActionDispatch::IntegrationTest
|
|
33
33
|
|
34
34
|
within('#new_post') do
|
35
35
|
element = find('h1.editable')
|
36
|
-
element.click()
|
36
|
+
#element.click()
|
37
37
|
element.set("Post Title") # Set the title text
|
38
38
|
element = find('div.editable')
|
39
|
-
element.click() # Select the element
|
39
|
+
#element.click() # Select the element
|
40
40
|
element.set("Paragraph 1\nParagraph 2") # Set the body text
|
41
41
|
end
|
42
42
|
|
43
|
-
assert_difference('Proclaim::Post.count'
|
43
|
+
assert_difference('Proclaim::Post.count', 1,
|
44
|
+
"A post should have been created") do
|
44
45
|
click_button "Create"
|
45
|
-
assert page.has_text?
|
46
|
-
assert page.has_text?
|
46
|
+
assert page.has_text?("Post Title"), "Post title should be shown"
|
47
|
+
assert page.has_text?("Paragraph 1\nParagraph 2"),
|
48
|
+
"Post body should be shown"
|
47
49
|
wait_for_ajax
|
48
50
|
end
|
49
51
|
end
|
@@ -137,6 +139,48 @@ class PostFormTest < ActionDispatch::IntegrationTest
|
|
137
139
|
assert File.exist?(saved_file_path), "File should still be saved: #{saved_file_path}"
|
138
140
|
end
|
139
141
|
|
142
|
+
test "form should not replace non-alphanumeric text in title with HTML entities" do
|
143
|
+
user = FactoryGirl.create(:user)
|
144
|
+
sign_in user
|
145
|
+
|
146
|
+
visit proclaim.new_post_path
|
147
|
+
|
148
|
+
within('#new_post') do
|
149
|
+
element = find('h1.editable')
|
150
|
+
#element.click()
|
151
|
+
element.set("\"quotes\"") # Set the title text
|
152
|
+
# Don't fill in body
|
153
|
+
end
|
154
|
+
|
155
|
+
click_button "Create"
|
156
|
+
|
157
|
+
assert page.has_css? "div#error_explanation"
|
158
|
+
|
159
|
+
assert page.has_text?("\"quotes\""), "Form should still be showing quotes in title!"
|
160
|
+
assert page.has_no_text?(""quotes""), "Form should not be showing HTML entities in title!"
|
161
|
+
end
|
162
|
+
|
163
|
+
test "show should not replace non-alphanumeric text in title with HTML entities" do
|
164
|
+
user = FactoryGirl.create(:user)
|
165
|
+
sign_in user
|
166
|
+
|
167
|
+
visit proclaim.new_post_path
|
168
|
+
|
169
|
+
within('#new_post') do
|
170
|
+
element = find('h1.editable')
|
171
|
+
#element.click()
|
172
|
+
element.set("\"quotes\"") # Set the title text
|
173
|
+
element = find('div.editable')
|
174
|
+
#element.click() # Select the element
|
175
|
+
element.set("Paragraph 1\nParagraph 2") # Set the body text
|
176
|
+
end
|
177
|
+
|
178
|
+
click_button "Create"
|
179
|
+
|
180
|
+
assert page.has_text?("\"quotes\""), "Show page should be showing quotes in title!"
|
181
|
+
assert page.has_no_text?(""quotes""), "Show page should not be showing HTML entities in title!"
|
182
|
+
end
|
183
|
+
|
140
184
|
test "should show error without title" do
|
141
185
|
user = FactoryGirl.create(:user)
|
142
186
|
sign_in user
|
@@ -146,13 +190,15 @@ class PostFormTest < ActionDispatch::IntegrationTest
|
|
146
190
|
within('#new_post') do
|
147
191
|
# Don't fill in title
|
148
192
|
element = find('div.editable')
|
149
|
-
element.click() # Select the element
|
193
|
+
#element.click() # Select the element
|
150
194
|
element.set("Paragraph 1\nParagraph 2") # Set the text
|
151
195
|
end
|
152
196
|
|
153
|
-
assert_no_difference('Proclaim::Post.count'
|
197
|
+
assert_no_difference('Proclaim::Post.count',
|
198
|
+
"No post should have been created without a title") do
|
154
199
|
click_button "Create"
|
155
|
-
assert page.has_css?
|
200
|
+
assert page.has_css?("div#error_explanation"),
|
201
|
+
"Should show error complaining about lack of title"
|
156
202
|
wait_for_ajax
|
157
203
|
end
|
158
204
|
end
|
@@ -165,7 +211,7 @@ class PostFormTest < ActionDispatch::IntegrationTest
|
|
165
211
|
|
166
212
|
within('#new_post') do
|
167
213
|
element = find('h1.editable')
|
168
|
-
element.click()
|
214
|
+
#element.click()
|
169
215
|
element.set("Post Title") # Set the title text
|
170
216
|
# Don't fill in the body
|
171
217
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PostShowTest < ActionDispatch::IntegrationTest
|
4
|
+
self.use_transactional_fixtures = false
|
5
|
+
|
6
|
+
setup do
|
7
|
+
ApplicationController.any_instance.stubs(:current_user).returns(nil)
|
8
|
+
ApplicationController.any_instance.stubs(:authenticate_user).returns(false)
|
9
|
+
|
10
|
+
DatabaseCleaner.strategy = :truncation
|
11
|
+
DatabaseCleaner.start
|
12
|
+
|
13
|
+
Capybara.current_driver = :selenium
|
14
|
+
|
15
|
+
@show_pag = ShowPage.new
|
16
|
+
end
|
17
|
+
|
18
|
+
teardown do
|
19
|
+
DatabaseCleaner.clean
|
20
|
+
Capybara.use_default_driver
|
21
|
+
end
|
22
|
+
|
23
|
+
test "show should include edit/delete buttons if logged in" do
|
24
|
+
user = FactoryGirl.create(:user)
|
25
|
+
sign_in user
|
26
|
+
|
27
|
+
post = FactoryGirl.create(:published_post)
|
28
|
+
|
29
|
+
visit proclaim.post_path(post)
|
30
|
+
|
31
|
+
assert page.has_css?('a', text: "Edit"),
|
32
|
+
"The show page should include a link to edit if logged in!"
|
33
|
+
assert page.has_css?('a', text: "Delete"),
|
34
|
+
"The show page should include a link to delete if logged in!"
|
35
|
+
end
|
36
|
+
|
37
|
+
test "show should not include edit/delete buttons if not logged in" do
|
38
|
+
post = FactoryGirl.create(:published_post)
|
39
|
+
|
40
|
+
visit proclaim.post_path(post)
|
41
|
+
|
42
|
+
assert page.has_no_css?('a', text: "Edit"),
|
43
|
+
"The show page should not include a link to edit if not logged in!"
|
44
|
+
assert page.has_no_css?('a', text: "Delete"),
|
45
|
+
"The show page should not include a link to delete if not logged in!"
|
46
|
+
end
|
47
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -11,7 +11,6 @@ require 'database_cleaner'
|
|
11
11
|
require 'test_after_commit'
|
12
12
|
require 'coffee_script'
|
13
13
|
require 'sass'
|
14
|
-
#Capybara.app = Proclaim::Engine
|
15
14
|
|
16
15
|
Rails.backtrace_cleaner.remove_silencers!
|
17
16
|
|
@@ -25,6 +24,12 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
|
25
24
|
# include Proclaim::Engine.routes.url_helpers
|
26
25
|
#end
|
27
26
|
|
27
|
+
# Selenium isn't working with Firefox 35 (01/16/14). Use Chrome instead, for
|
28
|
+
# now. Too bad, really... I hate Chrome.
|
29
|
+
Capybara.register_driver :selenium do |app|
|
30
|
+
Capybara::Selenium::Driver.new(app, :browser => :chrome)
|
31
|
+
end
|
32
|
+
|
28
33
|
class ActionDispatch::IntegrationTest
|
29
34
|
# Make the Capybara DSL available in all integration tests
|
30
35
|
include Capybara::DSL
|
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.2.
|
4
|
+
version: 0.2.2
|
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-01-
|
11
|
+
date: 2015-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -447,6 +447,7 @@ files:
|
|
447
447
|
- test/helpers/proclaim/subscriptions_helper_test.rb
|
448
448
|
- test/integration/with_javascript/comment_test.rb
|
449
449
|
- test/integration/with_javascript/post_form_test.rb
|
450
|
+
- test/integration/with_javascript/post_show_test.rb
|
450
451
|
- test/integration/with_javascript/post_subscription_test.rb
|
451
452
|
- test/integration/without_javascript/blog_subscription_test.rb
|
452
453
|
- test/integration/without_javascript/post_test.rb
|
@@ -544,6 +545,7 @@ test_files:
|
|
544
545
|
- test/integration/with_javascript/comment_test.rb
|
545
546
|
- test/integration/with_javascript/post_subscription_test.rb
|
546
547
|
- test/integration/with_javascript/post_form_test.rb
|
548
|
+
- test/integration/with_javascript/post_show_test.rb
|
547
549
|
- test/integration/without_javascript/post_test.rb
|
548
550
|
- test/integration/without_javascript/subscription_email_test.rb
|
549
551
|
- test/integration/without_javascript/unsubscribe_test.rb
|