Sha256: ae3dcf9f688d85aa92892acc50102dc66c1ce4efe03777a5f8851f76b284d301
Contents?: true
Size: 1.42 KB
Versions: 50
Compression:
Stored size: 1.42 KB
Contents
require 'pact_broker/api/decorators/pact_decorator' module PactBroker module Api module Decorators # Make a different content type for adding extra information for the UI, as # some pact parsing tools blow up when there are unexpected keys :| class ExtendedPactDecorator < PactDecorator class TagDecorator < BaseDecorator property :name property :latest, getter: ->(_) { true } link "pb:latest-pact" do | opts | { name: "The latest pact with the tag #{represented.name}", href: latest_tagged_pact_url(represented.pact, represented.name, opts[:base_url]) } end end property :content_hash, as: :contract collection :head_tags, exec_context: :decorator, as: :tags, embedded: true, extend: TagDecorator # TODO rather than remove the contract keys that we added in the super class, # it would be better to inherit from a shared super class def to_hash(options = {}) keys_to_remove = represented.content_hash.keys super.each_with_object({}) do | (key, value), new_hash | new_hash[key] = value unless keys_to_remove.include?(key) end end def head_tags represented.head_tag_names.collect do | tag_name | OpenStruct.new(name: tag_name, pact: represented) end end end end end end
Version data entries
50 entries across 50 versions & 1 rubygems