# -*- encoding : utf-8 -*-
Testing Dao::Form do
testing '.new' do
form = new_form()
form = new_named_form()
end
testing 'name_for' do
assert{ Dao::Form.name_for(:foo, :a, :b) == 'dao[foo][a.b]' }
assert{ new_form.name_for(:a, :b) == 'dao[form][a.b]' }
assert{ new_named_form.name_for(:a, :b) == 'dao[name][a.b]' }
assert{ new_named_form(:foo).name_for(:a, :b) == 'dao[foo][a.b]' }
end
testing 'scope_for' do
form = new_form()
assert do
html = form.input(:bar)
scmp(
html,
''
)
end
assert do
form.scope_for(:foo) do
html = form.input(:bar)
scmp(
html,
''
)
end
end
assert do
html = form.input(:bar)
scmp(
html,
''
)
end
end
testing 'Form#select' do
#
form = new_form()
form.attributes.set :key => 42
#
html = assert{ form.select(:key) }
assert do
scmp(
html,
''
)
end
#
html = assert{ form.select(:key, :values => %w( a b c )) }
assert do
scmp(
html,
''
)
end
#
html = assert{ form.select(:key, :values => %w( A B C ).zip([1,2,3])) }
assert do
scmp(
html,
''
)
end
#
html = assert{ form.select(:key, :values => %w( a b c ), :blank => true) }
assert do
scmp(
html,
''
)
end
#
html = assert{ form.select(:key, :values => %w( a b c ), :blank => nil) }
assert do
scmp(
html,
''
)
end
#
html = assert{ form.select(:key, :values => %w( a b c ), :blank => 42) }
assert do
scmp(
html,
''
)
end
#
html = assert{ form.select(:key, :values => %w( a b c ), :blank => false) }
assert do
scmp(
html,
''
)
end
#
html = assert{ form.select(:key, :values => %w( a b c ), :selected => :b) }
assert do
scmp(
html,
''
)
end
#
block = proc do |content, value, selected_value|
is_selected = value.to_s == selected_value.to_s
[content, value, is_selected]
end
html = assert{ form.select(:key, :values => [41, 42, 43], &block) }
assert do
scmp(
html,
''
)
end
#
block = proc do |content, value|
is_selected = value.to_s == '42'
[content, value, is_selected]
end
html = assert{ form.select(:key, :values => [41, 42, 43], &block) }
assert do
scmp(
html,
''
)
end
#
block = proc do |content, value|
is_selected = value.to_s == '42'
{ :content => content, :value => value, :selected => is_selected }
end
html = assert{ form.select(:key, :values => [41, 42, 43], &block) }
assert do
scmp(
html,
''
)
end
end
protected
def new_form
assert{ Dao::Form.new }
end
def new_named_form(name = 'name')
object = Object.new
class << object
%w[ name attributes errors ].each{|attr_name| attr_accessor(attr_name)}
attr_accessor :name
end
object.name = name
object.attributes = Map.new
object.errors = Dao::Errors.new
assert{ Dao::Form.new(object) }
end
end
BEGIN {
testdir = File.dirname(File.expand_path(__FILE__))
rootdir = File.dirname(testdir)
libdir = File.join(rootdir, 'lib')
require File.join(libdir, 'dao')
require File.join(testdir, 'testing')
require File.join(testdir, 'helper')
}