crowdworks/captureful_formatter

View on GitHub
lib/captureful_formatter/structures.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'digest/md5'

module CapturefulFormatter

  # Data Structures for template files.
  module Structures
    class Feature
      attr_accessor :scenarios
      attr_accessor :description

      # [notification]
      #   GroupNotification
      def initialize(notification)
        @description = notification.group.description
        @scenarios = []
      end

      def all_passed
        @scenarios.count == num_passed
      end

      def num_passed
        @scenarios.count {|scenario| scenario.status == :passed }
      end

      def num_pending
        @scenarios.count {|scenario| scenario.status == :pending }
      end

      def num_failed
        @scenarios.count {|scenario| scenario.status == :failed }
      end
    end

    class Scenario
      attr_accessor :steps
      attr_accessor :description
      attr_accessor :status
      attr_accessor :exception

      # [notification]
      #   ExampleNotification
      def initialize(notification)
        @steps = []
        @status = nil
        @description = notification.group.description
        @exception = nil
        feature_description = notification.group.metadata[:parent_example_group][:description]
        @hash = Digest::MD5.hexdigest("#{feature_description}#{notification.group.description}")
      end

      def hash
        @hash
      end

      def step_count
        @steps.size
      end
    end

    class Step
      attr_accessor :description
      attr_accessor :scenario
      attr_accessor :captures

      # [notification]
      #   StepNotification
      def initialize(notification, parent_scenario)
        @description = notification.description
        @scenario = parent_scenario
        @captures = {}
      end
    end
  end
end