rails-footnotes 4.1.6 → 4.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +3 -1
- data/Rakefile +1 -1
- data/lib/rails-footnotes.rb +6 -2
- data/lib/rails-footnotes/extension.rb +2 -2
- data/lib/rails-footnotes/filter.rb +9 -1
- data/lib/rails-footnotes/notes/view_note.rb +15 -7
- data/lib/rails-footnotes/version.rb +1 -1
- data/rails-footnotes.gemspec +1 -1
- data/spec/abstract_note_spec.rb +17 -13
- data/spec/controllers/files_note_controller_spec.rb +1 -7
- data/spec/controllers/footnotes_controller_spec.rb +44 -11
- data/spec/controllers/log_note_controller_spec.rb +3 -7
- data/spec/controllers/partials_note_controller_spec.rb +2 -2
- data/spec/footnotes_spec.rb +34 -34
- data/spec/notes/assigns_note_spec.rb +11 -7
- data/spec/notes/controller_note_spec.rb +2 -2
- data/spec/notes/files_note_spec.rb +5 -1
- data/spec/notes/javascripts_note_spec.rb +1 -1
- data/spec/notes/stylesheets_note_spec.rb +1 -1
- data/spec/notes/view_note_spec.rb +12 -0
- data/spec/spec_helper.rb +10 -2
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e2343ef7d62b4ef197387788f0ff7dd42e86441
|
4
|
+
data.tar.gz: 72282e6373b9b1519d1cd6ba2eedea85aaf39d60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb376b0a2f6ee0414db7c4923bd0d9d81813852241cccee6f5a0861c6f92d99f5f19b69eb2a25812694245c62048a4f75dadc46406963e4dc714bc7e1c4dbc60
|
7
|
+
data.tar.gz: c202eef9eb88ba4327a00c046763e5572269b863ac528bb6a58644f2bda6f29ee99902cff4102daf1da9f3fecdc052e79fc0d36aa68807fda0a91b48820f8c42
|
data/CHANGELOG
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
== Footnotes v4.1.7 ==
|
2
|
+
* Fix notes not collapsing when clicking on them again (#130)*
|
1
3
|
== Footnotes v4.1.6 ==
|
2
|
-
* Fix incorrect handler link to css/js files (#
|
4
|
+
* Fix incorrect handler link to css/js files (#127)*
|
3
5
|
== Footnotes v4.1.5 ==
|
4
6
|
* Remove use of non-existing note in initializer introduced in v4, impacting new installations *
|
5
7
|
== Footnotes v4.1.4 ==
|
data/Rakefile
CHANGED
data/lib/rails-footnotes.rb
CHANGED
@@ -50,9 +50,13 @@ module Footnotes
|
|
50
50
|
@@after_hooks << block
|
51
51
|
end
|
52
52
|
|
53
|
-
def self.enabled?
|
53
|
+
def self.enabled?(controller)
|
54
54
|
if @@enabled.is_a? Proc
|
55
|
-
@@enabled.
|
55
|
+
if @@enabled.arity == 1
|
56
|
+
@@enabled.call(controller)
|
57
|
+
else
|
58
|
+
@@enabled.call
|
59
|
+
end
|
56
60
|
else
|
57
61
|
!!@@enabled
|
58
62
|
end
|
@@ -11,13 +11,13 @@ module Footnotes
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def rails_footnotes_before_filter
|
14
|
-
if Footnotes.enabled?
|
14
|
+
if Footnotes.enabled?(self)
|
15
15
|
Footnotes::Filter.start!(self)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
def rails_footnotes_after_filter
|
20
|
-
if Footnotes.enabled?
|
20
|
+
if Footnotes.enabled?(self)
|
21
21
|
filter = Footnotes::Filter.new(self)
|
22
22
|
filter.add_footnotes!
|
23
23
|
filter.close!(self)
|
@@ -207,14 +207,22 @@ module Footnotes
|
|
207
207
|
}
|
208
208
|
|
209
209
|
function hideAllAndToggle(id) {
|
210
|
+
var n = note(id);
|
211
|
+
var display = n.style.display;
|
210
212
|
hideAll();
|
213
|
+
// Restore original display to allow toggling
|
214
|
+
n.style.display = display;
|
211
215
|
toggle(id)
|
212
216
|
|
213
217
|
location.href = '#footnotes_debug';
|
214
218
|
}
|
215
219
|
|
220
|
+
function note(id) {
|
221
|
+
return (document.getElementById(id));
|
222
|
+
}
|
223
|
+
|
216
224
|
function toggle(id){
|
217
|
-
var el =
|
225
|
+
var el = note(id);
|
218
226
|
if (el.style.display == 'none') {
|
219
227
|
Footnotes.show(el);
|
220
228
|
} else {
|
@@ -1,31 +1,39 @@
|
|
1
1
|
module Footnotes
|
2
2
|
module Notes
|
3
3
|
class ViewNote < AbstractNote
|
4
|
+
cattr_accessor :template
|
5
|
+
|
6
|
+
def self.start!(controller)
|
7
|
+
@subscriber ||= ActiveSupport::Notifications.subscribe('render_template.action_view') do |*args|
|
8
|
+
event = ActiveSupport::Notifications::Event.new *args
|
9
|
+
self.template = {:file => event.payload[:identifier], :duration => event.duration}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
4
13
|
def initialize(controller)
|
5
14
|
@controller = controller
|
6
|
-
@template = controller.instance_variable_get(:@template)
|
7
15
|
end
|
8
16
|
|
9
17
|
def row
|
10
18
|
:edit
|
11
19
|
end
|
12
20
|
|
21
|
+
def title
|
22
|
+
"View (#{"%.3f" % self.template[:duration]}ms)"
|
23
|
+
end
|
24
|
+
|
13
25
|
def link
|
14
26
|
escape(Footnotes::Filter.prefix(filename, 1, 1))
|
15
27
|
end
|
16
28
|
|
17
29
|
def valid?
|
18
|
-
prefix? &&
|
30
|
+
prefix? && filename && File.exists?(filename)
|
19
31
|
end
|
20
32
|
|
21
33
|
protected
|
22
34
|
|
23
|
-
def first_render?
|
24
|
-
@template.instance_variable_get(:@_first_render)
|
25
|
-
end
|
26
|
-
|
27
35
|
def filename
|
28
|
-
@filename ||=
|
36
|
+
@filename ||= self.class.template[:file]
|
29
37
|
end
|
30
38
|
|
31
39
|
end
|
data/rails-footnotes.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
|
17
17
|
s.add_dependency "rails", ">= 3.2"
|
18
18
|
|
19
|
-
s.add_development_dependency "rspec-rails", '~> 2.
|
19
|
+
s.add_development_dependency "rspec-rails", '~> 3.2.1'
|
20
20
|
s.add_development_dependency "test-unit"
|
21
21
|
s.add_development_dependency "capybara"
|
22
22
|
|
data/spec/abstract_note_spec.rb
CHANGED
@@ -11,17 +11,21 @@ describe Footnotes::Notes::AbstractNote do
|
|
11
11
|
Footnotes::Filter.notes = @notes
|
12
12
|
end
|
13
13
|
|
14
|
-
it {described_class.
|
15
|
-
it {described_class.
|
16
|
-
it {described_class.
|
14
|
+
it {expect(described_class).to respond_to :start!}
|
15
|
+
it {expect(described_class).to respond_to :close!}
|
16
|
+
it {expect(described_class).to respond_to :title}
|
17
17
|
|
18
18
|
it {should respond_to :to_sym}
|
19
|
-
its(:to_sym) {should eql :abstract}
|
20
19
|
|
21
|
-
|
20
|
+
describe '#to_sym' do
|
21
|
+
subject { super().to_sym }
|
22
|
+
it {should eql :abstract}
|
23
|
+
end
|
24
|
+
|
25
|
+
it { expect(described_class).to be_included }
|
22
26
|
specify do
|
23
27
|
Footnotes::Filter.notes = []
|
24
|
-
described_class.
|
28
|
+
expect(described_class).not_to be_included
|
25
29
|
end
|
26
30
|
|
27
31
|
it { should respond_to :row }
|
@@ -45,12 +49,12 @@ describe Footnotes::Notes::AbstractNote do
|
|
45
49
|
|
46
50
|
#TODO should be moved to builder
|
47
51
|
#helpers
|
48
|
-
specify { subject.escape('<').
|
49
|
-
specify { subject.escape('&').
|
50
|
-
specify { subject.escape('>').
|
52
|
+
specify { expect(subject.escape('<')).to eql '<' }
|
53
|
+
specify { expect(subject.escape('&')).to eql '&' }
|
54
|
+
specify { expect(subject.escape('>')).to eql '>' }
|
51
55
|
|
52
|
-
specify { subject.mount_table([]).
|
53
|
-
specify { subject.mount_table([['h1', 'h2', 'h3']], :class => 'table').
|
56
|
+
specify { expect(subject.mount_table([])).to be_blank }
|
57
|
+
specify { expect(subject.mount_table([['h1', 'h2', 'h3']], :class => 'table')).to be_blank }
|
54
58
|
|
55
59
|
specify {
|
56
60
|
tab = <<-TABLE
|
@@ -60,7 +64,7 @@ describe Footnotes::Notes::AbstractNote do
|
|
60
64
|
</table>
|
61
65
|
TABLE
|
62
66
|
|
63
|
-
subject.mount_table([['h1'],['r1c1']], :class => 'table').
|
67
|
+
expect(subject.mount_table([['h1'],['r1c1']], :class => 'table')).to eql tab
|
64
68
|
}
|
65
69
|
|
66
70
|
specify {
|
@@ -70,7 +74,7 @@ describe Footnotes::Notes::AbstractNote do
|
|
70
74
|
<tbody><tr><td>r1c1</td><td>r1c2</td><td>r1c3</td></tr></tbody>
|
71
75
|
</table>
|
72
76
|
TABLE
|
73
|
-
subject.mount_table([['h1', 'h2', 'h3'],['r1c1', 'r1c2', 'r1c3']]).
|
77
|
+
expect(subject.mount_table([['h1', 'h2', 'h3'],['r1c1', 'r1c2', 'r1c3']])).to eql tab
|
74
78
|
}
|
75
79
|
|
76
80
|
specify {
|
@@ -6,14 +6,8 @@ class FilesController < ApplicationController
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
describe FilesController do
|
10
|
-
|
9
|
+
describe FilesController, type: :controller do
|
11
10
|
render_views
|
12
|
-
include Capybara::DSL
|
13
|
-
|
14
|
-
def page
|
15
|
-
Capybara::Node::Simple.new(response.body)
|
16
|
-
end
|
17
11
|
|
18
12
|
before :all do
|
19
13
|
Footnotes.enabled = true
|
@@ -20,28 +20,24 @@ class FootnotesController < ActionController::Base
|
|
20
20
|
|
21
21
|
end
|
22
22
|
|
23
|
-
describe FootnotesController do
|
24
|
-
|
25
|
-
def page
|
26
|
-
Capybara::Node::Simple.new(response.body)
|
27
|
-
end
|
23
|
+
describe FootnotesController, type: :controller do
|
28
24
|
|
29
25
|
shared_examples 'has_footnotes' do
|
30
26
|
it 'includes footnotes' do
|
31
27
|
get :foo
|
32
|
-
response.body.
|
28
|
+
expect(response.body).to have_selector('#footnotes_debug')
|
33
29
|
end
|
34
30
|
end
|
35
31
|
|
36
32
|
shared_examples 'has_no_footnotes' do
|
37
33
|
it 'does not include footnotes' do
|
38
|
-
response.body.
|
34
|
+
expect(response.body).not_to have_selector('#footnotes_debug')
|
39
35
|
end
|
40
36
|
end
|
41
37
|
|
42
38
|
it 'does not alter the page by default' do
|
43
39
|
get :foo
|
44
|
-
response.body.
|
40
|
+
expect(response.body).to eq(HTML_DOCUMENT)
|
45
41
|
end
|
46
42
|
|
47
43
|
context 'with footnotes' do
|
@@ -62,17 +58,17 @@ describe FootnotesController do
|
|
62
58
|
end
|
63
59
|
|
64
60
|
it 'includes footnotes in the last div in body' do
|
65
|
-
all('body > :last-child')[0][:id].
|
61
|
+
expect(all('body > :last-child')[0][:id]).to eq('footnotes_debug')
|
66
62
|
end
|
67
63
|
|
68
64
|
it 'includes footnotes in the footnoted_holder div if present' do
|
69
65
|
get :foo_holder
|
70
|
-
response.body.
|
66
|
+
expect(response.body).to have_selector('#footnotes_holder > #footnotes_debug')
|
71
67
|
end
|
72
68
|
|
73
69
|
it 'does not alter a html file download' do
|
74
70
|
get :foo_download
|
75
|
-
response.body.
|
71
|
+
expect(response.body).to eq(File.open(Rails.root.join('fixtures', 'html_download.html')).read)
|
76
72
|
end
|
77
73
|
end
|
78
74
|
|
@@ -90,6 +86,43 @@ describe FootnotesController do
|
|
90
86
|
end
|
91
87
|
end
|
92
88
|
|
89
|
+
describe 'when footnotes is disabled' do
|
90
|
+
include_context 'has_no_footnotes'
|
91
|
+
before do
|
92
|
+
Footnotes.enabled = false
|
93
|
+
get :foo
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe 'with a proc' do
|
98
|
+
|
99
|
+
it 'yields the controller' do
|
100
|
+
c = nil
|
101
|
+
Footnotes.enabled = lambda { |controller| c = controller}
|
102
|
+
get :foo
|
103
|
+
expect(c).to be_kind_of(ActionController::Base)
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'returning true' do
|
107
|
+
include_context 'has_footnotes'
|
108
|
+
|
109
|
+
before do
|
110
|
+
Footnotes.enabled = lambda { true }
|
111
|
+
get :foo
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context 'returning false' do
|
116
|
+
include_context 'has_no_footnotes'
|
117
|
+
|
118
|
+
before do
|
119
|
+
Footnotes.enabled = lambda { false }
|
120
|
+
get :foo
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|
93
126
|
end
|
94
127
|
|
95
128
|
end
|
@@ -1,11 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'stringio'
|
3
3
|
|
4
|
-
describe 'log note' do
|
5
|
-
|
6
|
-
def page
|
7
|
-
Capybara::Node::Simple.new(response.body)
|
8
|
-
end
|
4
|
+
describe 'log note', type: :controller do
|
9
5
|
|
10
6
|
class ApplicationController < ActionController::Base
|
11
7
|
end
|
@@ -29,8 +25,8 @@ describe 'log note' do
|
|
29
25
|
it 'Includes the log in the response' do
|
30
26
|
get :index
|
31
27
|
log_debug = first('fieldset#log_debug_info div', :visible => false)
|
32
|
-
log_debug.
|
33
|
-
log_debug.
|
28
|
+
expect(log_debug).to have_content('foo')
|
29
|
+
expect(log_debug).to have_content('bar')
|
34
30
|
end
|
35
31
|
|
36
32
|
end
|
@@ -7,7 +7,7 @@ class PartialsController < ActionController::Base
|
|
7
7
|
|
8
8
|
end
|
9
9
|
|
10
|
-
describe PartialsController do
|
10
|
+
describe PartialsController, type: :controller do
|
11
11
|
|
12
12
|
render_views
|
13
13
|
|
@@ -21,7 +21,7 @@ describe PartialsController do
|
|
21
21
|
|
22
22
|
it 'lists the rendered partials' do
|
23
23
|
get :index
|
24
|
-
response.body.
|
24
|
+
expect(response.body).to have_selector('#footnotes_debug #partials_debug_info table tr', :visible => false, :count => 2)
|
25
25
|
end
|
26
26
|
|
27
27
|
|
data/spec/footnotes_spec.rb
CHANGED
@@ -42,7 +42,7 @@ describe "Footnotes" do
|
|
42
42
|
|
43
43
|
it "footnotes_controller" do
|
44
44
|
index = @controller.response.body.index(/This is the HTML page/)
|
45
|
-
index.
|
45
|
+
expect(index).to eql 334
|
46
46
|
end
|
47
47
|
|
48
48
|
context "response_body is file" do
|
@@ -66,62 +66,62 @@ describe "Footnotes" do
|
|
66
66
|
|
67
67
|
it "foonotes_included" do
|
68
68
|
footnotes_perform!
|
69
|
-
@controller.response_body.
|
69
|
+
expect(@controller.response_body).not_to eq(HTML_DOCUMENT)
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should escape links with special chars" do
|
73
73
|
note_with_link = Footnotes::Notes::FileURINote.new
|
74
74
|
link = Footnotes::Filter.prefix(note_with_link.link, 1, 1, 1)
|
75
|
-
link.
|
75
|
+
expect(link).to eql "txmt://open?url=file:///example/local%20file%20path/with-special-chars/%C3%B6%C3%A4%C3%BC/file&line=1&column=1"
|
76
76
|
end
|
77
77
|
|
78
78
|
specify "footnotes_not_included_when_request_is_xhr" do
|
79
79
|
@controller.request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'
|
80
80
|
@controller.request.env['HTTP_ACCEPT'] = 'text/javascript, text/html, application/xml, text/xml, */*'
|
81
81
|
footnotes_perform!
|
82
|
-
@controller.response.body.
|
82
|
+
expect(@controller.response.body).to eql HTML_DOCUMENT
|
83
83
|
end
|
84
84
|
|
85
85
|
specify "footnotes_not_included_when_content_type_is_javascript" do
|
86
86
|
@controller.response.content_type = 'text/javascript'
|
87
87
|
footnotes_perform!
|
88
|
-
@controller.response.body.
|
88
|
+
expect(@controller.response.body).to eql HTML_DOCUMENT
|
89
89
|
end
|
90
90
|
|
91
91
|
specify "footnotes_included_when_content_type_is_html" do
|
92
92
|
@controller.response.content_type = 'text/html'
|
93
93
|
footnotes_perform!
|
94
|
-
@controller.response.body.
|
94
|
+
expect(@controller.response.body).not_to eql HTML_DOCUMENT
|
95
95
|
end
|
96
96
|
|
97
97
|
specify "footnotes_included_when_content_type_is_nil" do
|
98
98
|
footnotes_perform!
|
99
|
-
@controller.response.body.
|
99
|
+
expect(@controller.response.body).not_to eql HTML_DOCUMENT
|
100
100
|
end
|
101
101
|
|
102
102
|
specify "not_included_when_body_is_not_a_string" do
|
103
|
-
@controller.response.
|
104
|
-
Footnotes::Filter.new(@controller).send(:valid?).
|
105
|
-
@controller.response.body.
|
103
|
+
allow(@controller.response).to receive(:body).and_return(Time.now)# = Proc.new { Time.now }
|
104
|
+
expect(Footnotes::Filter.new(@controller).send(:valid?)).not_to be
|
105
|
+
expect(@controller.response.body).not_to match(/<!-- Footnotes/)
|
106
106
|
end
|
107
107
|
|
108
108
|
specify "notes_are_initialized" do
|
109
109
|
footnotes_perform!
|
110
110
|
test_note = @footnotes.instance_variable_get('@notes').first
|
111
|
-
test_note.class.name.
|
112
|
-
test_note.to_sym.
|
111
|
+
expect(test_note.class.name).to eql 'Footnotes::Notes::TestNote'
|
112
|
+
expect(test_note.to_sym).to eql :test
|
113
113
|
end
|
114
114
|
|
115
115
|
specify "notes_links" do
|
116
116
|
note = Footnotes::Notes::TestNote.new
|
117
|
-
note.
|
117
|
+
expect(note).to receive(:row).twice
|
118
118
|
@footnotes.instance_variable_set(:@notes, [note])
|
119
119
|
footnotes_perform!
|
120
120
|
end
|
121
121
|
|
122
122
|
specify "notes_fieldset" do
|
123
123
|
note = Footnotes::Notes::TestNote.new
|
124
|
-
note.
|
124
|
+
expect(note).to receive(:has_fieldset?).exactly(3).times
|
125
125
|
@footnotes.instance_variable_set(:@notes, [note])
|
126
126
|
footnotes_perform!
|
127
127
|
end
|
@@ -129,70 +129,70 @@ describe "Footnotes" do
|
|
129
129
|
specify "multiple_notes" do
|
130
130
|
Footnotes::Filter.multiple_notes = true
|
131
131
|
note = Footnotes::Notes::TestNote.new
|
132
|
-
note.
|
132
|
+
expect(note).to receive(:has_fieldset?).twice
|
133
133
|
@footnotes.instance_variable_set(:@notes, [note])
|
134
134
|
footnotes_perform!
|
135
135
|
end
|
136
136
|
|
137
137
|
specify "notes_are_reset" do
|
138
138
|
note = Footnotes::Notes::TestNote.new
|
139
|
-
note.class.
|
139
|
+
expect(note.class).to receive(:close!)
|
140
140
|
@footnotes.instance_variable_set(:@notes, [note])
|
141
141
|
@footnotes.send(:close!, @controller)
|
142
142
|
end
|
143
143
|
|
144
144
|
specify "links_helper" do
|
145
145
|
note = Footnotes::Notes::TestNote.new
|
146
|
-
@footnotes.send(:link_helper, note).
|
146
|
+
expect(@footnotes.send(:link_helper, note)).to eql '<a href="#" onclick="">Test</a>'
|
147
147
|
|
148
|
-
note.
|
149
|
-
@footnotes.send(:link_helper, note).
|
148
|
+
expect(note).to receive(:link).once.and_return(:link)
|
149
|
+
expect(@footnotes.send(:link_helper, note)).to eql '<a href="link" onclick="">Test</a>'
|
150
150
|
end
|
151
151
|
|
152
152
|
specify "links_helper_has_fieldset?" do
|
153
153
|
note = Footnotes::Notes::TestNote.new
|
154
|
-
note.
|
155
|
-
@footnotes.send(:link_helper, note).
|
154
|
+
expect(note).to receive(:has_fieldset?).once.and_return(true)
|
155
|
+
expect(@footnotes.send(:link_helper, note)).to eql '<a href="#" onclick="Footnotes.hideAllAndToggle(\'test_debug_info\');return false;">Test</a>'
|
156
156
|
end
|
157
157
|
|
158
158
|
specify "links_helper_onclick" do
|
159
159
|
note = Footnotes::Notes::TestNote.new
|
160
|
-
note.
|
161
|
-
@footnotes.send(:link_helper, note).
|
160
|
+
expect(note).to receive(:onclick).twice.and_return(:onclick)
|
161
|
+
expect(@footnotes.send(:link_helper, note)).to eql '<a href="#" onclick="onclick">Test</a>'
|
162
162
|
|
163
|
-
note.
|
164
|
-
@footnotes.send(:link_helper, note).
|
163
|
+
expect(note).to receive(:has_fieldset?).once.and_return(true)
|
164
|
+
expect(@footnotes.send(:link_helper, note)).to eql '<a href="#" onclick="onclick">Test</a>'
|
165
165
|
end
|
166
166
|
|
167
167
|
specify "insert_style" do
|
168
168
|
@controller.response.body = "<head></head><split><body></body>"
|
169
169
|
@footnotes = Footnotes::Filter.new(@controller)
|
170
170
|
footnotes_perform!
|
171
|
-
@controller.response.body.split('<split>').first.include?('<!-- Footnotes Style -->').
|
171
|
+
expect(@controller.response.body.split('<split>').first.include?('<!-- Footnotes Style -->')).to be
|
172
172
|
end
|
173
173
|
|
174
174
|
specify "insert_footnotes_inside_body" do
|
175
175
|
@controller.response.body = "<head></head><split><body></body>"
|
176
176
|
@footnotes = Footnotes::Filter.new(@controller)
|
177
177
|
footnotes_perform!
|
178
|
-
@controller.response.body.split('<split>').last.include?('<!-- End Footnotes -->').
|
178
|
+
expect(@controller.response.body.split('<split>').last.include?('<!-- End Footnotes -->')).to be
|
179
179
|
end
|
180
180
|
|
181
181
|
specify "insert_footnotes_inside_holder" do
|
182
182
|
@controller.response.body = "<head></head><split><div id='footnotes_holder'></div>"
|
183
183
|
@footnotes = Footnotes::Filter.new(@controller)
|
184
184
|
footnotes_perform!
|
185
|
-
@controller.response.body.split('<split>').last.include?('<!-- End Footnotes -->').
|
185
|
+
expect(@controller.response.body.split('<split>').last.include?('<!-- End Footnotes -->')).to be
|
186
186
|
end
|
187
187
|
|
188
188
|
specify "insert_text" do
|
189
189
|
@footnotes.send(:insert_text, :after, /<head>/, "Graffiti")
|
190
190
|
after = " <head>Graffiti"
|
191
|
-
@controller.response.body.split("\n")[2].
|
191
|
+
expect(@controller.response.body.split("\n")[2]).to eql after
|
192
192
|
|
193
193
|
@footnotes.send(:insert_text, :before, /<\/body>/, "Notes")
|
194
194
|
after = " Notes</body>"
|
195
|
-
@controller.response.body.split("\n")[12].
|
195
|
+
expect(@controller.response.body.split("\n")[12]).to eql after
|
196
196
|
end
|
197
197
|
|
198
198
|
describe 'Hooks' do
|
@@ -201,14 +201,14 @@ describe "Footnotes" do
|
|
201
201
|
specify do
|
202
202
|
Footnotes.setup {|config| config.before {|controller, filter| filter.notes -= [:note_y] }}
|
203
203
|
Footnotes::Filter.start!(@controller)
|
204
|
-
Footnotes::Filter.notes.
|
204
|
+
expect(Footnotes::Filter.notes).to eql [:note_x, :note_z]
|
205
205
|
end
|
206
206
|
end
|
207
207
|
context "after" do
|
208
208
|
specify do
|
209
209
|
Footnotes.setup {|config| config.after {|controller, filter| filter.notes -= [:note_y] }}
|
210
210
|
Footnotes::Filter.start!(@controller)
|
211
|
-
Footnotes::Filter.notes.
|
211
|
+
expect(Footnotes::Filter.notes).to eql [:note_x, :note_z]
|
212
212
|
end
|
213
213
|
end
|
214
214
|
end
|
@@ -224,9 +224,9 @@ describe "Footnotes" do
|
|
224
224
|
|
225
225
|
def template_expects(format)
|
226
226
|
if @controller.template.respond_to?(:template_format)
|
227
|
-
@controller.template.
|
227
|
+
allow(@controller.template).to receive(:template_format).and_return(format)
|
228
228
|
else
|
229
|
-
@controller.template.
|
229
|
+
allow(@controller.template).to receive(:format).and_return(format)
|
230
230
|
end
|
231
231
|
end
|
232
232
|
|
@@ -5,7 +5,7 @@ require "rails-footnotes/notes/assigns_note"
|
|
5
5
|
describe Footnotes::Notes::AssignsNote do
|
6
6
|
let(:note) do
|
7
7
|
@controller = double
|
8
|
-
@controller.
|
8
|
+
allow(@controller).to receive(:instance_variables).and_return([:@action_has_layout, :@status])
|
9
9
|
@controller.instance_variable_set(:@action_has_layout, true)
|
10
10
|
@controller.instance_variable_set(:@status, 200)
|
11
11
|
Footnotes::Notes::AssignsNote.new(@controller)
|
@@ -15,10 +15,14 @@ describe Footnotes::Notes::AssignsNote do
|
|
15
15
|
before(:each) {Footnotes::Notes::AssignsNote.ignored_assigns = []}
|
16
16
|
|
17
17
|
it {should be_valid}
|
18
|
-
its(:title) {should eql 'Assigns (2)'}
|
19
18
|
|
20
|
-
|
21
|
-
|
19
|
+
describe '#title' do
|
20
|
+
subject { super().title }
|
21
|
+
it {should eql 'Assigns (2)'}
|
22
|
+
end
|
23
|
+
|
24
|
+
specify {expect(note.send(:assigns)).to eql [:@action_has_layout, :@status]}
|
25
|
+
specify {expect(note.send(:to_table)).to eql [
|
22
26
|
["Name", "Value"],
|
23
27
|
["<strong>@action_has_layout</strong><br /><em>TrueClass</em>", "true"],
|
24
28
|
["<strong>@status</strong><br /><em>Fixnum</em>", "200"]
|
@@ -26,16 +30,16 @@ describe Footnotes::Notes::AssignsNote do
|
|
26
30
|
|
27
31
|
describe "Ignored Assigns" do
|
28
32
|
before(:each) {Footnotes::Notes::AssignsNote.ignored_assigns = [:@status]}
|
29
|
-
it {note.send(:assigns).
|
33
|
+
it {expect(note.send(:assigns)).not_to include :@status}
|
30
34
|
end
|
31
35
|
|
32
36
|
describe "Ignored Assigns by regexp" do
|
33
37
|
before(:each) {Footnotes::Notes::AssignsNote.ignored_assigns_pattern = /^@status$/}
|
34
|
-
it {note.send(:assigns).
|
38
|
+
it {expect(note.send(:assigns)).not_to include :@status}
|
35
39
|
end
|
36
40
|
|
37
41
|
it "should call #mount_table method with correct params" do
|
38
|
-
note.
|
42
|
+
expect(note).to receive(:mount_table).with(
|
39
43
|
[
|
40
44
|
["Name", "Value"],
|
41
45
|
["<strong>@action_has_layout</strong><br /><em>TrueClass</em>", "true"],
|
@@ -5,8 +5,8 @@ describe Footnotes::Notes::ControllerNote do
|
|
5
5
|
# Issue #60
|
6
6
|
it "should not be valid if conftroller file not exist" do
|
7
7
|
note = Footnotes::Notes::ControllerNote.new(double)
|
8
|
-
note.
|
8
|
+
allow(note).to receive(:controller_filename).and_return(nil)
|
9
9
|
|
10
|
-
note.
|
10
|
+
expect(note).not_to be_valid
|
11
11
|
end
|
12
12
|
end
|
@@ -8,7 +8,7 @@ describe Footnotes::Notes::JavascriptsNote do
|
|
8
8
|
it {should be_valid}
|
9
9
|
|
10
10
|
it "should return js links from html after #scan_text mehtod call" do
|
11
|
-
subject.send(:scan_text, HTML_WITH_JS).
|
11
|
+
expect(subject.send(:scan_text, HTML_WITH_JS)).to eql ['/javascripts/all.js', '/javascripts/jquery.js']
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -9,7 +9,7 @@ describe Footnotes::Notes::StylesheetsNote do
|
|
9
9
|
it {should be_valid}
|
10
10
|
|
11
11
|
it "should return css link from html text after #scan_text call" do
|
12
|
-
subject.send(:scan_text, HTML_WITH_CSS).
|
12
|
+
expect(subject.send(:scan_text, HTML_WITH_CSS)).to eql ['/stylesheets/compiled/print.css', '/stylesheets/compiled/print.css']
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "rails-footnotes/notes/view_note"
|
3
|
+
|
4
|
+
describe Footnotes::Notes::ViewNote do
|
5
|
+
|
6
|
+
it "should not be valid if view file not exist" do
|
7
|
+
note = Footnotes::Notes::ViewNote.new(double)
|
8
|
+
allow(note).to receive(:filename).and_return(nil)
|
9
|
+
|
10
|
+
expect(note).not_to be_valid
|
11
|
+
end
|
12
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -6,6 +6,7 @@ end
|
|
6
6
|
ENV["RAILS_ENV"] ||= 'test'
|
7
7
|
require "sprockets/railtie"
|
8
8
|
require "rails-footnotes"
|
9
|
+
require 'capybara/rspec'
|
9
10
|
|
10
11
|
module FooBar
|
11
12
|
class Application < Rails::Application
|
@@ -22,10 +23,19 @@ end
|
|
22
23
|
class ApplicationController < ActionController::Base
|
23
24
|
end
|
24
25
|
|
26
|
+
module Helpers
|
27
|
+
def page
|
28
|
+
Capybara::Node::Simple.new(response.body)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
25
32
|
RSpec.configure do |config|
|
26
33
|
|
27
34
|
Rails.application.initialize!
|
28
35
|
|
36
|
+
config.include Capybara::DSL
|
37
|
+
config.include Helpers
|
38
|
+
|
29
39
|
Rails.application.routes.draw do
|
30
40
|
get 'footnotes/foo'
|
31
41
|
get 'footnotes/foo_holder'
|
@@ -34,9 +44,7 @@ RSpec.configure do |config|
|
|
34
44
|
get 'partials/index'
|
35
45
|
get 'files/index'
|
36
46
|
end
|
37
|
-
|
38
47
|
end
|
39
48
|
|
40
49
|
require 'rspec/rails'
|
41
|
-
require 'capybara/rspec'
|
42
50
|
require 'capybara/rails'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-footnotes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman V. Babenko
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-
|
15
|
+
date: 2015-05-09 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rails
|
@@ -34,14 +34,14 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - "~>"
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 2.
|
37
|
+
version: 3.2.1
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
42
|
- - "~>"
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 2.
|
44
|
+
version: 3.2.1
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: test-unit
|
47
47
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,6 +137,7 @@ files:
|
|
137
137
|
- spec/notes/files_note_spec.rb
|
138
138
|
- spec/notes/javascripts_note_spec.rb
|
139
139
|
- spec/notes/stylesheets_note_spec.rb
|
140
|
+
- spec/notes/view_note_spec.rb
|
140
141
|
- spec/spec_helper.rb
|
141
142
|
homepage: http://github.com/josevalim/rails-footnotes
|
142
143
|
licenses: []
|
@@ -157,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
158
|
version: '0'
|
158
159
|
requirements: []
|
159
160
|
rubyforge_project: rails-footnotes
|
160
|
-
rubygems_version: 2.4.
|
161
|
+
rubygems_version: 2.4.6
|
161
162
|
signing_key:
|
162
163
|
specification_version: 4
|
163
164
|
summary: Every Rails page has footnotes that gives information about your application
|
@@ -182,4 +183,5 @@ test_files:
|
|
182
183
|
- spec/notes/files_note_spec.rb
|
183
184
|
- spec/notes/javascripts_note_spec.rb
|
184
185
|
- spec/notes/stylesheets_note_spec.rb
|
186
|
+
- spec/notes/view_note_spec.rb
|
185
187
|
- spec/spec_helper.rb
|