graphql-schema_comparator 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.