require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') class MyViewContext include ActionView::Helpers::TagHelper include Stache::AssetHelper end describe Stache::AssetHelper do def helper @helper ||= MyViewContext.new end describe "#template_include_tag" do it "renders a script tag with the template contents" do File.stub!(:file?).with(Rails.root.join("app/views/widgets/_oh_herro.html.mustache").to_s).and_return(true) File.stub!(:open).with(Rails.root.join("app/views/widgets/_oh_herro.html.mustache"), "rb", {:encoding=>"utf-8"}). and_return(StringIO.new("{{ awyeah }}")) helper.template_include_tag("widgets/oh_herro").should == "" end it "uses the template_base_path config setting to locate the template" do Stache.configure do |c| c.template_base_path = "/tmp/whee" end File.stub!(:file?).with("/tmp/whee/_whooo.html.mustache").and_return(true) File.stub!(:open).with(Pathname.new("/tmp/whee/_whooo.html.mustache"), "rb", {:encoding=>"utf-8"}). and_return(StringIO.new("{{ awyeah }}")) helper.template_include_tag("whooo").should == "" end it "raises if it cannot find the template" do -> { helper.template_include_tag("arrrgh") }.should raise_error(ActionView::MissingTemplate) end end describe "#locate_template_for" do it "tries permutations of partial names and file extensions to find the requested file" do File.should_receive(:file?).with("/tmp/whee/_whooo.html.mustache") File.should_receive(:file?).with("/tmp/whee/_whooo.mustache") File.should_receive(:file?).with("/tmp/whee/whooo.html.mustache") File.should_receive(:file?).with("/tmp/whee/whooo.mustache").and_return(true) helper.locate_template_for(Pathname.new("/tmp/whee"), "whooo").should == Pathname.new("/tmp/whee/whooo.mustache") end it "returns nil if it cannot find anything" do helper.locate_template_for(Pathname.new("/tmp/whee"), "whooo").should be_nil end end end