Test::Unit を使ってテストを書いてみた

結局 Test::Unit を使った方法に。

setup メソッドで少し準備が必要だけれども、これでプラグインのテストが
できるようになった、と言えるかな。

あとは、プラグインに記載するドキュメントのフォーマットかな。

#!/usr/bin/ruby

$rire_home = File.expand_path(File.dirname($0) + '/..')
$LOAD_PATH.push $rire_home

require 'test/unit'
require 'lib/rire'

class TestSubscribeConst < Test::Unit::TestCase
  def setup
    @dsl = Rire::DSL.new($rire_home + '/plugin')
    @dsl.instance_eval <<-EOD
      def execute(src)
        instance_eval(src, 'unit.dsl', 1)
      end
    EOD
  end

  def test_no1
    src = <<-SCENARIO
      define_task do
        subscribe.const [
          {:link => 'http://www.example.com/1'},
          {:link => 'http://www.example.com/2'},
          {:link => 'http://www.example.com/3'},
        ]
      end
    SCENARIO

    ctx = @dsl.execute(src)

    assert_equal('http://www.example.com/1', ctx.feed.entry[0][:link])
    assert_equal('http://www.example.com/2', ctx.feed.entry[1][:link])
    assert_equal('http://www.example.com/3', ctx.feed.entry[2][:link])
    assert_equal(3, ctx.feed.entry.length)
  end

  def teardown
  end
end