graphql_helper_generator 0.0.13 → 0.0.14

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
  SHA256:
3
- metadata.gz: c2821a4fc6bbb71f557c677374667dadc286f55926f840d5db2f52d68383b603
4
- data.tar.gz: a2f7272a6010ada74dc043cf1c27f4adb436e36c32326b9e1f6d57db64d21121
3
+ metadata.gz: 1c01e8351b061d83ffa83b2f9e5b824c3987093f9abfddbda622f5db1bdd3616
4
+ data.tar.gz: d1ecf452b3c6d6043edce89701d8546a70a6f286e722a43591a26539b70a6642
5
5
  SHA512:
6
- metadata.gz: b57be25c6c726da420599a29e9542a7b04351a962b42079673a89d306218e030c08c858218099ecb52a616a7152aed444095ff1df13ae6e9254842ca34cc9cf0
7
- data.tar.gz: 620112903cdd5a035fa8fd4f5f9b4cfaac5c5116172c2a278e5c4888a820f028975de591a73a24d7e0d1822b03621a587c0074f3f0597862afa80587128e9df0
6
+ metadata.gz: 94150ebaa975477df11aaa46dfa11b04942d2ff599643e11ebf98e50ed7f940abd5f9435cdec40a01df8c2df864860d58d60135bb6fa7902e061897a10d883cb
7
+ data.tar.gz: 93f49e6b284aeee79c54b0f553f139823834c8b0d98d875f5d6a6447b2beea03a11ee88bc666d6fc9cfcd2c4b5622ca003f3918d0ddf716ab4048ec10048cdba
Binary file
@@ -20,7 +20,10 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
20
20
  generate_create_mutation
21
21
  generate_update_mutation
22
22
  generate_delete_mutation
23
- generate_create_test_lines
23
+ generate_factory
24
+ generate_create_test
25
+ generate_update_test
26
+ generate_delete_test
24
27
 
25
28
  if options[:input_type].present? then generate_input_type end
26
29
 
@@ -46,14 +49,6 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
46
49
  template "model_template.erb", dir
47
50
  end
48
51
 
49
- def generate_type
50
- generate_create_mutation_lines
51
- filename = "create_" + @snake_case_name + ".rb"
52
- dir = "app/graphql/mutations/" + filename
53
-
54
- template "create_mutation_template.erb", dir
55
- end
56
-
57
52
  def generate_type
58
53
  generate_type_fields
59
54
  filename = @snake_case_name + "_type.rb"
@@ -85,19 +80,46 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
85
80
  template "mutations/delete_mutation_template.erb", dir
86
81
  end
87
82
 
83
+ def generate_input_type
84
+ filename = @snake_case_name + "_input_type.rb"
85
+ dir = "app/graphql/types/inputs/" + filename
86
+
87
+ template "graphql_types/input_type_template.erb", dir
88
+ end
89
+
90
+ def generate_factory
91
+ len = @snake_case_name.length
92
+ if @snake_case_name[len] == 'y'
93
+ filename = @snake_case_name[0..-1] + "ies.rb"
94
+ else
95
+ filename = @snake_case_name + "s.rb"
96
+ end
97
+ dir = "spec/factories/" + filename
98
+
99
+ template "tests/factory_template.erb", dir
100
+ end
101
+
88
102
  def generate_create_test
89
103
  generate_create_test_lines
90
104
  filename = "create_" + @snake_case_name + "_spec.rb"
91
105
  dir = "spec/requests/" + filename
92
106
 
93
- template "tests/create_test.erb", dir
107
+ template "tests/create_test_template.erb", dir
94
108
  end
95
109
 
96
- def generate_input_type
97
- filename = @snake_case_name + "_input_type.rb"
98
- dir = "app/graphql/types/inputs/" + filename
110
+ def generate_update_test
111
+ generate_update_test_lines
112
+ filename = "update_" + @snake_case_name + "_spec.rb"
113
+ dir = "spec/requests/" + filename
99
114
 
100
- template "graphql_types/input_type_template.erb", dir
115
+ template "tests/update_test_template.erb", dir
116
+ end
117
+
118
+ def generate_delete_test
119
+ filename = "delete_" + @snake_case_name + "_spec.rb"
120
+ dir = "spec/requests/" + filename
121
+
122
+ template "tests/delete_test_template.erb", dir
101
123
  end
102
124
 
103
125
  def parse_variables
@@ -136,10 +158,44 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
136
158
  str += type + ', required: false'
137
159
  str
138
160
  }
161
+ end
162
+
163
+ def generate_create_test_lines
164
+ @create_test_define_line =
165
+ @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
166
+ name = field[:name].camelize
167
+ name[0] = name[0].downcase
168
+ str = "$" + name + ": " + cast_to_graphql_input(field)
169
+ if field[:required].present? then str += "!" end
170
+ str
171
+ }.join(', ')
172
+
173
+ @create_test_input_line =
174
+ @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
175
+ name = field[:name].camelize
176
+ name[0] = name[0].downcase
177
+ str = name + ": " + "$" + name
178
+ }.join(', ')
179
+ end
139
180
 
