# -*- encoding: utf-8 -*-
require 'test/unit'
require 'helper'
require 'webgen/tag'
class TestTagLangbar < Test::Unit::TestCase
include Test::WebsiteHelper
def setup
super
@obj = Webgen::Tag::Langbar.new
end
def create_default_nodes
{
:root => root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/', {'index_path' => 'index.html'}),
:file_en => Webgen::Node.new(root, '/file1.html', 'file1.html', {'lang' => 'en', 'title' => 'File1'}),
:index_en => Webgen::Node.new(root, '/index.html', 'index.html', {'lang' => 'en'}),
:index_de => Webgen::Node.new(root, '/index.de.html', 'index.html', {'lang' => 'de'}),
}
end
def test_call
nodes = create_default_nodes
de_link = 'de'
en_link = 'en'
check_results(nodes[:index_en], "#{de_link} | #{en_link}", de_link, "#{de_link} | #{en_link}", de_link)
check_results(nodes[:file_en], en_link, '', '', '')
@obj.set_params('tag.langbar.show_single_lang' => true, 'tag.langbar.show_own_lang' => true, 'tag.langbar.separator' => ' --- ')
assert_equal(["#{de_link} --- #{en_link}", false],
@obj.call('langbar', '', Webgen::Context.new(:chain => [nodes[:index_en]])))
@obj.set_params('tag.langbar.show_single_lang' => true, 'tag.langbar.show_own_lang' => true,
'tag.langbar.lang_names' => {'de' => 'Deutsch'})
assert_equal(["Deutsch | #{en_link}", false],
@obj.call('langbar', '', Webgen::Context.new(:chain => [nodes[:index_en]])))
@obj.set_params('tag.langbar.show_single_lang' => true, 'tag.langbar.show_own_lang' => true,
'tag.langbar.process_output' => true)
assert_equal(["#{de_link} | #{en_link}", true],
@obj.call('langbar', '', Webgen::Context.new(:chain => [nodes[:index_en]])))
nodes[:index_en].unflag(:dirty)
@website.blackboard.dispatch_msg(:node_changed?, nodes[:index_en])
assert(!nodes[:index_en].flagged?(:dirty))
nodes[:index_en].tree.delete_node(nodes[:index_de])
@website.blackboard.dispatch_msg(:node_changed?, nodes[:index_en])
assert(nodes[:index_en].flagged?(:dirty))
end
def check_results(node, both_true, both_false, first_false, second_false)
context = Webgen::Context.new(:chain => [node])
@obj.set_params('tag.langbar.show_single_lang'=>true, 'tag.langbar.show_own_lang'=>true)
assert_equal(both_true, @obj.call('langbar', '', context).first)
@obj.set_params('tag.langbar.show_single_lang'=>false, 'tag.langbar.show_own_lang'=>false)
assert_equal(both_false, @obj.call('langbar', '', context).first)
@obj.set_params('tag.langbar.show_single_lang'=>false, 'tag.langbar.show_own_lang'=>true)
assert_equal(first_false, @obj.call('langbar', '', context).first)
@obj.set_params('tag.langbar.show_single_lang'=>true, 'tag.langbar.show_own_lang'=>false)
assert_equal(second_false, @obj.call('langbar', '', context).first)
end
end