Sha256: 3bcfc50b48f6d8f56eed0a058a284c4dd4ce7804ceb28691b25eabeb90551a30

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

require 'pact/consumer_contract/active_support_support'
require 'colored'

module Pact
  module Matchers
    class NestedJsonDiffDecorator

      include Pact::ActiveSupportSupport

      EXPECTED = '"EXPECTED"'
      EXPECTED_COLOURED = '"' + "expected".red + '"'

      EXPECTED_REGEXP = '"EXPECTED_TO_MATCH"'
      EXPECTED_REGEXP_COLOURED = '"' + "expected_to_match".red + '"'


      ACTUAL = '"ACTUAL"'
      ACTUAL_COLOURED =  '"' + "actual".green + '"'

      attr_reader :diff

      def initialize diff
        @diff = diff
      end

      def to_hash
        diff
      end

      def to_s
        colourise_message_if_configured fix_json_formatting(diff.to_json)
      end

      def colourise_message_if_configured message
        if Pact.configuration.color_enabled
          colourise_message message
        else
          message
        end
      end

      def colourise_message message
        message.split("\n").collect{| line | colourise(line) }.join("\n")
      end

      def colourise line
        line.white.gsub(EXPECTED, EXPECTED_COLOURED).gsub(ACTUAL, ACTUAL_COLOURED).gsub(EXPECTED_REGEXP, EXPECTED_REGEXP_COLOURED)
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pact-1.1.0.rc2 lib/pact/matchers/nested_json_diff_decorator.rb