require 'spec_helper'

describe DotHelper do
  describe "#dot_id" do
    it "properly escapes double quotaion and backslash" do
      dot_id('hello\\"').should == '"hello\\\\\\""'
    end
  end

  describe "with example Agents" do
    class Agents::DotFoo < Agent
      default_schedule "2pm"

      def check
        create_event :payload => {}
      end
    end

    class Agents::DotBar < Agent
      cannot_be_scheduled!

      def check
        create_event :payload => {}
      end
    end

    before do
      stub(Agents::DotFoo).valid_type?("Agents::DotFoo") { true }
      stub(Agents::DotBar).valid_type?("Agents::DotBar") { true }
    end

    describe "#agents_dot" do
      it "generates a DOT script" do
        @foo = Agents::DotFoo.new(:name => "foo")
        @foo.user = users(:bob)
        @foo.save!

        @bar = Agents::DotBar.new(:name => "bar")
        @bar.user = users(:bob)
        @bar.sources << @foo
        @bar.save!

        agents_dot([@foo, @bar]).should == 'digraph foo {"foo";"foo"->"bar";"bar";}'
        agents_dot([@foo, @bar], true).should == 'digraph foo {"foo"[URL="/agents/%d"];"foo"->"bar";"bar"[URL="/agents/%d"];}' % [@foo.id, @bar.id]
      end
    end
  end
end