140
- # print_array(@update_mutation_lines, "Update mutation lines")
181
+ def generate_update_test_lines
182
+ @update_test_define_line =
183
+ @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
184
+ name = field[:name].camelize
185
+ name[0] = name[0].downcase
186
+ str = "$" + name + ": " + cast_to_graphql_input(field)
187
+ str
188
+ }.join(', ')
189
+
190
+ @update_test_input_line =
191
+ @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
192
+ name = field[:name].camelize
193
+ name[0] = name[0].downcase
194
+ str = name + ": " + "$" + name
195
+ }.join(', ')
141
196
  end
142
197
 
198
+
143
199
  def generate_create_mutation_lines
144
200
  @create_mutation_lines =
145
201
  @parsed_fields.map{|field|
@@ -165,29 +221,6 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
165
221
  end
166
222
  str
167
223
  }
168
-
169
- # print_array(@create_mutation_lines, "CREATE mutation lines")
170
- end
171
-
172
- def generate_create_test_lines
173
- @create_test_define_line =
174
- @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
175
- name = field[:name].camelize
176
- name[0] = name[0].downcase
177
- str = "$" + name + ": " + cast_to_graphql(field)
178
- if field[:required].present? then str += "!" end
179
- str
180
- }.join(', ')
181
-
182
- @create_test_input_line =
183
- @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
184
- name = field[:name].camelize
185
- name[0] = name[0].downcase
186
- str = name + ": " + "$" + name
187
- }.join(', ')
188
-
189
- puts @create_test_define_line + " <<<< DEFINE"
190
- puts @create_test_input_line + " <<<< INPUT"
191
224
  end
192
225
 
193
226
  def generate_type_fields
@@ -209,8 +242,6 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
209
242
  if field[:required].present? then str += ', null: false' end
210
243
  str
211
244
  }
212
-
213
- # print_array(@type_fields, "Type fields")
214
245
  end
215
246
 
216
247
  def generate_model_lines
@@ -218,16 +249,13 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
218
249
  @parsed_fields
219
250
  .filter{|field| field[:type] == 'references'}
220
251
  .map{|field|
221
- str = 'has_many :'
252
+ str = 'belongs_to :'
222
253
  if field[:reference].present?
223
254
  str += field[:reference].underscore
224
255
  end
225
256
 
226
- str += ', dependent: :destroy'
227
257
  str
228
258
  }
229
-
230
- # print_array(@model_lines, "Model lines")
231
259
  end
232
260
 
233
261
  def migration_fields
@@ -240,8 +268,6 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
240
268
  if field[:required].present? then str += ', null: false' end
241
269
  str
242
270
  }
243
-
244
- # print_array(@migration_fields, "Migration lines")
245
271
  end
246
272
 
247
273
  #
@@ -270,6 +296,18 @@ class GraphqlModelGenerator < Rails::Generators::NamedBase
270
296
  if type == 'Datetime' then type = 'String'
271
297
  elsif type == 'Json' then type = 'GraphQL::Types::JSON'
272
298
  elsif type == 'Boolean' then type = 'GraphQL::Types::Boolean'
299
+ elsif type == 'Integer' then type = 'Int'
300
+ end
301
+ type
302
+ end
303
+
304
+ def cast_to_graphql_input(field)
305
+ type = field[:type].camelize
306
+
307
+ if type == 'Datetime' then type = 'String'
308
+ elsif type == 'Json' then type = 'JSON'
309
+ elsif type == 'Boolean' then type = 'Boolean'
310
+ elsif type == 'Integer' then type = 'Int'
273
311
  end
274
312
  type
275
313
  end
