require 'spec_helper'
module Deface
describe Override do
before(:each) do
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "
Argh!
")
end
it "should return correct action" do
Deface::Override.actions.each do |action|
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", action => "h1", :text => "Argh!
")
@override.action.should == action
end
end
it "should return correct selector" do
@override.selector.should == "h1"
end
describe "#find" do
it "should find by virtual_path" do
Deface::Override.find({:virtual_path => "posts/index"}).size.should == 1
end
it "should return empty array when no details hash passed" do
Deface::Override.find({}).should == []
end
end
describe "#new" do
it "should increase all#size by 1" do
expect {
Deface::Override.new(:virtual_path => "posts/new", :name => "Posts#new", :replace => "h1", :text => "argh!
")
}.to change{Deface::Override.all.size}.by(1)
end
end
describe "with :text" do
before(:each) do
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "Argh!
")
end
it "should return text as source" do
@override.source.should == "Argh!
"
end
end
describe "with :partial" do
before(:each) do
#stub view paths to be local spec/assets directory
ActionController::Base.stub(:view_paths).and_return([File.join(File.dirname(__FILE__), '..', "assets")])
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :partial => "shared/post")
end
it "should return partial contents as source" do
@override.source.should == "I'm from shared/post partial
\n"
end
end
describe "with :template" do
before(:each) do
#stub view paths to be local spec/assets directory
ActionController::Base.stub(:view_paths).and_return([File.join(File.dirname(__FILE__), '..', "assets")])
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :template => "shared/person")
end
it "should return template contents as source" do
@override.source.should == "I'm from shared/person template
\n"
end
end
describe "#source_element" do
before(:each) do
@override = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "<%= method 'x' & 'y' %>")
end
it "should return memoized escaped source" do
@override.source_element
@override.source_element.should == " method 'x' & 'y'
"
end
end
describe "when redefining an existing virutal_path and name" do
before(:each) do
@replacement = Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "Arrrr!
")
end
it "should not increase all#size by 1" do
expect {
Deface::Override.new(:virtual_path => "posts/index", :name => "Posts#index", :replace => "h1", :text => "Arrrr!
")
}.to change{Deface::Override.all.size}.by(0)
end
it "should return new source" do
@replacement.source.should_not == @override.source
@replacement.source.should == "Arrrr!
"
end
end
end
end