graphql_scaffold_fan 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/Gemfile +2 -2
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/bin/console +3 -3
- data/graphql_scaffold_fan.gemspec +9 -9
- data/lib/generators/graphql_scaffold/init_generator.rb +46 -0
- data/lib/generators/graphql_scaffold/mutation_generator.rb +55 -1
- data/lib/generators/graphql_scaffold/type_generator.rb +1 -1
- data/lib/generators/templates/admin_controller.haml +64 -0
- data/lib/generators/templates/admin_filter.haml +1 -1
- data/lib/generators/templates/admin_schema.haml +42 -0
- data/lib/generators/templates/base_admin_mutation.haml +4 -0
- data/lib/generators/templates/list_metadata_type.haml +7 -0
- data/lib/generators/templates/mutation_create.haml +7 -2
- data/lib/generators/templates/mutation_create_test.haml +32 -0
- data/lib/generators/templates/mutation_delete.haml +4 -2
- data/lib/generators/templates/mutation_delete_test.haml +37 -0
- data/lib/generators/templates/mutation_update.haml +6 -1
- data/lib/generators/templates/mutation_update_test.haml +35 -0
- data/lib/graphql_scaffold_fan/version.rb +1 -1
- data/lib/graphql_scaffold_fan.rb +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ba50341e941f5a2367cb3a550f3701fc59eacbbb550184a9e697229b07e8ae4
|
4
|
+
data.tar.gz: 687c142252f59cb524e2e3f01b8bc3aac8ed8cca769659e4cf5171b2c5710de1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63d9ae28ce65ecae2f72ccddde40639eb6185624b12ce6a585d48ff8f70d858d73fa923b6ef3b25b9529c849b17f3d425d87e585a4cb145c79faed8267ab4b39
|
7
|
+
data.tar.gz: d482fe72bcffba00321c07c0e708864182812655197a415319f8eeca4d695c5d4cf2d6f33edd79ce02a4975c84d3bfe79db938b32bc494be7d469fe07e84ceef
|
data/.DS_Store
CHANGED
Binary file
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -32,4 +32,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
32
|
|
33
33
|
## Contributing
|
34
34
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
35
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/FanZhangYYDSPixelforce/graphql_scaffold.
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'graphql_scaffold_fan'
|
6
6
|
|
7
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
8
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -11,5 +11,5 @@ require "graphql_scaffold_fan"
|
|
11
11
|
# require "pry"
|
12
12
|
# Pry.start
|
13
13
|
|
14
|
-
require
|
14
|
+
require 'irb'
|
15
15
|
IRB.start(__FILE__)
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative 'lib/graphql_scaffold_fan/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
6
|
+
spec.name = 'graphql_scaffold_fan'
|
7
7
|
spec.version = GraphqlScaffoldFan::VERSION
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
8
|
+
spec.authors = ['Fan Zhang']
|
9
|
+
spec.email = ['fan.zhang@pixelforce.com.au']
|
10
10
|
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
11
|
+
spec.summary = 'Helping creating graphql files'
|
12
|
+
spec.description = 'Helping creating graphql files'
|
13
13
|
spec.homepage = ''
|
14
14
|
|
15
15
|
# Specify which files should be added to the gem when it is released.
|
@@ -17,13 +17,13 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
18
18
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
19
19
|
end
|
20
|
-
spec.bindir =
|
20
|
+
spec.bindir = 'exe'
|
21
21
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
22
|
-
spec.require_paths = [
|
22
|
+
spec.require_paths = ['lib']
|
23
23
|
|
24
24
|
# Uncomment to register a new dependency of your gem
|
25
25
|
# spec.add_dependency "example-gem", "~> 1.0"
|
26
26
|
|
27
27
|
# For more information and examples about making a new gem, checkout our
|
28
28
|
# guide at: https://bundler.io/guides/creating_gem.html
|
29
|
-
end
|
29
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
module GraphqlScaffold
|
3
|
+
module Generators
|
4
|
+
class InitGenerator < Rails::Generators::NamedBase
|
5
|
+
source_root File.expand_path('../templates', __dir__)
|
6
|
+
|
7
|
+
def create_ListMetadataType_file
|
8
|
+
dir_path = 'app/graphql/types/admin'
|
9
|
+
file_path = dir_path + '/list_metadata_type.rb'
|
10
|
+
FileUtils.mkdir_p(dir_path) unless File.exist?(dir_path)
|
11
|
+
|
12
|
+
if File.exist?(file_path)
|
13
|
+
p 'File list_metadata_type.rb already exists'
|
14
|
+
else
|
15
|
+
template 'list_metadata_type.haml', file_path
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_admin_schema_file
|
20
|
+
@top_folder_name = File.basename(Dir.getwd)
|
21
|
+
dir_path = 'app/graphql'
|
22
|
+
file_path = dir_path + "#{@top_folder_name.underscore}_admin_schema.rb"
|
23
|
+
FileUtils.mkdir_p(dir_path) unless File.exist?(dir_path)
|
24
|
+
|
25
|
+
if File.exist?(file_path)
|
26
|
+
p "File #{@top_folder_name}_admin_schema.rb already exists"
|
27
|
+
else
|
28
|
+
template 'admin_schema.haml', file_path
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def create_admin_controller_file
|
33
|
+
@top_folder_name = File.basename(Dir.getwd)
|
34
|
+
dir_path = 'app/controllers'
|
35
|
+
file_path = dir_path + '/admin_graphql_controller.rb'
|
36
|
+
FileUtils.mkdir_p(dir_path) unless File.exist?(dir_path)
|
37
|
+
|
38
|
+
if File.exist?(file_path)
|
39
|
+
p 'File admin_graphql_controller.rb already exists'
|
40
|
+
else
|
41
|
+
template 'admin_controller.haml', file_path
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -4,17 +4,44 @@ module GraphqlScaffold
|
|
4
4
|
class MutationGenerator < Rails::Generators::NamedBase
|
5
5
|
source_root File.expand_path('../templates', __dir__)
|
6
6
|
|
7
|
+
def create_base_admin_mutation_file
|
8
|
+
mutations_dir_path = 'app/graphql/mutations'
|
9
|
+
generator_path = mutation_type_dir_path + '/base_admin_mutation.rb'
|
10
|
+
|
11
|
+
FileUtils.mkdir_p(mutation_type_dir_path) unless File.exist?(mutation_type_dir_path)
|
12
|
+
|
13
|
+
if File.exist?(generator_path)
|
14
|
+
p 'File base_admin_mutation.rb already exists'
|
15
|
+
else
|
16
|
+
template 'base_admin_mutation.haml', generator_path
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
7
20
|
def create_admin_mutation_folders
|
8
21
|
admin_mutation_dir_path = 'app/graphql/mutations/admin'
|
9
22
|
generator_dir_path = admin_mutation_dir_path + ("/#{@module_name.underscore}" if @module_name.present?).to_s
|
10
23
|
@generator_path = generator_dir_path + "/#{file_name}s"
|
11
24
|
|
25
|
+
admin_mutation_test_dir_path = 'spec/graphql/mutations/admin'
|
26
|
+
generator_test_dir_path = admin_mutation_test_dir_path + (if @module_name.present?
|
27
|
+
"/#{@module_name.underscore}"
|
28
|
+
end).to_s
|
29
|
+
@generator_test_path = generator_test_dir_path + "/#{file_name}s"
|
30
|
+
|
12
31
|
FileUtils.mkdir_p(admin_mutation_dir_path) unless File.exist?(admin_mutation_dir_path)
|
32
|
+
FileUtils.mkdir_p(admin_mutation_test_dir_path) unless File.exist?(admin_mutation_test_dir_path)
|
33
|
+
|
13
34
|
if File.exist?(@generator_path)
|
14
35
|
p 'Folder already exist'
|
15
36
|
elsif Dir.mkdir(@generator_path)
|
16
37
|
p 'Folder created successfully'
|
17
38
|
end
|
39
|
+
|
40
|
+
if File.exist?(@generator_test_path)
|
41
|
+
p 'Mutation Test Folder already exist'
|
42
|
+
elsif Dir.mkdir(@generator_test_path)
|
43
|
+
p 'Mutation Test Folder created successfully'
|
44
|
+
end
|
18
45
|
end
|
19
46
|
|
20
47
|
def create_admin_mutation_create_file
|
@@ -26,6 +53,15 @@ module GraphqlScaffold
|
|
26
53
|
template 'mutation_create.haml', create_file_path
|
27
54
|
end
|
28
55
|
end
|
56
|
+
|
57
|
+
if File.exist?(@generator_test_path)
|
58
|
+
create_test_file_path = @generator_test_path + "/create_#{file_name}_spec.rb"
|
59
|
+
if File.exist?(create_test_file_path)
|
60
|
+
p 'Mutation_Create_Test File already exist'
|
61
|
+
else
|
62
|
+
template 'mutation_create_test.haml', create_test_file_path
|
63
|
+
end
|
64
|
+
end
|
29
65
|
end
|
30
66
|
|
31
67
|
def create_admin_mutation_update_file
|
@@ -37,6 +73,15 @@ module GraphqlScaffold
|
|
37
73
|
template 'mutation_update.haml', update_file_path
|
38
74
|
end
|
39
75
|
end
|
76
|
+
|
77
|
+
if File.exist?(@generator_test_path)
|
78
|
+
update_test_file_path = @generator_test_path + "/update_#{file_name}_spec.rb"
|
79
|
+
if File.exist?(update_test_file_path)
|
80
|
+
p 'Mutation_Update_Test File already exist'
|
81
|
+
else
|
82
|
+
template 'mutation_update_test.haml', update_test_file_path
|
83
|
+
end
|
84
|
+
end
|
40
85
|
end
|
41
86
|
|
42
87
|
def create_admin_mutation_delete_file
|
@@ -48,6 +93,15 @@ module GraphqlScaffold
|
|
48
93
|
template 'mutation_delete.haml', delete_file_path
|
49
94
|
end
|
50
95
|
end
|
96
|
+
|
97
|
+
if File.exist?(@generator_test_path)
|
98
|
+
delete_test_file_path = @generator_test_path + "/delete_#{file_name}_spec.rb"
|
99
|
+
if File.exist?(delete_test_file_path)
|
100
|
+
p 'Mutation_Delete_Test File already exist'
|
101
|
+
else
|
102
|
+
template 'mutation_delete_test.haml', delete_test_file_path
|
103
|
+
end
|
104
|
+
end
|
51
105
|
end
|
52
106
|
|
53
107
|
def create_mutation_type_file
|
@@ -77,4 +131,4 @@ module GraphqlScaffold
|
|
77
131
|
end
|
78
132
|
end
|
79
133
|
end
|
80
|
-
end
|
134
|
+
end
|
@@ -9,7 +9,7 @@ module GraphqlScaffold
|
|
9
9
|
|
10
10
|
src_file = "app/graphql/types/#{file_name}_type.rb"
|
11
11
|
dst_dir = 'app/graphql/types/admin'
|
12
|
-
if File.exist?
|
12
|
+
if File.exist?("app/graphql/types/#{file_name}_type.rb")
|
13
13
|
FileUtils.mv(src_file, dst_dir)
|
14
14
|
file = File.open("#{dst_dir}/#{file_name}_type.rb")
|
15
15
|
file_data = file.read
|
@@ -0,0 +1,64 @@
|
|
1
|
+
class AdminGraphqlController < ApplicationController
|
2
|
+
include GraphqlDevise::Concerns::SetUserByToken
|
3
|
+
|
4
|
+
attr_reader :current_resource
|
5
|
+
|
6
|
+
# If accessing from outside this domain, nullify the session
|
7
|
+
# This allows for outside API access while preventing CSRF attacks,
|
8
|
+
# but you'll have to authenticate your user separately
|
9
|
+
protect_from_forgery with: :null_session
|
10
|
+
after_action :track_action
|
11
|
+
|
12
|
+
def execute
|
13
|
+
variables = prepare_variables(params[:variables])
|
14
|
+
query = params[:query]
|
15
|
+
operation_name = params[:operationName]
|
16
|
+
|
17
|
+
context = gql_devise_context(AdminUser)
|
18
|
+
|
19
|
+
@current_resource = context[:current_resource]
|
20
|
+
|
21
|
+
result = <%= @top_folder_name.camelize %>AdminSchema.execute(query, variables: variables, context: context, operation_name: operation_name)
|
22
|
+
render json: result
|
23
|
+
rescue StandardError => e
|
24
|
+
raise e unless Rails.env.development?
|
25
|
+
|
26
|
+
handle_error_in_development(e)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
# Handle variables in form data, JSON body, or a blank value
|
32
|
+
def prepare_variables(variables_param)
|
33
|
+
case variables_param
|
34
|
+
when String
|
35
|
+
if variables_param.present?
|
36
|
+
JSON.parse(variables_param) || {}
|
37
|
+
else
|
38
|
+
{}
|
39
|
+
end
|
40
|
+
when Hash
|
41
|
+
variables_param
|
42
|
+
when ActionController::Parameters
|
43
|
+
variables_param.to_unsafe_hash # GraphQL-Ruby will validate name and type of incoming variables.
|
44
|
+
when nil
|
45
|
+
{}
|
46
|
+
else
|
47
|
+
raise ArgumentError, "Unexpected parameter: #{variables_param}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def handle_error_in_development(err)
|
52
|
+
logger.error err.message
|
53
|
+
logger.error err.backtrace.join("\n")
|
54
|
+
|
55
|
+
render json: { errors: [{ message: err.message, backtrace: err.backtrace }], data: {} }, status: :internal_server_error
|
56
|
+
end
|
57
|
+
|
58
|
+
def track_action
|
59
|
+
variables = prepare_variables(params[:variables])
|
60
|
+
query = params[:query]
|
61
|
+
operation_name = params[:operationName]
|
62
|
+
ahoy.track 'Admin Portal', query: query, variables: variables, operation_name: operation_name
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class <%= @top_folder_name.camelize %>AdminSchema < GraphQL::Schema
|
2
|
+
use GraphQL::Tracing::NewRelicTracing, set_transaction_name: true
|
3
|
+
use GraphqlDevise::SchemaPlugin.new(
|
4
|
+
query: Types::Query::AdminUserQueryType,
|
5
|
+
mutation: Types::Mutation::AdminUserMutationType,
|
6
|
+
resource_loaders: [
|
7
|
+
GraphqlDevise::ResourceLoader.new(AdminUser, only: %i[login logout])
|
8
|
+
]
|
9
|
+
)
|
10
|
+
|
11
|
+
mutation(Types::Mutation::AdminUserMutationType)
|
12
|
+
query(Types::Query::AdminUserQueryType)
|
13
|
+
|
14
|
+
use GraphQL::Batch
|
15
|
+
|
16
|
+
# Union and Interface Resolution
|
17
|
+
def self.resolve_type(_abstract_type, _obj, _ctx)
|
18
|
+
# TODO: Implement this function
|
19
|
+
# to return the correct object type for `obj`
|
20
|
+
raise(GraphQL::RequiredImplementationMissingError)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Relay-style Object Identification:
|
24
|
+
|
25
|
+
# Return a string UUID for `object`
|
26
|
+
def self.id_from_object(object, type_definition, _query_ctx)
|
27
|
+
# Here's a simple implementation which:
|
28
|
+
# - joins the type name & object.id
|
29
|
+
# - encodes it with base64:
|
30
|
+
GraphQL::Schema::UniqueWithinType.encode(type_definition.name, object.id)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Given a string UUID, find the object
|
34
|
+
def self.object_from_id(id, _query_ctx)
|
35
|
+
# For example, to decode the UUIDs generated above:
|
36
|
+
type_name, item_id = GraphQL::Schema::UniqueWithinType.decode(id)
|
37
|
+
#
|
38
|
+
# Then, based on `type_name` and `id`
|
39
|
+
# find an object in your application
|
40
|
+
# ...
|
41
|
+
end
|
42
|
+
end
|
@@ -4,8 +4,13 @@ module Mutations
|
|
4
4
|
|
5
5
|
type Types::Admin::<%= class_name %>Type
|
6
6
|
|
7
|
-
def resolve(
|
8
|
-
|
7
|
+
def resolve(**args)
|
8
|
+
<%= class_name.underscore %> = <%= class_name %>.new(args)
|
9
|
+
if <%= class_name.underscore %>.save
|
10
|
+
<%= class_name.underscore %>
|
11
|
+
else
|
12
|
+
context.add_error(GraphQL::ExecutionError.new( <%= class_name.underscore %>.errors.full_messages.join(', ')))
|
13
|
+
end
|
9
14
|
end
|
10
15
|
end
|
11
16
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
RSpec.describe Mutations::Admin::<%= class_name %>s::Create<%= class_name %>, type: :request do
|
4
|
+
let(:admin_user) { create(:admin_user) }
|
5
|
+
|
6
|
+
describe '.resolve' do
|
7
|
+
it 'should create' do
|
8
|
+
variables = <<~GQL
|
9
|
+
{
|
10
|
+
}
|
11
|
+
GQL
|
12
|
+
|
13
|
+
expect do
|
14
|
+
sign_in admin_user
|
15
|
+
post '/api/admin/graphql', headers: admin_user.create_new_auth_token, params: { query: query, variables: variables }
|
16
|
+
expect(response).to have_http_status(:success)
|
17
|
+
json = JSON.parse(response.body)
|
18
|
+
data = json['data']['create<%= class_name %>']
|
19
|
+
end.to change { <%= class_name %>.count }.by(1)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def query
|
24
|
+
<<~GQL
|
25
|
+
mutation create<%= class_name %>() {
|
26
|
+
create<%= class_name %>(){
|
27
|
+
id
|
28
|
+
}
|
29
|
+
}
|
30
|
+
GQL
|
31
|
+
end
|
32
|
+
end
|
@@ -4,8 +4,10 @@ module Mutations
|
|
4
4
|
|
5
5
|
type Types::Admin::<%= class_name %>Type
|
6
6
|
|
7
|
-
def resolve(id
|
8
|
-
|
7
|
+
def resolve(id:)
|
8
|
+
<%= class_name.underscore %> = ::<%= class_name %>.find(id)
|
9
|
+
<%= class_name.underscore %>.destroy!
|
10
|
+
<%= class_name.underscore %>
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
RSpec.describe Mutations::Admin::<%= class_name %>s::Delete<%= class_name %>, type: :request do
|
4
|
+
let(:admin_user) { create :admin_user }
|
5
|
+
let(:<%= class_name.underscore %>) { create :<%= class_name.underscore %> }
|
6
|
+
|
7
|
+
describe '.resolve' do
|
8
|
+
it 'should delete' do
|
9
|
+
admin_user = create(:admin_user)
|
10
|
+
sign_in admin_user
|
11
|
+
|
12
|
+
variables = <<~GQL
|
13
|
+
{
|
14
|
+
"id": "#{<%= class_name.underscore %>.id}"
|
15
|
+
}
|
16
|
+
GQL
|
17
|
+
|
18
|
+
headers = admin_user.create_new_auth_token
|
19
|
+
|
20
|
+
post '/api/admin/graphql', headers: headers, params: { query: query, variables: variables }
|
21
|
+
expect(response).to have_http_status(:success)
|
22
|
+
json = JSON.parse(response.body)
|
23
|
+
|
24
|
+
expect { <%= class_name %>.find(<%= class_name.underscore %>.id) }.to raise_error ActiveRecord::RecordNotFound
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def query
|
29
|
+
<<~GQL
|
30
|
+
mutation delete<%= class_name %>($id: ID!) {
|
31
|
+
delete<%= class_name %>(id: $id){
|
32
|
+
id
|
33
|
+
}
|
34
|
+
}
|
35
|
+
GQL
|
36
|
+
end
|
37
|
+
end
|
@@ -5,7 +5,12 @@ module Mutations
|
|
5
5
|
type Types::Admin::<%= class_name %>Type
|
6
6
|
|
7
7
|
def resolve(id:, **args)
|
8
|
-
|
8
|
+
<%= class_name.underscore %> = <%= class_name %>.find(id)
|
9
|
+
if <%= class_name.underscore %>.update(args)
|
10
|
+
<%= class_name.underscore %>
|
11
|
+
else
|
12
|
+
context.add_error(GraphQL::ExecutionError.new(<%= class_name.underscore %>.errors.full_messages.join(', ')))
|
13
|
+
end
|
9
14
|
end
|
10
15
|
end
|
11
16
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
RSpec.describe Mutations::Admin::<%= class_name %>s::Update<%= class_name %>, type: :request do
|
4
|
+
let(:admin_user) { create :admin_user }
|
5
|
+
let(:<%= class_name.underscore %>) { create :<%= class_name.underscore %> }
|
6
|
+
|
7
|
+
describe '.resolve' do
|
8
|
+
it 'should update' do
|
9
|
+
sign_in admin_user
|
10
|
+
|
11
|
+
variables = <<~GQL
|
12
|
+
{
|
13
|
+
"id": "#{<%= class_name.underscore %>.id}"
|
14
|
+
}
|
15
|
+
GQL
|
16
|
+
|
17
|
+
post '/api/admin/graphql', headers: admin_user.create_new_auth_token, params: { query: query, variables: variables }
|
18
|
+
expect(response).to have_http_status(:success)
|
19
|
+
json = JSON.parse(response.body)
|
20
|
+
|
21
|
+
data = json['data']['update<%= class_name %>']
|
22
|
+
expect(data['id']).to eq <%= class_name.underscore %>.id.to_s
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def query
|
27
|
+
<<~GQL
|
28
|
+
mutation update<%= class_name %>($id: ID!) {
|
29
|
+
update<%= class_name %>(id: $id){
|
30
|
+
id
|
31
|
+
}
|
32
|
+
}
|
33
|
+
GQL
|
34
|
+
end
|
35
|
+
end
|
data/lib/graphql_scaffold_fan.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql_scaffold_fan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fan Zhang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Helping creating graphql files
|
14
14
|
email:
|
@@ -26,15 +26,23 @@ files:
|
|
26
26
|
- bin/console
|
27
27
|
- bin/setup
|
28
28
|
- graphql_scaffold_fan.gemspec
|
29
|
+
- lib/generators/graphql_scaffold/init_generator.rb
|
29
30
|
- lib/generators/graphql_scaffold/mutation_generator.rb
|
30
31
|
- lib/generators/graphql_scaffold/type_generator.rb
|
32
|
+
- lib/generators/templates/admin_controller.haml
|
31
33
|
- lib/generators/templates/admin_filter.haml
|
34
|
+
- lib/generators/templates/admin_schema.haml
|
35
|
+
- lib/generators/templates/base_admin_mutation.haml
|
32
36
|
- lib/generators/templates/base_object.haml
|
37
|
+
- lib/generators/templates/list_metadata_type.haml
|
33
38
|
- lib/generators/templates/mutation_create.haml
|
39
|
+
- lib/generators/templates/mutation_create_test.haml
|
34
40
|
- lib/generators/templates/mutation_delete.haml
|
41
|
+
- lib/generators/templates/mutation_delete_test.haml
|
35
42
|
- lib/generators/templates/mutation_test.haml
|
36
43
|
- lib/generators/templates/mutation_type.haml
|
37
44
|
- lib/generators/templates/mutation_update.haml
|
45
|
+
- lib/generators/templates/mutation_update_test.haml
|
38
46
|
- lib/generators/templates/query_test.haml
|
39
47
|
- lib/generators/templates/query_type.haml
|
40
48
|
- lib/graphql_scaffold_fan.rb
|