require File.expand_path('../test_helper', __FILE__) require 'my-sequel' require 'fileutils' require 'tmpdir' # test cases for updates of links: run this file as a Ruby script class TestMySequel < Test::Unit::TestCase OrigLinks = { '20061231#p01' => '20061101#p01', '20061231#p02' => '20061001#p01', '20061130#p01' => '20061001#p01', } def setup @cache_path = File.join(Dir.tmpdir, "#{__FILE__}-#{$$}") FileUtils.mkdir_p(@cache_path) @orig_src_dates = OrigLinks.keys.map{|a| MySequel.date(a)} @orig_dst_dates = OrigLinks.values.map{|a| MySequel.date(a)} orig = MySequel.new(@cache_path) orig.restore(@orig_src_dates) @orig_src_dates.each do |date| orig.clean_dsts(Time.local(*(date.scan(/(\d{4,4})(\d\d)(\d\d)/)[0]))) end OrigLinks.each_pair do |src, dst| orig.add(src, dst) end orig.clean_srcs orig.commit end def testsrcs # confirms setup really cached the OrigLinks cached = MySequel.new(@cache_path) cached.restore(@orig_dst_dates) OrigLinks.values.uniq.each do |dst| srcs = OrigLinks.find_all{|e| dst == e[1]}.map{|e| e[0]} assert_equal(srcs.sort, cached.srcs(dst).sort) end end def testadd # confirms addition of a day # write the diary for 2007-01-01 cached = MySequel.new(@cache_path) cached.restore(@orig_dst_dates) cached.clean_dsts(Time.local(2007,1,1)) cached.add('20070101#p01', '20060101#p01') assert_equal(['20070101#p01'], cached.srcs('20060101#p01')) cached.clean_srcs cached.commit # display the diary for 2006-01-01 cached = MySequel.new(@cache_path) cached.restore(['20060101']) assert_equal(['20070101#p01'], cached.srcs('20060101#p01')) # confirmation of other links testsrcs end def testadd_two_months # http://zunda.freeshell.org/d/20070122.html#c01 # write the diary for 2007-02-15 cached = MySequel.new(@cache_path) cached.restore('20070215') cached.clean_dsts(Time.local(2007,2,15)) cached.add('20070215#p01', '20070115#p01') cached.clean_srcs cached.commit # write the diary for 2007-03-10 cached = MySequel.new(@cache_path) cached.restore('20070310') cached.clean_dsts(Time.local(2007,3,10)) cached.add('20070310#p01', '20070115#p01') cached.clean_srcs cached.commit # display the diary on 2007-01-15 cached = MySequel.new(@cache_path) cached.restore('20070115') assert_equal(['20070215#p01', '20070310#p01'], cached.srcs('20070115#p01')) end def testedit # confirms edition of a link # edit the diary for 2006-11-31 cached = MySequel.new(@cache_path) cached.restore(@orig_dst_dates) cached.clean_dsts(Time.local(2006,11,30)) cached.add('20061130#p01', '20060901#p01') cached.clean_srcs cached.commit # display the diary on 2006-09-01 cached = MySequel.new(@cache_path) cached.restore(['20060901']) assert_equal(['20061130#p01'], cached.srcs('20060901#p01')) # display the diary on 2006-10-01 cached.restore(['20061001']) assert_equal(['20061231#p02'], cached.srcs('20061001#p01')) end def testdelete # confirms deletion of a link # edit the diary for 2006-11-31 cached = MySequel.new(@cache_path) cached.restore(@orig_dst_dates) cached.clean_dsts(Time.local(2006,11,30)) cached.clean_srcs cached.commit # display the diary on 2006-10-01 cached.restore(['20061001']) assert_equal(['20061231#p02'], cached.srcs('20061001#p01')) end def teardown FileUtils.rmtree(@cache_path) end end class TestMySequelCss < Test::Unit::TestCase def test_usual assert_equal(<<"_TARGET", MySequel::css(<<'_INNER')) \t _TARGET hogehoge: _INNER end def test_empty assert_equal('', MySequel::css('')) end def test_space assert_equal('', MySequel::css(' ')) end def test_crlf assert_equal('', MySequel::css("\r\n")) end end class TestMySequelConf < Test::Unit::TestCase include ERB::Util def setup @defaults = { :label => { :title => 'Link label', :default => 'default label', :index => 1, }, :format => { :title => 'Date format*', :description => 'Format of the dates of the link', :default => '', :index => 2, }, :textarea => { :title => 'Test to show text area', :default => "a\nb\ncc", :index => 3, :textarea => true, }, :textarea_with_size => { :title => 'Test to show text area', :default => "a\nb\ncc", :index => 4, :textarea => {:rows => 2}, } } @my_sequel_conf = MySequel::Conf.new(@defaults) end def testdefaults # retrieve default configuration assert_equal('default label', @my_sequel_conf[:label]) end def testmerge options = {'my_sequel.label' => 'configured label'} @my_sequel_conf.merge_hash(options) assert_equal('configured label', @my_sequel_conf[:label]) end def testparams options = {'label' => ['configured label']} @my_sequel_conf.merge_params(options) assert_equal('configured label', @my_sequel_conf[:label]) end def testparams_with_empty_array options = {'label' => ['configured label'], 'label.reset' => []} @my_sequel_conf.merge_params(options) assert_equal('configured label', @my_sequel_conf[:label]) end def testtohash testmerge conf_hash = {'dummy' => 'dummy'} @my_sequel_conf.to_conf_hash(conf_hash) assert_equal({'my_sequel.label' => 'configured label', 'dummy' => 'dummy'}, conf_hash) end def testparams_with_empty testmerge options = {'label' => ['']} @my_sequel_conf.merge_params(options) assert_equal('', @my_sequel_conf[:label]) end def testparams_with_reset testmerge options = {'label' => ['any value'], 'label.reset' => 't'} @my_sequel_conf.merge_params(options) assert_equal('default label', @my_sequel_conf[:label]) end def test_delete_confhash options = {'my_sequel.label' => 'configured label'} @my_sequel_conf.merge_hash(options) params = {'label' => ['any value'],'label.reset' => 't'} @my_sequel_conf.merge_params(params) @my_sequel_conf.to_conf_hash(options) assert(!options.has_key?('my_sequel.label')) end def testparams_with_nil testmerge options = {'label' => nil} @my_sequel_conf.merge_params(options) assert_equal('configured label', @my_sequel_conf[:label]) end def testparams_with_nokey testmerge options = {} @my_sequel_conf.merge_params(options) assert_equal('configured label', @my_sequel_conf[:label]) end end