lib/graphql-preview/instrumenter.rb in graphql-preview-0.1.0 vs lib/graphql-preview/instrumenter.rb in graphql-preview-0.1.1

- old
+ new

@@ -1,11 +1,12 @@ module GraphQLPreview # Modify each field & argument in the schema so that # its metadata contains the preview, if there is one. class Instrumenter - def initialize(enabled_previews) + def initialize(enabled_previews, possible_environments) @enabled_previews = enabled_previews + @possible_environments = possible_environments end def instrument(type, field) # Maybe get an isolated copy that we can modify field_dup = nil @@ -26,12 +27,22 @@ def assign_preview(obj, preview) if obj.metadata[:preview_toggled_by] raise ArgumentError, "Couldn't add `#{preview}` to `#{obj.name}`: it's already toggled with `#{obj.metadata[:preview_toggled_by].toggled_by}`" end - obj.metadata[:preview_toggled_by] = preview + + environments = if preview.environments + preview.environments + else + @possible_environments + end + + value = Hash[environments.map{ |env| [env, preview] }] + + obj.metadata[:preview_toggled_by] = value + if obj.respond_to?(:mutation) && (mut = obj.mutation) - mut.metadata[:preview_toggled_by] = preview + mut.metadata[:preview_toggled_by] = value end end end end