deface 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +3 -2
- data/README.markdown +3 -11
- data/deface.gemspec +4 -4
- data/lib/deface/applicator.rb +1 -1
- data/lib/deface/dsl/loader.rb +42 -34
- data/lib/deface/railtie.rb +2 -2
- data/lib/deface/slim_converter.rb +15 -0
- data/lib/deface/sources/copy.rb +1 -1
- data/lib/deface/sources/slim.rb +2 -2
- data/lib/deface/template_helper.rb +1 -1
- data/spec/deface/action_view_template_spec.rb +12 -12
- data/spec/deface/actions/add_to_attributes_spec.rb +8 -8
- data/spec/deface/actions/insert_after_spec.rb +1 -1
- data/spec/deface/actions/insert_before_spec.rb +1 -1
- data/spec/deface/actions/insert_bottom_spec.rb +2 -2
- data/spec/deface/actions/insert_top_spec.rb +2 -2
- data/spec/deface/actions/remove_from_attributes_spec.rb +9 -9
- data/spec/deface/actions/remove_spec.rb +2 -2
- data/spec/deface/actions/replace_contents_spec.rb +2 -2
- data/spec/deface/actions/replace_spec.rb +10 -10
- data/spec/deface/actions/set_attributes_spec.rb +11 -11
- data/spec/deface/actions/surround_contents_spec.rb +5 -5
- data/spec/deface/actions/surround_spec.rb +5 -5
- data/spec/deface/applicator_spec.rb +6 -6
- data/spec/deface/dsl/context_spec.rb +7 -7
- data/spec/deface/dsl/loader_spec.rb +74 -77
- data/spec/deface/environment_spec.rb +38 -38
- data/spec/deface/haml_converter_spec.rb +24 -24
- data/spec/deface/override_spec.rb +90 -90
- data/spec/deface/parser_spec.rb +54 -54
- data/spec/deface/precompiler_spec.rb +7 -7
- data/spec/deface/search_spec.rb +7 -7
- data/spec/deface/slim_converter_spec.rb +32 -0
- data/spec/deface/template_helper_spec.rb +21 -22
- data/spec/deface/utils/failure_finder_spec.rb +11 -11
- data/spec/spec_helper.rb +25 -17
- metadata +33 -69
@@ -24,70 +24,70 @@ module Deface
|
|
24
24
|
describe ".overrides" do
|
25
25
|
|
26
26
|
it "should return all overrides" do
|
27
|
-
Rails.application.config.deface.overrides.all.size.
|
28
|
-
Rails.application.config.deface.overrides.all.
|
27
|
+
expect(Rails.application.config.deface.overrides.all.size).to eq(2)
|
28
|
+
expect(Rails.application.config.deface.overrides.all).to eq(Deface::Override.all)
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should find overrides" do
|
32
|
-
Rails.application.config.deface.overrides.find(:virtual_path => "posts/new").size.
|
32
|
+
expect(Rails.application.config.deface.overrides.find(:virtual_path => "posts/new").size).to eq(1)
|
33
33
|
end
|
34
34
|
|
35
35
|
describe "load_all" do
|
36
36
|
|
37
37
|
before do
|
38
|
-
Rails.application.
|
39
|
-
Rails.application.
|
40
|
-
Rails.application.
|
38
|
+
allow(Rails.application).to receive_messages :root => Pathname.new(File.join(File.dirname(__FILE__), '..', "assets"))
|
39
|
+
allow(Rails.application).to receive_messages :paths => {}
|
40
|
+
allow(Rails.application).to receive_message_chain :railties, railties_collection_accessor => []
|
41
41
|
|
42
|
-
Deface::DSL::Loader.
|
42
|
+
expect(Deface::DSL::Loader).to receive(:register)
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should enumerate_and_load nil when app has no app/overrides path set" do
|
46
|
-
Rails.application.config.deface.overrides.
|
46
|
+
expect(Rails.application.config.deface.overrides).to receive(:enumerate_and_load).with(nil, Rails.application.root)
|
47
47
|
Rails.application.config.deface.overrides.load_all(Rails.application)
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should enumerate_and_load path when app has app/overrides path set" do
|
51
|
-
Rails.application.
|
52
|
-
Rails.application.config.deface.overrides.
|
51
|
+
allow(Rails.application).to receive_messages :paths => {"app/overrides" => ["app/some_path"] }
|
52
|
+
expect(Rails.application.config.deface.overrides).to receive(:enumerate_and_load).with(["app/some_path"] , Rails.application.root)
|
53
53
|
Rails.application.config.deface.overrides.load_all(Rails.application)
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should enumerate_and_load nil when railtie has no app/overrides path set" do
|
57
|
-
Rails.application.
|
57
|
+
allow(Rails.application).to receive_message_chain :railties, railties_collection_accessor => [double('railtie', :root => "/some/path")]
|
58
58
|
|
59
|
-
Rails.application.config.deface.overrides.
|
60
|
-
Rails.application.config.deface.overrides.
|
59
|
+
expect(Rails.application.config.deface.overrides).to receive(:enumerate_and_load).with(nil, Rails.application.root)
|
60
|
+
expect(Rails.application.config.deface.overrides).to receive(:enumerate_and_load).with(nil, "/some/path")
|
61
61
|
Rails.application.config.deface.overrides.load_all(Rails.application)
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should enumerate_and_load path when railtie has app/overrides path set" do
|
65
|
-
Rails.application.
|
65
|
+
allow(Rails.application).to receive_message_chain :railties, railties_collection_accessor => [ double('railtie', :root => "/some/path", :paths => {"app/overrides" => ["app/some_path"] } )]
|
66
66
|
|
67
|
-
Rails.application.config.deface.overrides.
|
68
|
-
Rails.application.config.deface.overrides.
|
67
|
+
expect(Rails.application.config.deface.overrides).to receive(:enumerate_and_load).with(nil, Rails.application.root)
|
68
|
+
expect(Rails.application.config.deface.overrides).to receive(:enumerate_and_load).with(["app/some_path"] , "/some/path")
|
69
69
|
Rails.application.config.deface.overrides.load_all(Rails.application)
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should enumerate_and_load railties first, followed by the application iteslf" do
|
73
|
-
Rails.application.
|
73
|
+
allow(Rails.application).to receive_message_chain :railties, railties_collection_accessor => [ double('railtie', :root => "/some/path", :paths => {"app/overrides" => ["app/some_path"] } )]
|
74
74
|
|
75
|
-
Rails.application.config.deface.overrides.
|
76
|
-
Rails.application.config.deface.overrides.
|
75
|
+
expect(Rails.application.config.deface.overrides).to receive(:enumerate_and_load).with(["app/some_path"] , "/some/path").ordered
|
76
|
+
expect(Rails.application.config.deface.overrides).to receive(:enumerate_and_load).with(nil, Rails.application.root).ordered
|
77
77
|
Rails.application.config.deface.overrides.load_all(Rails.application)
|
78
78
|
end
|
79
79
|
|
80
80
|
it "should ignore railtie with no root" do
|
81
81
|
railtie = double('railtie')
|
82
|
-
Rails.application.
|
82
|
+
allow(Rails.application).to receive_message_chain :railties, railties_collection_accessor => [railtie]
|
83
83
|
|
84
|
-
railtie.
|
85
|
-
railtie.
|
84
|
+
expect(railtie).to receive(:respond_to?).with(:root)
|
85
|
+
expect(railtie).not_to receive(:respond_to?).with(:paths)
|
86
86
|
Rails.application.config.deface.overrides.load_all(Rails.application)
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should clear any previously loaded overrides" do
|
90
|
-
Rails.application.config.deface.overrides.all.
|
90
|
+
expect(Rails.application.config.deface.overrides.all).to receive(:clear)
|
91
91
|
Rails.application.config.deface.overrides.load_all(Rails.application)
|
92
92
|
end
|
93
93
|
|
@@ -97,15 +97,15 @@ module Deface
|
|
97
97
|
describe 'load_overrides' do
|
98
98
|
let(:assets_path) { Pathname.new(File.join(File.dirname(__FILE__), '..', "assets")) }
|
99
99
|
let(:engine) { double('railtie', :root => assets_path, :class => "DummyEngine", :paths => {"app/overrides" => ["dummy_engine"]}) }
|
100
|
-
before { Rails.application.
|
100
|
+
before { allow(Rails.application).to receive_messages(:class => 'RailsAppl') }
|
101
101
|
|
102
102
|
it "should keep a reference to which railtie/app defined the override" do
|
103
|
-
Rails.application.
|
104
|
-
Rails.application.
|
103
|
+
allow(Rails.application).to receive_messages :root => assets_path, :paths => {"app/overrides" => ["dummy_app"] }
|
104
|
+
allow(Rails.application).to receive_message_chain :railties, railties_collection_accessor => [ engine ]
|
105
105
|
|
106
106
|
Rails.application.config.deface.overrides.load_all(Rails.application)
|
107
107
|
|
108
|
-
Deface::Override.all.values.map(&:values).flatten.map(&:railtie_class).
|
108
|
+
expect(Deface::Override.all.values.map(&:values).flatten.map(&:railtie_class)).to include('RailsAppl', 'DummyEngine')
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
@@ -113,23 +113,23 @@ module Deface
|
|
113
113
|
let(:root) { Pathname.new("/some/path") }
|
114
114
|
|
115
115
|
it "should be enumerate default path when none supplied" do
|
116
|
-
Dir.
|
117
|
-
Dir.
|
116
|
+
expect(Dir).to receive(:glob).with(root.join "app/overrides", "**", "*.rb")
|
117
|
+
expect(Dir).to receive(:glob).with(root.join "app/overrides", "**", "*.deface")
|
118
118
|
Rails.application.config.deface.overrides.send(:enumerate_and_load, nil, root)
|
119
119
|
end
|
120
120
|
|
121
121
|
it "should enumerate supplied paths" do
|
122
|
-
Dir.
|
123
|
-
Dir.
|
124
|
-
Dir.
|
125
|
-
Dir.
|
122
|
+
expect(Dir).to receive(:glob).with(root.join "app/junk", "**", "*.rb" )
|
123
|
+
expect(Dir).to receive(:glob).with(root.join "app/junk", "**", "*.deface" )
|
124
|
+
expect(Dir).to receive(:glob).with(root.join "app/gold", "**", "*.rb" )
|
125
|
+
expect(Dir).to receive(:glob).with(root.join "app/gold", "**", "*.deface" )
|
126
126
|
Rails.application.config.deface.overrides.send(:enumerate_and_load, ["app/junk", "app/gold"], root)
|
127
127
|
end
|
128
128
|
|
129
129
|
it "should add paths to watchable_dir when running Rails 3.2" do
|
130
|
-
if Rails.version[0..2]
|
130
|
+
if Rails.version[0..2] >= '3.2'
|
131
131
|
Rails.application.config.deface.overrides.send(:enumerate_and_load, ["app/gold"], root)
|
132
|
-
Rails.application.config.watchable_dirs.
|
132
|
+
expect(Rails.application.config.watchable_dirs).to eq({"/some/path/app/gold" => [:rb, :deface] })
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
@@ -138,15 +138,15 @@ module Deface
|
|
138
138
|
|
139
139
|
describe "#_early" do
|
140
140
|
it "should contain one override" do
|
141
|
-
Deface::Override._early.size.
|
141
|
+
expect(Deface::Override._early.size).to eq(1)
|
142
142
|
end
|
143
143
|
|
144
144
|
it "should initialize override and be emtpy after early_check" do
|
145
145
|
before_count = Rails.application.config.deface.overrides.all.size
|
146
146
|
Rails.application.config.deface.overrides.early_check
|
147
147
|
|
148
|
-
Deface::Override._early.size.
|
149
|
-
Rails.application.config.deface.overrides.all.size.
|
148
|
+
expect(Deface::Override._early.size).to eq(0)
|
149
|
+
expect(Rails.application.config.deface.overrides.all.size).to eq(before_count + 1)
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
@@ -11,77 +11,77 @@ module Deface
|
|
11
11
|
|
12
12
|
describe "convert haml to erb" do
|
13
13
|
it "should hanlde simple tags" do
|
14
|
-
haml_to_erb("%%strong.code#message Hello, World!").
|
14
|
+
expect(haml_to_erb("%%strong.code#message Hello, World!")).to eq("<strong class='code' id='message'>Hello, World!</strong>")
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should handle complex tags" do
|
18
|
-
haml_to_erb(%q{#content
|
18
|
+
expect(haml_to_erb(%q{#content
|
19
19
|
.left.column
|
20
20
|
%h2 Welcome to our site!
|
21
21
|
%p= print_information
|
22
22
|
.right.column
|
23
|
-
= render :partial => "sidebar"}).
|
23
|
+
= render :partial => "sidebar"})).to eq("<div id='content'> <div class='left column'> <h2>Welcome to our site!</h2> <p> <%= print_information %></p> </div> <div class='right column'> <%= render :partial => \"sidebar\" %> </div></div>")
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should handle simple haml attributes" do
|
27
|
-
haml_to_erb("%meta{:charset => 'utf-8'}").
|
28
|
-
haml_to_erb("%p(alt='hello world')Hello World!").
|
27
|
+
expect(haml_to_erb("%meta{:charset => 'utf-8'}")).to eq("<meta charset='utf-8' />")
|
28
|
+
expect(haml_to_erb("%p(alt='hello world')Hello World!")).to eq("<p alt='hello world'>Hello World!</p>")
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should handle haml attributes with commas" do
|
32
|
-
haml_to_erb("%meta{'http-equiv' => 'X-UA-Compatible', :content => 'IE=edge,chrome=1'}").
|
33
|
-
haml_to_erb("%meta(http-equiv='X-UA-Compatible' content='IE=edge,chrome=1')").
|
34
|
-
haml_to_erb('%meta{:name => "author", :content => "Example, Inc."}').
|
35
|
-
haml_to_erb('%meta(name="author" content="Example, Inc.")').
|
32
|
+
expect(haml_to_erb("%meta{'http-equiv' => 'X-UA-Compatible', :content => 'IE=edge,chrome=1'}")).to eq("<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible' />")
|
33
|
+
expect(haml_to_erb("%meta(http-equiv='X-UA-Compatible' content='IE=edge,chrome=1')")).to eq("<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible' />")
|
34
|
+
expect(haml_to_erb('%meta{:name => "author", :content => "Example, Inc."}')).to eq("<meta content='Example, Inc.' name='author' />")
|
35
|
+
expect(haml_to_erb('%meta(name="author" content="Example, Inc.")')).to eq("<meta content='Example, Inc.' name='author' />")
|
36
36
|
|
37
37
|
if RUBY_VERSION > "1.9"
|
38
|
-
haml_to_erb('%meta{name: "author", content: "Example, Inc."}').
|
38
|
+
expect(haml_to_erb('%meta{name: "author", content: "Example, Inc."}')).to eq("<meta content='Example, Inc.' name='author' />")
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should handle haml attributes with evaluated values" do
|
43
|
-
haml_to_erb("%p{ :alt => hello_world}Hello World!").
|
43
|
+
expect(haml_to_erb("%p{ :alt => hello_world}Hello World!")).to eq("<p data-erb-alt='<%= hello_world %>'>Hello World!</p>")
|
44
44
|
|
45
45
|
if RUBY_VERSION > "1.9"
|
46
|
-
haml_to_erb("%p{ alt: @hello_world}Hello World!").
|
46
|
+
expect(haml_to_erb("%p{ alt: @hello_world}Hello World!")).to eq("<p data-erb-alt='<%= @hello_world %>'>Hello World!</p>")
|
47
47
|
end
|
48
48
|
|
49
|
-
haml_to_erb("%p(alt=hello_world)Hello World!").
|
50
|
-
haml_to_erb("%p(alt=@hello_world)Hello World!").
|
49
|
+
expect(haml_to_erb("%p(alt=hello_world)Hello World!")).to eq("<p data-erb-alt='<%= hello_world %>'>Hello World!</p>")
|
50
|
+
expect(haml_to_erb("%p(alt=@hello_world)Hello World!")).to eq("<p data-erb-alt='<%= @hello_world %>'>Hello World!</p>")
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should handle erb loud" do
|
54
|
-
haml_to_erb("%h3.title= entry.title").
|
54
|
+
expect(haml_to_erb("%h3.title= entry.title")).to eq("<h3 class='title'><%= entry.title %></h3>")
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should handle single erb silent" do
|
58
|
-
haml_to_erb("- some_method").
|
58
|
+
expect(haml_to_erb("- some_method")).to eq("<% some_method %>")
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should handle implicitly closed erb loud" do
|
62
|
-
haml_to_erb("= if @this == 'this'
|
62
|
+
expect(haml_to_erb("= if @this == 'this'
|
63
63
|
%p hello
|
64
|
-
").
|
64
|
+
")).to eq("<%= if @this == 'this' %><p>hello</p><% end %>")
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should handle implicitly closed erb silent" do
|
68
|
-
haml_to_erb("- if foo?
|
68
|
+
expect(haml_to_erb("- if foo?
|
69
69
|
%p hello
|
70
|
-
").
|
70
|
+
")).to eq("<% if foo? %><p>hello</p><% end %>")
|
71
71
|
end
|
72
72
|
|
73
73
|
it "should handle blocks passed to erb loud" do
|
74
|
-
haml_to_erb("= form_for Post.new do |f|
|
74
|
+
expect(haml_to_erb("= form_for Post.new do |f|
|
75
75
|
%p
|
76
|
-
= f.text_field :name").
|
76
|
+
= f.text_field :name")).to eq("<%= form_for Post.new do |f| %><p> <%= f.text_field :name %></p><% end %>")
|
77
77
|
|
78
78
|
end
|
79
79
|
|
80
80
|
|
81
81
|
it "should handle blocks passed to erb silent" do
|
82
|
-
haml_to_erb("- @posts.each do |post|
|
82
|
+
expect(haml_to_erb("- @posts.each do |post|
|
83
83
|
%p
|
84
|
-
= post.name").
|
84
|
+
= post.name")).to eq("<% @posts.each do |post| %><p> <%= post.name %></p><% end %>")
|
85
85
|
|
86
86
|
end
|
87
87
|
end
|
@@ -12,35 +12,35 @@ module Deface
|
|
12
12
|
Deface::Override.actions.each do |action|
|
13
13
|
Rails.application.config.deface.overrides.all.clear
|
14
14
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", action => "h1", :text => "<h1>Argh!</h1>")
|
15
|
-
@override.action.
|
15
|
+
expect(@override.action).to eq(action)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should have a sources method" do
|
20
|
-
Deface::DEFAULT_SOURCES.map(&:to_sym).
|
20
|
+
expect(Deface::DEFAULT_SOURCES.map(&:to_sym)).to include(:text)
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should return correct selector" do
|
24
|
-
@override.selector.
|
24
|
+
expect(@override.selector).to eq("h1")
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should set default :updated_at" do
|
28
|
-
@override.args[:updated_at].
|
28
|
+
expect(@override.args[:updated_at]).not_to be_nil
|
29
29
|
end
|
30
30
|
|
31
31
|
describe "#original_source" do
|
32
32
|
it "should return nil with not specified" do
|
33
|
-
@override.original_source.
|
33
|
+
expect(@override.original_source).to be_nil
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should return parsed nokogiri document when present" do
|
37
37
|
@original = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "<h1>Argh!</h1>", :original => "<p><%= something %></p>")
|
38
|
-
@original.original_source.
|
38
|
+
expect(@original.original_source).to be_an_instance_of Nokogiri::HTML::DocumentFragment
|
39
39
|
|
40
40
|
if RUBY_PLATFORM == 'java'
|
41
|
-
@original.original_source.to_s.
|
41
|
+
expect(@original.original_source.to_s).to eq("<p><erb loud=\"\"> something </erb></p>")
|
42
42
|
else
|
43
|
-
@original.original_source.to_s.
|
43
|
+
expect(@original.original_source.to_s).to eq("<p><erb loud> something </erb></p>")
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -51,8 +51,8 @@ module Deface
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should warn but not validate" do
|
54
|
-
Rails.logger.
|
55
|
-
@override.validate_original("<p>this gets ignored</p>").
|
54
|
+
expect(Rails.logger).to receive(:info).once
|
55
|
+
expect(@override.validate_original("<p>this gets ignored</p>")).to be_nil
|
56
56
|
end
|
57
57
|
|
58
58
|
end
|
@@ -109,9 +109,9 @@ module Deface
|
|
109
109
|
end
|
110
110
|
|
111
111
|
it "should return un-convert text as source" do
|
112
|
-
@override.source.
|
112
|
+
expect(@override.source).to eq("<h1 id=\"<%= dom_id @pirate %>\">Argh!</h1>")
|
113
113
|
|
114
|
-
@override.source_argument.
|
114
|
+
expect(@override.source_argument).to eq(:text)
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
@@ -122,9 +122,9 @@ module Deface
|
|
122
122
|
end
|
123
123
|
|
124
124
|
it "should return un-convert text as source" do
|
125
|
-
@override.source.
|
125
|
+
expect(@override.source).to eq("<h1 id=\"<%= dom_id @pirate %>\">Argh!</h1>")
|
126
126
|
|
127
|
-
@override.source_argument.
|
127
|
+
expect(@override.source_argument).to eq(:erb)
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
@@ -136,9 +136,9 @@ module Deface
|
|
136
136
|
end
|
137
137
|
|
138
138
|
it "should return erb converted from haml as source" do
|
139
|
-
@override.source.
|
139
|
+
expect(@override.source).to eq("<strong class='erb' id='message'><%= 'Hello, World!' %>\n</strong>\n")
|
140
140
|
|
141
|
-
@override.source_argument.
|
141
|
+
expect(@override.source_argument).to eq(:haml)
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
@@ -150,9 +150,9 @@ module Deface
|
|
150
150
|
end
|
151
151
|
|
152
152
|
it "should return erb converted from slim as source" do
|
153
|
-
@override.source.
|
153
|
+
expect(@override.source).to eq("<strong class=\"erb\" id=\"message\"><%= ::Temple::Utils.escape_html_safe(('Hello, World!')) %>\n</strong>")
|
154
154
|
|
155
|
-
@override.source_argument.
|
155
|
+
expect(@override.source_argument).to eq(:slim)
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
@@ -161,15 +161,15 @@ module Deface
|
|
161
161
|
|
162
162
|
before(:each) do
|
163
163
|
#stub view paths to be local spec/assets directory
|
164
|
-
ActionController::Base.
|
164
|
+
allow(ActionController::Base).to receive(:view_paths).and_return([File.join(File.dirname(__FILE__), '..', "assets")])
|
165
165
|
|
166
166
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :partial => "shared/post")
|
167
167
|
end
|
168
168
|
|
169
169
|
it "should return un-convert partial contents as source" do
|
170
|
-
@override.source.
|
170
|
+
expect(@override.source).to eq("<p>I'm from shared/post partial</p>\n<%= \"And I've got ERB\" %>\n")
|
171
171
|
|
172
|
-
@override.source_argument.
|
172
|
+
expect(@override.source_argument).to eq(:partial)
|
173
173
|
end
|
174
174
|
|
175
175
|
end
|
@@ -178,15 +178,15 @@ module Deface
|
|
178
178
|
|
179
179
|
before(:each) do
|
180
180
|
#stub view paths to be local spec/assets directory
|
181
|
-
ActionController::Base.
|
181
|
+
allow(ActionController::Base).to receive(:view_paths).and_return([File.join(File.dirname(__FILE__), '..', "assets")])
|
182
182
|
|
183
183
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :template => "shared/person")
|
184
184
|
end
|
185
185
|
|
186
186
|
it "should return un-convert template contents as source" do
|
187
|
-
@override.source.
|
187
|
+
expect(@override.source).to eq("<p>I'm from shared/person template</p>\n<%= \"I've got ERB too\" %>\n")
|
188
188
|
|
189
|
-
@override.source_argument.
|
189
|
+
expect(@override.source_argument).to eq(:template)
|
190
190
|
end
|
191
191
|
|
192
192
|
end
|
@@ -197,29 +197,29 @@ module Deface
|
|
197
197
|
|
198
198
|
before(:each) do
|
199
199
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :insert_after => "h1", :copy => "h1")
|
200
|
-
@override.
|
200
|
+
allow(@override).to receive(:parsed_document).and_return(parsed)
|
201
201
|
end
|
202
202
|
|
203
203
|
it "should not change original parsed source" do
|
204
204
|
@override.source
|
205
205
|
|
206
206
|
if RUBY_PLATFORM == 'java'
|
207
|
-
parsed.to_s.gsub(/\n/,'').
|
207
|
+
expect(parsed.to_s.gsub(/\n/,'')).to eq("<div><h1>Manage Posts</h1><erb loud=\"\"> some_method </erb></div>")
|
208
208
|
else
|
209
|
-
parsed.to_s.gsub(/\n/,'').
|
209
|
+
expect(parsed.to_s.gsub(/\n/,'')).to eq("<div><h1>Manage Posts</h1><erb loud> some_method </erb></div>")
|
210
210
|
end
|
211
211
|
|
212
|
-
@override.source_argument.
|
212
|
+
expect(@override.source_argument).to eq(:copy)
|
213
213
|
end
|
214
214
|
|
215
215
|
it "should return copy of content from source document" do
|
216
|
-
@override.source.to_s.strip.
|
216
|
+
expect(@override.source.to_s.strip).to eq("<h1>Manage Posts</h1>")
|
217
217
|
end
|
218
218
|
|
219
219
|
it "should return unescaped content for source document" do
|
220
220
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :insert_after => "h1", :copy => "erb[loud]:contains('some_method')")
|
221
|
-
@override.
|
222
|
-
@override.source.
|
221
|
+
allow(@override).to receive(:parsed_document).and_return(parsed)
|
222
|
+
expect(@override.source).to eq("<%= some_method %>")
|
223
223
|
end
|
224
224
|
|
225
225
|
end
|
@@ -232,23 +232,23 @@ module Deface
|
|
232
232
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :insert_after => "h1",
|
233
233
|
:copy => {:start => "erb:contains('if true')", :end => "erb:contains('end')"})
|
234
234
|
|
235
|
-
@override.
|
235
|
+
allow(@override).to receive(:parsed_document).and_return(parsed)
|
236
236
|
end
|
237
237
|
|
238
238
|
it "should not change original parsed source" do
|
239
239
|
@override.source
|
240
240
|
|
241
241
|
if RUBY_PLATFORM == 'java'
|
242
|
-
parsed.to_s.gsub(/\n/,'').
|
242
|
+
expect(parsed.to_s.gsub(/\n/,'')).to eq("<h1>World</h1><erb silent=\"\"> if true </erb><p>True that!</p><erb silent=\"\"> end </erb><p>Hello</p>")
|
243
243
|
else
|
244
|
-
parsed.to_s.gsub(/\n/,'').
|
244
|
+
expect(parsed.to_s.gsub(/\n/,'')).to eq("<h1>World</h1><erb silent> if true </erb><p>True that!</p><erb silent> end </erb><p>Hello</p>")
|
245
245
|
end
|
246
246
|
|
247
|
-
@override.source_argument.
|
247
|
+
expect(@override.source_argument).to eq(:copy)
|
248
248
|
end
|
249
249
|
|
250
250
|
it "should return copy of content from source document" do
|
251
|
-
@override.source.
|
251
|
+
expect(@override.source).to eq("<% if true %><p>True that!</p><% end %>")
|
252
252
|
end
|
253
253
|
end
|
254
254
|
|
@@ -256,28 +256,28 @@ module Deface
|
|
256
256
|
let(:parsed) { Deface::Parser.convert("<div><h1>Manage Posts</h1><%= some_method %></div>") }
|
257
257
|
before(:each) do
|
258
258
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :insert_after => "h1", :cut => "h1")
|
259
|
-
@override.
|
259
|
+
allow(@override).to receive(:parsed_document).and_return(parsed)
|
260
260
|
end
|
261
261
|
|
262
262
|
it "should remove cut element from original parsed source" do
|
263
263
|
@override.source
|
264
264
|
if RUBY_PLATFORM == 'java'
|
265
|
-
parsed.to_s.gsub(/\n/,'').
|
265
|
+
expect(parsed.to_s.gsub(/\n/,'')).to eq("<div><erb loud=\"\"> some_method </erb></div>")
|
266
266
|
else
|
267
|
-
parsed.to_s.gsub(/\n/,'').
|
267
|
+
expect(parsed.to_s.gsub(/\n/,'')).to eq("<div><erb loud> some_method </erb></div>")
|
268
268
|
end
|
269
269
|
|
270
|
-
@override.source_argument.
|
270
|
+
expect(@override.source_argument).to eq(:cut)
|
271
271
|
end
|
272
272
|
|
273
273
|
it "should remove and return content from source document" do
|
274
|
-
@override.source.
|
274
|
+
expect(@override.source).to eq("<h1>Manage Posts</h1>")
|
275
275
|
end
|
276
276
|
|
277
277
|
it "should return unescaped content for source document" do
|
278
278
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :insert_after => "h1", :cut => "erb[loud]:contains('some_method')")
|
279
|
-
@override.
|
280
|
-
@override.source.
|
279
|
+
allow(@override).to receive(:parsed_document).and_return(parsed)
|
280
|
+
expect(@override.source).to eq("<%= some_method %>")
|
281
281
|
end
|
282
282
|
|
283
283
|
end
|
@@ -291,29 +291,29 @@ module Deface
|
|
291
291
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :insert_after => "h1",
|
292
292
|
:cut => {:start => "erb:contains('if true')", :end => "erb:contains('end')"})
|
293
293
|
|
294
|
-
@override.
|
294
|
+
allow(@override).to receive(:parsed_document).and_return(parsed)
|
295
295
|
end
|
296
296
|
|
297
297
|
it "should remove cut element from original parsed source" do
|
298
298
|
@override.source
|
299
299
|
if RUBY_PLATFORM == 'java'
|
300
|
-
parsed.to_s.gsub(/\n/,'').
|
300
|
+
expect(parsed.to_s.gsub(/\n/,'')).to eq("<h1>World</h1><erb loud=\"\"> hello </erb>")
|
301
301
|
else
|
302
|
-
parsed.to_s.gsub(/\n/,'').
|
302
|
+
expect(parsed.to_s.gsub(/\n/,'')).to eq("<h1>World</h1><erb loud> hello </erb>")
|
303
303
|
end
|
304
304
|
|
305
|
-
@override.source_argument.
|
305
|
+
expect(@override.source_argument).to eq(:cut)
|
306
306
|
end
|
307
307
|
|
308
308
|
it "should return copy of content from source document" do
|
309
|
-
@override.source.
|
309
|
+
expect(@override.source).to eq("<% if true %><p>True that!</p><% end %>")
|
310
310
|
end
|
311
311
|
end
|
312
312
|
|
313
313
|
describe "with block" do
|
314
314
|
before(:each) do
|
315
315
|
#stub view paths to be local spec/assets directory
|
316
|
-
ActionController::Base.
|
316
|
+
allow(ActionController::Base).to receive(:view_paths).and_return([File.join(File.dirname(__FILE__), '..', "assets")])
|
317
317
|
|
318
318
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1") do
|
319
319
|
"This is replacement text for the h1"
|
@@ -321,7 +321,7 @@ module Deface
|
|
321
321
|
end
|
322
322
|
|
323
323
|
it "should set source to block content" do
|
324
|
-
@override.source.
|
324
|
+
expect(@override.source).to eq("This is replacement text for the h1")
|
325
325
|
end
|
326
326
|
end
|
327
327
|
|
@@ -332,7 +332,7 @@ module Deface
|
|
332
332
|
end
|
333
333
|
|
334
334
|
it "should namespace the override's name" do
|
335
|
-
@override.name.
|
335
|
+
expect(@override.name).to eq('spree_engine_sample_name')
|
336
336
|
end
|
337
337
|
end
|
338
338
|
|
@@ -344,7 +344,7 @@ module Deface
|
|
344
344
|
end
|
345
345
|
|
346
346
|
it "should namespace the override's name" do
|
347
|
-
@override.name.
|
347
|
+
expect(@override.name).to eq('spree_engine_sample_name')
|
348
348
|
end
|
349
349
|
end
|
350
350
|
|
@@ -354,18 +354,18 @@ module Deface
|
|
354
354
|
end
|
355
355
|
|
356
356
|
it "should return escaped source" do
|
357
|
-
@override.source_element.
|
357
|
+
expect(@override.source_element).to be_an_instance_of Nokogiri::HTML::DocumentFragment
|
358
358
|
|
359
359
|
if RUBY_PLATFORM == 'java'
|
360
360
|
source = "<erb loud=\"\"> method :opt => 'x' & 'y' </erb>"
|
361
|
-
@override.source_element.to_s.
|
361
|
+
expect(@override.source_element.to_s).to eq(source)
|
362
362
|
#do it twice to ensure it doesn't change as it's destructive
|
363
|
-
@override.source_element.to_s.
|
363
|
+
expect(@override.source_element.to_s).to eq(source)
|
364
364
|
else
|
365
365
|
source = "<erb loud> method :opt => 'x' & 'y' </erb>"
|
366
|
-
@override.source_element.to_s.
|
366
|
+
expect(@override.source_element.to_s).to eq(source)
|
367
367
|
#do it twice to ensure it doesn't change as it's destructive
|
368
|
-
@override.source_element.to_s.
|
368
|
+
expect(@override.source_element.to_s).to eq(source)
|
369
369
|
end
|
370
370
|
end
|
371
371
|
end
|
@@ -380,8 +380,8 @@ module Deface
|
|
380
380
|
end
|
381
381
|
|
382
382
|
it "should return new source" do
|
383
|
-
@replacement.source.
|
384
|
-
@replacement.source.
|
383
|
+
expect(@replacement.source).not_to eq("<h1>Argh!</h1>")
|
384
|
+
expect(@replacement.source).to eq("<h1>Arrrr!</h1>")
|
385
385
|
end
|
386
386
|
|
387
387
|
end
|
@@ -396,7 +396,7 @@ module Deface
|
|
396
396
|
end
|
397
397
|
|
398
398
|
it "should return new action" do
|
399
|
-
@replacement.action.
|
399
|
+
expect(@replacement.action).to eq(:insert_after)
|
400
400
|
end
|
401
401
|
|
402
402
|
it "should remove old action" do
|
@@ -408,7 +408,7 @@ module Deface
|
|
408
408
|
describe "when redefining an override when changing source type" do
|
409
409
|
before(:each) do
|
410
410
|
#stub view paths to be local spec/assets directory
|
411
|
-
ActionController::Base.
|
411
|
+
allow(ActionController::Base).to receive(:view_paths).and_return([File.join(File.dirname(__FILE__), '..', "assets")])
|
412
412
|
|
413
413
|
Rails.application.config.deface.overrides.all.clear
|
414
414
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :partial => "shared/post", :replace => "h1", :text => "<span>I'm text</span>")
|
@@ -418,7 +418,7 @@ module Deface
|
|
418
418
|
end
|
419
419
|
|
420
420
|
it "should return new source" do
|
421
|
-
@override.source.
|
421
|
+
expect(@override.source).to eq("<p>I do be a pirate!</p>")
|
422
422
|
end
|
423
423
|
|
424
424
|
end
|
@@ -430,56 +430,56 @@ module Deface
|
|
430
430
|
@second = Deface::Override.new(:virtual_path => "posts/index", :name => "second", :insert_after => "li", :text => "<li>second</li>", :sequence => {:after => "first"})
|
431
431
|
@first = Deface::Override.new(:virtual_path => "posts/index", :name => "first", :replace => "li", :text => "<li>first</li>")
|
432
432
|
|
433
|
-
@third.sequence.
|
434
|
-
@second.sequence.
|
435
|
-
@first.sequence.
|
433
|
+
expect(@third.sequence).to eq(102)
|
434
|
+
expect(@second.sequence).to eq(101)
|
435
|
+
expect(@first.sequence).to eq(100)
|
436
436
|
end
|
437
437
|
|
438
438
|
it "should calculate correct before sequences" do
|
439
439
|
@second = Deface::Override.new(:virtual_path => "posts/index", :name => "second", :insert_after => "li", :text => "<li>second</li>", :sequence => 99)
|
440
440
|
@first = Deface::Override.new(:virtual_path => "posts/index", :name => "first", :replace => "li", :text => "<li>first</li>", :sequence => {:before => "second"})
|
441
441
|
|
442
|
-
@second.sequence.
|
443
|
-
@first.sequence.
|
442
|
+
expect(@second.sequence).to eq(99)
|
443
|
+
expect(@first.sequence).to eq(98)
|
444
444
|
end
|
445
445
|
|
446
446
|
it "should calculate correct sequences with invalid hash" do
|
447
447
|
@second = Deface::Override.new(:virtual_path => "posts/index", :name => "second", :insert_after => "li", :text => "<li>second</li>", :sequence => {})
|
448
448
|
@first = Deface::Override.new(:virtual_path => "posts/show", :name => "first", :replace => "li", :text => "<li>first</li>", :sequence => {:before => "second"})
|
449
449
|
|
450
|
-
@second.sequence.
|
451
|
-
@first.sequence.
|
450
|
+
expect(@second.sequence).to eq(100)
|
451
|
+
expect(@first.sequence).to eq(100)
|
452
452
|
end
|
453
453
|
|
454
454
|
end
|
455
455
|
|
456
456
|
describe "#end_selector" do
|
457
457
|
it "should return nil when closing_selector is not defined" do
|
458
|
-
@override.end_selector.
|
458
|
+
expect(@override.end_selector).to be_nil
|
459
459
|
end
|
460
460
|
|
461
461
|
it "should return nil when closing_selector is an empty string" do
|
462
462
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :closing_selector => "", :text => "<h1>Argh!</h1>")
|
463
|
-
@override.end_selector.
|
463
|
+
expect(@override.end_selector).to be_nil
|
464
464
|
end
|
465
465
|
|
466
466
|
it "should return nil when closing_selector is nil" do
|
467
467
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :closing_selector => nil, :text => "<h1>Argh!</h1>")
|
468
|
-
@override.end_selector.
|
468
|
+
expect(@override.end_selector).to be_nil
|
469
469
|
end
|
470
470
|
|
471
471
|
it "should return closing_selector is present" do
|
472
472
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :closing_selector => "h4", :text => "<h1>Argh!</h1>")
|
473
|
-
@override.end_selector.
|
473
|
+
expect(@override.end_selector).to eq("h4")
|
474
474
|
end
|
475
475
|
end
|
476
476
|
|
477
477
|
describe "#touch" do
|
478
478
|
it "should change the overrides :updated_at value" do
|
479
479
|
before_touch = @override.args[:updated_at]
|
480
|
-
Time.zone.
|
480
|
+
allow(Time.zone).to receive(:now).and_return(Time.parse('2006-08-24'))
|
481
481
|
@override.touch
|
482
|
-
@override.args[:updated_at].
|
482
|
+
expect(@override.args[:updated_at]).not_to eq(before_touch)
|
483
483
|
end
|
484
484
|
end
|
485
485
|
|
@@ -492,18 +492,18 @@ module Deface
|
|
492
492
|
end
|
493
493
|
|
494
494
|
it "should return hex digest based on override's args" do
|
495
|
-
@override.digest.
|
495
|
+
expect(@override.digest).to match(/[a-f0-9]{32}/)
|
496
496
|
end
|
497
497
|
|
498
498
|
it "should change the digest when any args change" do
|
499
499
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h2", :text => "<h1>Argh!</h1>")
|
500
|
-
@override.digest.
|
500
|
+
expect(@override.digest).not_to eq(@digest)
|
501
501
|
|
502
502
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "<h1>Argh!</h1>")
|
503
|
-
@override.digest.
|
503
|
+
expect(@override.digest).to eq(@digest)
|
504
504
|
|
505
505
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h2", :text => "<h1>I'm a pirate!</h1>")
|
506
|
-
@override.digest.
|
506
|
+
expect(@override.digest).not_to eq(@digest)
|
507
507
|
end
|
508
508
|
end
|
509
509
|
|
@@ -518,28 +518,28 @@ module Deface
|
|
518
518
|
end
|
519
519
|
|
520
520
|
it "should return hex digest based on all applicable overrides" do
|
521
|
-
Deface::Override.digest(:virtual_path => "posts/index").
|
521
|
+
expect(Deface::Override.digest(:virtual_path => "posts/index")).to match(/[a-f0-9]{32}/)
|
522
522
|
end
|
523
523
|
|
524
524
|
it "should change the digest when any args change for any override" do
|
525
525
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h2", :text => "<h1>Argh!</h1>")
|
526
|
-
Deface::Override.digest(:virtual_path => "posts/index").
|
526
|
+
expect(Deface::Override.digest(:virtual_path => "posts/index")).not_to eq(@digest)
|
527
527
|
|
528
528
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "<h1>Argh!</h1>")
|
529
|
-
Deface::Override.digest(:virtual_path => "posts/index").
|
529
|
+
expect(Deface::Override.digest(:virtual_path => "posts/index")).to eq(@digest)
|
530
530
|
|
531
531
|
@second = Deface::Override.new(:virtual_path => "posts/index", :name => "2nd", :insert_after => "p", :text => "<pre>this is erb?</pre>")
|
532
|
-
Deface::Override.digest(:virtual_path => "posts/index").
|
532
|
+
expect(Deface::Override.digest(:virtual_path => "posts/index")).not_to eq(@digest)
|
533
533
|
end
|
534
534
|
|
535
535
|
it "should change the digest when overrides are removed / added" do
|
536
536
|
Deface::Override.all.clear
|
537
537
|
|
538
538
|
@new_digest = Deface::Override.digest(:virtual_path => "posts/index")
|
539
|
-
@new_digest.
|
539
|
+
expect(@new_digest).not_to eq(@digest)
|
540
540
|
|
541
541
|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "<h1>Argh!</h1>")
|
542
|
-
Deface::Override.digest(:virtual_path => "posts/index").
|
542
|
+
expect(Deface::Override.digest(:virtual_path => "posts/index")).not_to eq(@new_digest)
|
543
543
|
end
|
544
544
|
end
|
545
545
|
|
@@ -564,9 +564,9 @@ module Deface
|
|
564
564
|
|
565
565
|
end
|
566
566
|
|
567
|
-
ActionView::CompiledTemplates.instance_methods.size.
|
567
|
+
expect(ActionView::CompiledTemplates.instance_methods.size).to eq(2)
|
568
568
|
@override.send(:expire_compiled_template)
|
569
|
-
ActionView::CompiledTemplates.instance_methods.size.
|
569
|
+
expect(ActionView::CompiledTemplates.instance_methods.size).to eq(1)
|
570
570
|
end
|
571
571
|
|
572
572
|
it "should not remove compiled method when virtual path and digest matach" do
|
@@ -577,11 +577,11 @@ module Deface
|
|
577
577
|
end
|
578
578
|
end
|
579
579
|
|
580
|
-
Deface::Override.
|
580
|
+
expect(Deface::Override).to receive(:digest).and_return('e235fa404c3c2281d4f6791162b1c638')
|
581
581
|
|
582
|
-
ActionView::CompiledTemplates.instance_methods.size.
|
582
|
+
expect(ActionView::CompiledTemplates.instance_methods.size).to eq(1)
|
583
583
|
@override.send(:expire_compiled_template)
|
584
|
-
ActionView::CompiledTemplates.instance_methods.size.
|
584
|
+
expect(ActionView::CompiledTemplates.instance_methods.size).to eq(1)
|
585
585
|
end
|
586
586
|
end
|
587
587
|
|