graphql-schema_comparator 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 16377eaa74c85158d06801b8224c09d863de9e36
4
- data.tar.gz: 9f1cf164f223b30cc7acd3620aa46e843ed04ea9
3
+ metadata.gz: 510c4140ffe9cca7a012282eabc3570cae2bf084
4
+ data.tar.gz: 2b1236ab94f83ed213f73afc9dcb941a5ac7e097
5
5
  SHA512:
6
- metadata.gz: 72e276a27111484f51ee9bdf9a6b17a5420438c8db32601cdacda917677e0e3e1f0a4f9858e8a3e2a5dc00e3b6310b9587ffa248e2cd33ad79b364ee7d959043
7
- data.tar.gz: be997a8f471e654a341d7a72d95e2940ec9f7eb2811dd73e73b4f657b67af4a6e628bf37ff411ff3a82ba059717bc058c28750326c2587098eac97d11ae7c7aa
6
+ metadata.gz: 2734f4d3159c8b0e0851aacd92e94f016d8aeebdffa4ec33a8473436bb8347dfcf72e8b4c0d821243426f267092efcf2bf1571d83f7f04a3ac598e377da65801
7
+ data.tar.gz: b00933509012e0c900b6ced4e40c48a09c4ff06278ba9cd5a6a3109d70f6f5d879737f448171da4c9ce0e4c23e2383c7f6b94bd4bc06a0f7d077c166dc931582
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ ---
2
+ language: ruby
3
+ sudo: false
4
+ cache: bundler
5
+ before_install:
6
+ - gem update --system --no-doc
7
+ - gem install bundler
8
+ rvm:
9
+ - 2.3.4
10
+ - 2.4.1
data/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 (Aug 18 2017)
4
+
5
+ ### New features
6
+
7
+ - Add `#non_breaking_changes` to get a list of non breaking changes from a comparison result. (#4)
8
+ - CLI now Prints results sorted and grouped by breaking / non-breaking (#3)
9
+
10
+ ### Bug fixes
11
+
12
+ - Fix message for `EnumValueRemoved` (#5)
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # GraphQL::SchemaComparator
2
2
 
3
+ [![Build Status](https://travis-ci.org/xuorig/graphql-schema_comparator.svg?branch=master)](https://travis-ci.org/xuorig/graphql-schema_comparator)
4
+
3
5
  `GraphQL::SchemaComparator` is a GraphQL Schema comparator. What does that mean? `GraphQL::SchemaComparator` takes
4
6
  two GraphQL schemas and outputs a list of changes that happened between the two versions. This is useful for many things:
5
7
 
@@ -58,6 +60,7 @@ access information on the changes between the two schemas.
58
60
  - `result.breaking?` returns true if any breaking changes were found between the two schemas
59
61
  - `result.identical?` returns true if the two schemas were identical
60
62
  - `result.breaking_changes` returns the list of breaking changes found between schemas.
63
+ - `result.non_breaking_changes` returns the list of non-breaking changes found between schemas.
61
64
  - `result.changes` returns the full list of change objects.
62
65
 
63
66
  ### Change Objects
@@ -26,6 +26,6 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 1.14"
28
28
  spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "minitest"
30
- spec.add_development_dependency "pry-byebug"
29
+ spec.add_development_dependency "minitest", "~> 5.10"
30
+ spec.add_development_dependency "pry-byebug", "~> 3.4"
31
31
  end
@@ -46,14 +46,14 @@ module GraphQL
46
46
  class EnumValueRemoved
47
47
  attr_reader :enum_value, :enum_type, :breaking
48
48
 
49
- def initialize(enum_value, enum_type)
49
+ def initialize(enum_type, enum_value)
50
50
  @enum_value = enum_value
51
51
  @enum_type = enum_type
52
52
  @breaking = true
53
53
  end
54
54
 
55
55
  def message
56
- "Enum Value #{enum_value.name} was removed from Enum #{enum_type.name}"
56
+ "Enum value `#{enum_value.name}` was removed from enum `#{enum_type.name}`"
57
57
  end
58
58
  end
59
59
 
@@ -197,7 +197,7 @@ module GraphQL
197
197
  end
198
198
 
199
199
  def message
200
- "Enum value #{enum_value.name} was added on enum type #{enum_type.name}"
200
+ "Enum value `#{enum_value.name}` was added to enum `#{enum_type.name}`"
201
201
  end
202
202
  end
203
203
 
@@ -499,6 +499,7 @@ module GraphQL
499
499
  def initialize(input_object_type, field)
500
500
  @input_object_type = input_object_type
501
501
  @field = field
502
+ @breaking = field.type.kind.non_null? ? true : false
502
503
  end
503
504
 
504
505
  def message
@@ -513,7 +514,8 @@ module GraphQL
513
514
  @type = type
514
515
  @field = field
515
516
  @argument = argument
516
- @breaking = false
517
+ # TODO: should at least have a warning that it may still be breaking
518
+ @breaking = argument.type.kind.non_null? ? true : false
517
519
  end
518
520
 
519
521
  def message
@@ -584,7 +586,7 @@ module GraphQL
584
586
  def initialize(old_schema, new_schema)
585
587
  @old_schema = old_schema
586
588
  @new_schema = new_schema
587
- @breaking = false
589
+ @breaking = true
588
590
  end
589
591
 
590
592
  def message
@@ -596,7 +598,7 @@ module GraphQL
596
598
  def initialize(old_schema, new_schema)
597
599
  @old_schema = old_schema
598
600
  @new_schema = new_schema
599
- @breaking = false
601
+ @breaking = true
600
602
  end
601
603
 
602
604
  def message
@@ -1,22 +1,19 @@
1
1
  module GraphQL
2
2
  module SchemaComparator
3
3
  class Result
4
- attr_reader :changes
4
+ attr_reader :changes, :breaking_changes, :non_breaking_changes
5
5
 
6
6
  def initialize(changes)
7
- @changes = changes
7
+ @changes = changes.sort_by { |c| [c.breaking ? 1 : 2, c.message] }
8
+ @breaking_changes, @non_breaking_changes = @changes.partition(&:breaking)
8
9
  end
9
10
 
10
11
  def identical?
11
12
  @changes.empty?
12
13
  end
13
14
 
14
- def breaking_changes
15
- @changes.select { |c| c.breaking }
16
- end
17
-
18
15
  def breaking?
19
- @changes.any? { |c| c.breaking }
16
+ breaking_changes.any?
20
17
  end
21
18
  end
22
19
  end
@@ -1,5 +1,5 @@
1
1
  module GraphQL
2
2
  module SchemaComparator
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-schema_comparator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc-Andre Giroux
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-23 00:00:00.000000000 Z
11
+ date: 2017-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql
@@ -70,30 +70,30 @@ dependencies:
70
70
  name: minitest
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '5.10'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '5.10'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry-byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '3.4'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '3.4'
97
97
  description: GraphQL::SchemaComparator compares two GraphQL schemas given their IDL
98
98
  and returns a list of changes.
99
99
  email:
@@ -104,6 +104,8 @@ extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
106
  - ".gitignore"
107
+ - ".travis.yml"
108
+ - CHANGELOG.md
107
109
  - CODE_OF_CONDUCT.md
108
110
  - Gemfile
109
111
  - LICENSE.txt
@@ -147,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
149
  version: '0'
148
150
  requirements: []
149
151
  rubyforge_project:
150
- rubygems_version: 2.5.1
152
+ rubygems_version: 2.6.10
151
153
  signing_key:
152
154
  specification_version: 4
153
155
  summary: Compare GraphQL schemas and get the changes that happened.