Sha256: 3ec602e391fb392f2a5d6c5d66b829b770cf74fce1cc62a78e3e7cb6b7b60319

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

# encoding: utf-8

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

4 entries across 4 versions & 2 rubygems

Version Path
citrusbyte-stories-0.1.0 lib/stories/runner/pdf.rb
citrusbyte-stories-0.1.1 lib/stories/runner/pdf.rb
stories-0.1.0 lib/stories/runner/pdf.rb
stories-0.1.1 lib/stories/runner/pdf.rb