Compare os esquemas Graphql para alterações significativas

Quer ter certeza de que seu esquema Graphql não apresenta nenhuma alteração importante?

Instale esta gem: https://github.com/xuorig/graphql-schema_comparator

Adicione um arquivo de teste que compare um instantâneo do esquema presente no controle de versão com um instantâneo do esquema atual (não no controle de versão).

require 'test_helper'

class MySchemaTest < ActiveSupport::TestCase
test
'schema should not have changed' do
schema
= GraphQL::Schema::Printer.print_schema(MySchema)
current_schema_path
= Rails.root.join('tmp', 'current_my_schema.graphql')
File.write(current_schema_path, schema)

snapshot_schema_path
= file_fixture('my_schema.graphql')
snapshot
= snapshot_schema_path.read

result
= GraphQL::SchemaComparator.compare(snapshot, schema)

assert_not result
.breaking?, "Graphql schema has breaking changes:n"
"please run `bin/schema_comparator compare #{snapshot_schema_path} #{current_schema_path}` to see the changes"
assert result
.identical?, "Graphql schema has changed:n"
'please run `bin/rails graphql:schema:dump` to update the snapshot'
end
end

Adicione o seguinte na parte inferior do seu Rakefile

require 'graphql/rake_task'
GraphQL::RakeTask.new(
schema_name
: 'MySchema',
idl_outfile
: 'test/fixtures/files/my_schema.graphql',
json_outfile
: 'test/fixtures/files/my_schema.json'
)