Sha256: ff6f912682fd1f59ec45f9ad48ad16a6b8c3f6dfcf28d05388519f9e5bb8fefd

Contents?: true

Size: 1.78 KB

Versions: 2

Compression:

Stored size: 1.78 KB

Contents

module VerifiedDouble
  class MethodSignaturesReport
    attr_accessor :registered_signatures,  :unverified_signatures, :verified_signatures,
      :verified_signatures_from_tags,:verified_signatures_from_matchers

    def initialize
      @registered_signatures = []
      @unverified_signatures = []
      @verified_signatures = []
      @verified_signatures_from_tags = []
      @verified_signatures_from_matchers = []
    end

    def identify_unverified_signatures
      @unverified_signatures = @registered_signatures.select{|registered_signature|
       @verified_signatures.all?{|verified_signature|
        ! registered_signature.accepts?(verified_signature) } }
      self
    end

    def merge_verified_signatures
      @verified_signatures = @verified_signatures_from_tags + @verified_signatures_from_matchers
      self
    end

    def output_unverified_signatures
      if @unverified_signatures.any?
        output = ["The following mocks are not verified:" ] + @unverified_signatures.map(&:recommended_verified_signature).map(&:to_s).sort
        puts output.join("\n")
      end
      self
    end

    def set_registered_signatures
      @registered_signatures = VerifiedDouble.registry.map(&:method_signatures).flatten.uniq
      self
    end

    def set_verified_signatures_from_matchers
      @verified_signatures_from_matchers = VerifiedDouble.verified_signatures_from_matchers
      self
    end

    def set_verified_signatures_from_tags(nested_example_group)
      @verified_signatures_from_tags = nested_example_group
        .class
        .descendant_filtered_examples
        .map{|example| example.metadata[:verifies_contract] }
        .compact
        .uniq
        .map{|method_signature_string| ParseMethodSignature.new(method_signature_string).execute }
      self
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
verified_double-0.1.1 lib/verified_double/method_signatures_report.rb
verified_double-0.1.0 lib/verified_double/method_signatures_report.rb