Sha256: b9c9eaba75d4c0ac351c5aa1b973fc88efc2b4cbab714c7ad2c0bf8a55fb6d05

Contents?: true

Size: 1.37 KB

Versions: 8

Compression:

Stored size: 1.37 KB

Contents

gem "prawn", "~> 0.4"
require "prawn"

module Stories
  class Runner::PDF < Runner
    def render_header(pdf)
    end

    def finished(elapsed_time)
      super

      Prawn::Document.generate("stories.pdf", :page_size => "A4") do |pdf|
        render_header(pdf)

        pdf.text "User Acceptance Tests", :size => 20, :style => :bold
        
        pdf.move_down(15)

        $stories.each do |story|
          pdf.text story.name, :style => :bold

          story.scenarios.each_with_index do |scenario,i|
            scenario_leading = 15

            pdf.span(pdf.bounds.width - scenario_leading, :position => scenario_leading) do
              pdf.text "— #{scenario.name}"

              pdf.fill_color "666666"

              unless scenario.steps.empty? && scenario.assertions.empty?
                pdf.span(pdf.bounds.width - 30, :position => 30) do
                  pdf.font_size(9) do
                    render_many(pdf, scenario.steps)
                    render_many(pdf, scenario.assertions)
                  end
                end
              end

              pdf.move_down(5) unless i + 1 == story.scenarios.size
              
              pdf.fill_color "000000"
            end
          end

          pdf.move_down(10)
        end
      end
    end

    def render_many(pdf, elements)
      elements.each do |el|
        pdf.text el.to_s
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
citrusbyte-stories-0.0.6 lib/stories/runner/pdf.rb
citrusbyte-stories-0.0.7 lib/stories/runner/pdf.rb
citrusbyte-stories-0.0.8 lib/stories/runner/pdf.rb
citrusbyte-stories-0.0.9 lib/stories/runner/pdf.rb
stories-0.0.7 lib/stories/runner/pdf.rb
stories-0.0.9 lib/stories/runner/pdf.rb
stories-0.0.8 lib/stories/runner/pdf.rb
stories-0.0.5 lib/stories/runner/pdf.rb