class GraphQL::SchemaComparator::Diff::Enum

Attributes

new_enum[R]
new_values[R]
old_enum[R]
old_values[R]

Public Class Methods

new(old_enum, new_enum) click to toggle source
# File lib/graphql/schema_comparator/diff/enum.rb, line 5
def initialize(old_enum, new_enum)
  @old_enum = old_enum
  @new_enum = new_enum

  @old_values = old_enum.values
  @new_values = new_enum.values
end

Public Instance Methods

diff() click to toggle source
# File lib/graphql/schema_comparator/diff/enum.rb, line 13
def diff
  changes = []

  changes += removed_values.map { |value| Changes::EnumValueRemoved.new(old_enum, value) }
  changes += added_values.map { |value| Changes::EnumValueAdded.new(new_enum, value) }

  each_common_value do |old_value, new_value|
    # TODO: Add Directive Stuff

    if old_value.description != new_value.description
      changes << Changes::EnumValueDescriptionChanged.new(new_enum, old_value, new_value)
    end

    if old_value.deprecation_reason != new_value.deprecation_reason
      changes << Changes::EnumValueDeprecated.new(new_enum, old_value, new_value)
    end
  end

  changes
end

Private Instance Methods

added_values() click to toggle source
# File lib/graphql/schema_comparator/diff/enum.rb, line 52
def added_values
  (new_values.keys - old_values.keys).map { |added| new_enum.values[added] }
end
each_common_value(&block) click to toggle source
# File lib/graphql/schema_comparator/diff/enum.rb, line 38
def each_common_value(&block)
  intersection = old_values.keys & new_values.keys
  intersection.each do |common_value|
    old_value = old_enum.values[common_value]
    new_value = new_enum.values[common_value]

    block.call(old_value, new_value)
  end
end
removed_values() click to toggle source
# File lib/graphql/schema_comparator/diff/enum.rb, line 48
def removed_values
  (old_values.keys - new_values.keys).map { |removed| old_enum.values[removed] }
end