@@ -0,0 +1,39 @@
1
+ RSpec.describe 'Delete<%= @camelize_name %>', type: :request do
2
+ include_context 'authenticated user'
3
+
4
+ def query()
5
+ <%= " <<~GQL" %>
6
+ mutation Delete<%= @camelize_name %>($id: ID!) {
7
+ delete<%= @camelize_name %>(input: {id: $id}) {
8
+ id
9
+ <%=
10
+ @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
11
+ var = field[:name].camelize
12
+ var[0] = var[0].downcase
13
+ var
14
+ }.join("\n ")
15
+ %>
16
+ }
17
+ }
18
+ GQL
19
+ end
20
+
21
+ it 'delete_<%= @snake_case_name %> success' do
22
+ <%= @snake_case_name%> = create(:<%= @snake_case_name %>)
23
+ variables = { id: <%= @snake_case_name%>.id }
24
+
25
+ json = graphql(query, variables: variables)
26
+ data = json['delete<%= @camelize_name %>']
27
+
28
+ expect(data).to include('id' => <%= @snake_case_name%>.id)
29
+ <%=
30
+ @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
31
+ var = field[:name].camelize
32
+ var[0] = var[0].downcase
33
+ "expect(data).to include('#{var}' => updated_#{@snake_case_name}.#{field[:name]})"
34
+ }.join("\n ")
35
+ %>
36
+
37
+ expect(<%= @camelize_name %>.count).to eq(0)
38
+ end
39
+ end
@@ -0,0 +1,47 @@
1
+ FactoryBot.define do
2
+ factory :<%= @snake_case_name %> do
3
+ <%=
4
+ @parsed_fields.map{|field|
5
+ value =
6
+ case field[:type]
7
+ when "string"
8
+ " \"My #{field[:name]} \" + rand(1..10000).to_s"
9
+ when "integer"
10
+ "rand(1..10000)"
11
+ when "boolean"
12
+ "false"
13
+ when "json"
14
+ {hello: :world, new: 1}
15
+ else
16
+ 'nil'
17
+ end
18
+
19
+ if field[:array].present? and !field[:reference].present? then value = "[" + value + "]" end
20
+ "#{field[:name]} { #{value} }"
21
+ }.join("\n ")
22
+ %>
23
+
24
+ factory :updated_<%= @snake_case_name %> do
25
+ <%=
26
+ @parsed_fields.map{|field|
27
+ value =
28
+ case field[:type]
29
+ when "string"
30
+ " \"My #{field[:name]} updated \" + rand(1..10000).to_s"
31
+ when "integer"
32
+ "rand(1..10000)"
33
+ when "boolean"
34
+ "false"
35
+ when "json"
36
+ {hello: :updated_world, updated: 100}
37
+ else
38
+ 'nil'
39
+ end
40
+
41
+ if field[:array].present? and !field[:reference].present? then value = "[" + value + "]" end
42
+ " #{field[:name]} { #{value} }"
43
+ }.join("\n ")
44
+ %>
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,38 @@
1
+ RSpec.describe 'Update<%= @camelize_name %>', type: :request do
2
+ include_context 'authenticated user'
3
+
4
+ def query()
5
+ <%= " <<~GQL" %>
6
+ mutation Update<%= @camelize_name %>(<%= @update_test_define_line %>) {
7
+ update<%= @camelize_name %>(input: {<%= @update_test_input_line %>}) {
8
+ id
9
+ <%=
10
+ @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
11
+ var = field[:name].camelize
12
+ var[0] = var[0].downcase
13
+ var
14
+ }.join("\n ")
15
+ %>
16
+ }
17
+ }
18
+ GQL
19
+ end
20
+
21
+ it 'update_<%= @snake_case_name %> success' do
22
+ <%= @snake_case_name%> = create(:<%= @snake_case_name %>)
23
+ updated_<%= @snake_case_name%> = build(:updated_<%= @snake_case_name %>)
24
+ variables = as_json(updated_<%= @snake_case_name%>)
25
+
26
+ json = graphql(query, variables: variables)
27
+ data = json['update<%= @camelize_name %>']
28
+
29
+ expect(data).to include('id' => <%= @snake_case_name%>.id)
30
+ <%=
31
+ @parsed_fields.filter{|f| !f[:reference].present? }.map{|field|
32
+ var = field[:name].camelize
33
+ var[0] = var[0].downcase
34
+ "expect(data).to include('#{var}' => updated_#{@snake_case_name}.#{field[:name]})"
35
+ }.join("\n ")
36
+ %>
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module GraphqlHelperGenerator
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.14"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql_helper_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Savinov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-17 00:00:00.000000000 Z
11
+ date: 2022-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -55,6 +55,7 @@ files:
55
55
  - graphql_helper_generator-0.0.10.gem
56
56
  - graphql_helper_generator-0.0.11.gem
57
57
  - graphql_helper_generator-0.0.12.gem
58
+ - graphql_helper_generator-0.0.13.gem
58
59
  - graphql_helper_generator-0.0.9.gem
59
60
  - lib/graphql_helper_generator.rb
60
61
  - lib/graphql_helper_generator/graphql_model/USAGE
@@ -68,6 +69,9 @@ files:
68
69
  - lib/graphql_helper_generator/graphql_model/templates/mutations/delete_mutation_template.erb
69
70
  - lib/graphql_helper_generator/graphql_model/templates/mutations/update_mutation_template.erb
70
71
  - lib/graphql_helper_generator/graphql_model/templates/tests/create_test.erb
72
+ - lib/graphql_helper_generator/graphql_model/templates/tests/delete_test_template.erb
73
+ - lib/graphql_helper_generator/graphql_model/templates/tests/factory_template.erb
74
+ - lib/graphql_helper_generator/graphql_model/templates/tests/update_test_template.erb
71
75
  - lib/graphql_helper_generator/railtie.rb
72
76
  - lib/graphql_helper_generator/version.rb
73
77
  homepage: