graphiti_scaffold_generator 0.1.2 → 0.1.4
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/graphiti_scaffold_generator/generators/rails/scaffold_controller_generator.rb +3 -0
- data/lib/graphiti_scaffold_generator/generators/rails/templates/api_request_spec.rb +54 -24
- data/lib/graphiti_scaffold_generator/generators/rails/templates/routing_spec.rb +53 -0
- data/lib/graphiti_scaffold_generator/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2718e44766428effbfed02407b623b01cbcd17ecd046ce3da9b3284fe6302dc
|
4
|
+
data.tar.gz: 565bcc3aaa7933d18c34971203cb93220de791b6f1a1d788f4a8f67f7bfd4ea4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7248f258a895f6f0229ddaa43f299d7195aa4830c4c3ca37e8c134c8a934b4b7cd0d3b257b8d5229ade79ed20cae82a6b2067ef57e2948e4995f09a81a865133
|
7
|
+
data.tar.gz: bfc15159d09c2b6e16cf1e2d4603dd0514070032a74b667be4646c9f8670797af36b4ce3711f4a8785576dbf72bd04a9b7d7811a3c7e304cef028f81eeb79b80
|
data/Gemfile.lock
CHANGED
@@ -17,6 +17,9 @@ end
|
|
17
17
|
module Rspec
|
18
18
|
module Generators
|
19
19
|
class ScaffoldGenerator < Base
|
20
|
+
class_option :api_version, type: :string,
|
21
|
+
desc: "Defines the version of the api'",
|
22
|
+
default: 'v1'
|
20
23
|
source_paths.unshift File.expand_path('../templates', __FILE__)
|
21
24
|
end
|
22
25
|
end
|
@@ -9,12 +9,12 @@ require 'spec_helper'
|
|
9
9
|
<% module_namespacing do -%>
|
10
10
|
describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request) %> do
|
11
11
|
<% if fbot -%>
|
12
|
-
let(:<%=
|
12
|
+
let(:<%= singular_name %>) { create :<%= singular_name %> }
|
13
13
|
<% if pundit -%>
|
14
14
|
let(:user) { create :user }
|
15
15
|
<% end -%>
|
16
16
|
<% else -%>
|
17
|
-
let(:<%=
|
17
|
+
let(:<%= singular_name %>) { <%= class_name %>.create! valid_attributes }
|
18
18
|
<% end -%>
|
19
19
|
|
20
20
|
# This should return the minimal set of attributes required to create a valid
|
@@ -27,7 +27,7 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
27
27
|
<% attribute_name = attribute.respond_to?(:column_name) ? attribute.column_name : attribute.name -%>
|
28
28
|
<% if links.present? -%>
|
29
29
|
let(:valid_attributes) do
|
30
|
-
attributes_for(:<%=
|
30
|
+
attributes_for(:<%=singular_name%>)
|
31
31
|
.slice(*%i[<%= attribute_name %>])
|
32
32
|
.merge(
|
33
33
|
<% links.each do |relation| -%>
|
@@ -36,7 +36,7 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
36
36
|
)
|
37
37
|
end
|
38
38
|
<% else -%>
|
39
|
-
let(:valid_attributes) {attributes_for(:<%=
|
39
|
+
let(:valid_attributes) {attributes_for(:<%=singular_name%>).slice *%i[<%= attribute_name %>]}
|
40
40
|
<% end -%>
|
41
41
|
<% else -%>
|
42
42
|
let(:valid_attributes) {
|
@@ -69,21 +69,51 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
69
69
|
|
70
70
|
<% unless options[:singleton] -%>
|
71
71
|
describe 'GET /index' do
|
72
|
+
subject(:get_index) do
|
73
|
+
get <%= plural_name %>_url, headers: valid_headers, as: :json
|
74
|
+
end
|
75
|
+
|
76
|
+
before do
|
77
|
+
<%= singular_name %>
|
78
|
+
end
|
79
|
+
|
72
80
|
it "renders a successful response" do
|
73
|
-
|
74
|
-
get <%= index_helper %>_url, headers: valid_headers, as: :json
|
81
|
+
get_index
|
75
82
|
expect(response).to be_successful
|
76
83
|
end
|
84
|
+
|
85
|
+
it 'renders content_type "application/vnd.api+json; charset=utf-8"' do
|
86
|
+
get_index
|
87
|
+
expect(response.content_type).to eq("application/vnd.api+json; charset=utf-8")
|
88
|
+
end
|
89
|
+
|
90
|
+
it "renders a JSON response with an Array of UserAbsences" do
|
91
|
+
get_index
|
92
|
+
expect(JSON.parse(response.body)['data']).to be_an Array
|
93
|
+
expect(JSON.parse(response.body)['data'].first['id']).to eq <%= singular_name %>.id
|
94
|
+
end
|
77
95
|
end
|
78
96
|
<% end -%>
|
79
97
|
|
80
98
|
describe 'GET /show' do
|
81
|
-
subject(:get_show)
|
99
|
+
subject(:get_show) do
|
100
|
+
get <%= singular_name %>_url(<%= singular_name %>), headers: valid_headers, as: :json
|
101
|
+
end
|
82
102
|
|
83
103
|
it "renders a successful response" do
|
84
104
|
get_show
|
85
105
|
expect(response).to be_successful
|
86
106
|
end
|
107
|
+
|
108
|
+
it 'renders content_type "application/vnd.api+json; charset=utf-8"' do
|
109
|
+
get_show
|
110
|
+
expect(response.content_type).to eq("application/vnd.api+json; charset=utf-8")
|
111
|
+
end
|
112
|
+
|
113
|
+
it "renders a JSON response with the requested <%= singular_name %>" do
|
114
|
+
get_show
|
115
|
+
expect(JSON.parse(response.body)['data']['id']).to eq <%= singular_name %>.id
|
116
|
+
end
|
87
117
|
end
|
88
118
|
|
89
119
|
describe 'POST /create' do
|
@@ -116,7 +146,7 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
116
146
|
expect(response.content_type).to eq("application/vnd.api+json; charset=utf-8")
|
117
147
|
end
|
118
148
|
|
119
|
-
it "renders a JSON response with the new <%=
|
149
|
+
it "renders a JSON response with the new <%= singular_name %>" do
|
120
150
|
post_create
|
121
151
|
expect(JSON.parse(response.body)['data']['id'])
|
122
152
|
.to eq <%= class_name %>.order(:created_at).last.id
|
@@ -140,7 +170,7 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
140
170
|
expect(response.content_type).to eq("application/vnd.api+json; charset=utf-8")
|
141
171
|
end
|
142
172
|
|
143
|
-
it 'renders a JSON response with errors for the new <%=
|
173
|
+
it 'renders a JSON response with errors for the new <%= singular_name %>' do
|
144
174
|
post_create
|
145
175
|
expect(JSON.parse(response.body).dig 'errors', 0, 'meta', 'attribute')
|
146
176
|
.to be_present
|
@@ -150,29 +180,29 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
150
180
|
|
151
181
|
describe 'PATCH /update' do
|
152
182
|
subject(:patch_update) do
|
153
|
-
patch <%=
|
183
|
+
patch <%= singular_name %>_url(<%= singular_name %>),
|
154
184
|
params: { data: data },
|
155
185
|
headers: valid_headers,
|
156
186
|
as: :json
|
157
187
|
end
|
158
188
|
let(:data) do
|
159
189
|
{
|
160
|
-
id: <%=
|
161
|
-
type: '<%=
|
190
|
+
id: <%= singular_name %>.id.to_s,
|
191
|
+
type: '<%= singular_name %>s',
|
162
192
|
attributes: new_attributes,
|
163
193
|
}
|
164
194
|
end
|
165
195
|
let(:new_attributes) do
|
166
196
|
skip("Add a hash of attributes valid for <%= class_name %>")
|
167
|
-
{
|
197
|
+
{ <%= attribute_name %>: 'New <%= attribute_name %>' }
|
168
198
|
end
|
169
199
|
|
170
200
|
context "with valid parameters" do
|
171
|
-
it "updates the requested <%=
|
201
|
+
it "updates the requested <%= singular_name %>" do
|
172
202
|
patch_update
|
173
|
-
<%=
|
203
|
+
<%= singular_name %>.reload
|
174
204
|
skip("Add assertions for updated state")
|
175
|
-
<%=
|
205
|
+
expect(<%= singular_name %>.<%= attribute_name %>). to eq 'New <%= attribute_name %>'
|
176
206
|
end
|
177
207
|
|
178
208
|
it 'returns :ok' do
|
@@ -185,17 +215,17 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
185
215
|
expect(response.content_type).to eq("application/vnd.api+json; charset=utf-8")
|
186
216
|
end
|
187
217
|
|
188
|
-
it "renders a JSON response with the <%=
|
218
|
+
it "renders a JSON response with the <%= singular_name %>" do
|
189
219
|
patch_update
|
190
|
-
expect(JSON.parse(response.body)['data']['id']).to eq <%=
|
220
|
+
expect(JSON.parse(response.body)['data']['id']).to eq <%= singular_name %>.id
|
191
221
|
end
|
192
222
|
end
|
193
223
|
|
194
224
|
context "with invalid parameters" do
|
195
225
|
let(:new_attributes) { invalid_attributes }
|
196
226
|
|
197
|
-
it "does not update the requested <%=
|
198
|
-
expect { patch_update }.not_to change <%=
|
227
|
+
it "does not update the requested <%= singular_name %>" do
|
228
|
+
expect { patch_update }.not_to change <%= singular_name %>, :reload
|
199
229
|
end
|
200
230
|
|
201
231
|
it 'returns :unprocessable_entity' do
|
@@ -208,7 +238,7 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
208
238
|
expect(response.content_type).to eq("application/vnd.api+json; charset=utf-8")
|
209
239
|
end
|
210
240
|
|
211
|
-
it "renders a JSON response with errors for the new <%=
|
241
|
+
it "renders a JSON response with errors for the new <%= singular_name %>" do
|
212
242
|
patch_update
|
213
243
|
expect(JSON.parse(response.body).dig 'errors', 0, 'meta', 'attribute')
|
214
244
|
.to be_present
|
@@ -218,14 +248,14 @@ describe "Request /<%= name.underscore.pluralize %>", <%= type_metatag(:request)
|
|
218
248
|
|
219
249
|
describe "DELETE /destroy" do
|
220
250
|
subject(:delete_destroy) do
|
221
|
-
delete <%=
|
251
|
+
delete <%= singular_name %>_url(id: <%= singular_name %>.to_param)
|
222
252
|
end
|
223
253
|
|
224
254
|
before do
|
225
|
-
<%=
|
255
|
+
<%= singular_name %> # we need something to destroy
|
226
256
|
end
|
227
257
|
|
228
|
-
it "destroys the requested <%=
|
258
|
+
it "destroys the requested <%= singular_name %>" do
|
229
259
|
expect { delete_destroy }.to change(<%= class_name %>, :count).by -1
|
230
260
|
end
|
231
261
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<% prefix = "/api/#{options[:api_version]}" if options[:api] -%>
|
2
|
+
require "rails_helper"
|
3
|
+
|
4
|
+
<% module_namespacing do -%>
|
5
|
+
describe <%= controller_class_name %>Controller, <%= type_metatag(:routing) %> do
|
6
|
+
describe "routing" do
|
7
|
+
<% unless options[:singleton] -%>
|
8
|
+
it "routes to #index" do
|
9
|
+
expect(get: "<%= prefix %>/<%= ns_table_name %>")
|
10
|
+
.to route_to "<%= ns_table_name %>#index", "format"=>:jsonapi
|
11
|
+
end
|
12
|
+
|
13
|
+
<% end -%>
|
14
|
+
<% unless options[:api] -%>
|
15
|
+
it "routes to #new" do
|
16
|
+
expect(get: "/<%= ns_table_name %>/new").to route_to("<%= ns_table_name %>#new")
|
17
|
+
end
|
18
|
+
|
19
|
+
<% end -%>
|
20
|
+
it "routes to #show" do
|
21
|
+
expect(get: "<%= prefix %>/<%= ns_table_name %>/1")
|
22
|
+
.to route_to "<%= ns_table_name %>#show", id: "1", "format"=>:jsonapi
|
23
|
+
end
|
24
|
+
|
25
|
+
<% unless options[:api] -%>
|
26
|
+
it "routes to #edit" do
|
27
|
+
expect(get: "/<%= ns_table_name %>/1/edit").to route_to("<%= ns_table_name %>#edit", id: "1")
|
28
|
+
end
|
29
|
+
|
30
|
+
<% end -%>
|
31
|
+
|
32
|
+
it "routes to #create" do
|
33
|
+
expect(post: "<%= prefix %>/<%= ns_table_name %>")
|
34
|
+
.to route_to "<%= ns_table_name %>#create", "format"=>:jsonapi
|
35
|
+
end
|
36
|
+
|
37
|
+
it "routes to #update via PUT" do
|
38
|
+
expect(put: "<%= prefix %>/<%= ns_table_name %>/1")
|
39
|
+
.to route_to "<%= ns_table_name %>#update", id: "1", "format"=>:jsonapi
|
40
|
+
end
|
41
|
+
|
42
|
+
it "routes to #update via PATCH" do
|
43
|
+
expect(patch: "<%= prefix %>/<%= ns_table_name %>/1")
|
44
|
+
.to route_to "<%= ns_table_name %>#update", id: "1", "format"=>:jsonapi
|
45
|
+
end
|
46
|
+
|
47
|
+
it "routes to #destroy" do
|
48
|
+
expect(delete: "<%= prefix %>/<%= ns_table_name %>/1")
|
49
|
+
.to route_to "<%= ns_table_name %>#destroy", id: "1", "format"=>:jsonapi
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
<% end -%>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphiti_scaffold_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Kulikov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
The graphiti gem has no support for scaffold generator.
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- lib/graphiti_scaffold_generator/generators/rails/scaffold_controller_generator.rb
|
38
38
|
- lib/graphiti_scaffold_generator/generators/rails/templates/api_controller.rb
|
39
39
|
- lib/graphiti_scaffold_generator/generators/rails/templates/api_request_spec.rb
|
40
|
+
- lib/graphiti_scaffold_generator/generators/rails/templates/routing_spec.rb
|
40
41
|
- lib/graphiti_scaffold_generator/railtie.rb
|
41
42
|
- lib/graphiti_scaffold_generator/version.rb
|
42
43
|
homepage: https://github.com/dima4p/graphiti_scaffold_generator
|
@@ -59,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
60
|
- !ruby/object:Gem::Version
|
60
61
|
version: '0'
|
61
62
|
requirements: []
|
62
|
-
rubygems_version: 3.
|
63
|
+
rubygems_version: 3.4.12
|
63
64
|
signing_key:
|
64
65
|
specification_version: 4
|
65
66
|
summary: When gem 'graphiti' is in use generates code for app/resources and /spec/resources
|