require 'rexml/document'
require 'amrita2'
require 'amrita2/testsupport'
require 'time'
include Amrita2
include Amrita2::Runtime
include Amrita2::Filters
context "Repeat Filter" do
include Amrita2::Runtime
include Amrita2::Filters
specify "with string" do
#t = Amrita2::Template.new('
>
END
task =
[
{ :memo => 'Default and filter' },
{ :memo => nil },
{ :memo => 'xyz' }
]
t.render_with(binding).should_be_samexml_as '
DEFAULT AND FILTER
(no text)
XYZ
'
end
end
context "CommandFilter" do
include Amrita2::Runtime
include Amrita2::Filters
specify "cat -n" do
t = Amrita2::Template.new(%[
])
t.test_with(:aaa => "abc") do|r|
r.should_be_samexml_as "1
abc
"
end
end
specify "tidy" do
t = Amrita2::Template.new <<-END
<
123
END
t.test_with(binding) do|r|
r.should == <
END
end
end
specify "tidy for only debug" do
text = <<-END
<%(BeforeCompile)
self.class.module_eval { remove_const(:Tidy) } if self.class.const_defined?(:Tidy)
if ENV['RAILS_ENV'] == "development"
Tidy = CommandFilter['tidy -q -xml -indent']
else
Tidy = nil
end
%>
<
123
END
ENV['RAILS_ENV'] = "development"
t = Amrita2::Template.new text
t.test_with(binding) do|r|
r.should == " \n\n"
end
ENV['RAILS_ENV'] = "production"
t = Amrita2::Template.new text
t.test_with(binding) do |r|
r.should == " \n"
end
end
end
context "Join Filter" do
include Amrita2::Runtime
include Amrita2::Filters
specify "Join elements" do
t = Amrita2::Template.new <<-END
<aaa
bbbb
END
t.test_with(binding) do|r|
r.should_be_samexml_as '
'
end
end
specify "Join with
" do
t = Amrita2::Template.new <<-END
<
'] <
aaaa
bbbb
END
t.test_with(binding) do|r|
r.should_be_samexml_as '
aaaa
bbbb
'
end
end
specify "Join with nbsp" do
t = Amrita2::Template.new <<-END
<
aaaa bbbb
'
end
end
specify "Join erb with nbsp" do
t = Amrita2::Template.new <<-END
<
aaaa 1 bbbb 2 cccc
'
end
end
end
context "Stream Filter" do
include Amrita2::Runtime
include Amrita2::Filters
specify "Change Stream" do
t = Amrita2::Template.new <<-END
<
>
END
t.test_with(binding) do|r|
r.should_be_samexml_as 'bbbb aaaa'
end
end
specify "Change Stream with erb" do
t = Amrita2::Template.new <<-END
<>
END
t.test_with(binding) do|r|
r.should_be_samexml_as 'bbbb aaaa'
end
end
specify "multi streams" do
t = Amrita2::Template.new <<-END
<>
<<=efg>>
END
t.test_with(binding) do|r|
r.should_be_samexml_as 'ddd aaa ccc bbb'
end
end
end
context "Module Extend Filter" do
include Amrita2::Runtime
include Amrita2::Filters
module ModuleExtendFilterTest
def bbb
"(#{super})"
end
end
specify "module extend" do
t = Amrita2::Template.new <<-END
<>
END
aaa = Struct.new(:bbb).new('bbb')
t.test_with(binding) do |r|
r.should_be_samexml_as '
(bbb)
'
end
end
end
context "ToHash Filter" do
include Amrita2::Runtime
include Amrita2::Filters
specify "with string" do
t = Amrita2::Template.new <<-END
<<:a|ToHash[:xxx]<
<<:xxx>>
END
t.render_with(:a => "A").should_be_samexml_as 'A'
end
specify "many keys" do
t = Amrita2::Template.new <<-END
<<:time | ToHash[:h=>:hour, :m=>:min, :s=>:sec] <
<<:h>>:<<:m>>:<<:s>>
END
tm = Time.local(2008,1,10,9,10,30)
tm.extend(Amrita2::DictionaryData)
t.render_with(:time=>tm).should_be_samexml_as '9:10:30'
end
end