Skip to content

Commit 85d8b5f

Browse files
authored
Merge pull request #40 from superslau/master
Add option to use `rawid` in generated tests
2 parents fcb0c01 + 5f4643b commit 85d8b5f

File tree

6 files changed

+36
-8
lines changed

6 files changed

+36
-8
lines changed

lib/generators/graphiti/api_test_generator.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ class ApiTestGenerator < ::Rails::Generators::Base
1313
aliases: ["--actions", "-a"],
1414
desc: 'Array of controller actions, e.g. "index show destroy"'
1515

16+
class_option :'rawid',
17+
type: :boolean,
18+
default: false,
19+
aliases: ["--rawid", "-r"],
20+
desc: "Generate tests using rawid"
21+
1622
desc "Generates rspec request specs at spec/api"
1723
def generate
1824
generate_api_specs

lib/generators/graphiti/generator_mixin.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,19 @@ def update_config!(attrs)
4141
config = graphiti_config.merge(attrs)
4242
File.open(".graphiticfg.yml", "w") { |f| f.write(config.to_yaml) }
4343
end
44+
45+
def id_or_rawid
46+
@options["rawid"] ? "rawid" : "id"
47+
end
48+
49+
def sort_raw_ids
50+
return unless @options["rawid"]
51+
".sort"
52+
end
53+
54+
def sort_raw_ids_descending
55+
return unless @options["rawid"]
56+
".sort.reverse"
57+
end
4458
end
4559
end

lib/generators/graphiti/resource_generator.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ class ResourceGenerator < ::Rails::Generators::NamedBase
1414
aliases: ["--omit-comments", "-c"],
1515
desc: "Generate without documentation comments"
1616

17+
class_option :'rawid',
18+
type: :boolean,
19+
default: false,
20+
aliases: ["--rawid", "-r"],
21+
desc: "Generate tests using rawid"
22+
1723
class_option :actions,
1824
type: :array,
1925
default: nil,
@@ -143,12 +149,14 @@ def generate_route
143149
def generate_resource_specs
144150
opts = {}
145151
opts[:actions] = @options[:actions] if @options[:actions]
152+
opts[:rawid] = @options[:rawid] if @options[:rawid]
146153
invoke "graphiti:resource_test", [resource_klass], opts
147154
end
148155

149156
def generate_api_specs
150157
opts = {}
151158
opts[:actions] = @options[:actions] if @options[:actions]
159+
opts[:rawid] = @options[:rawid] if @options[:rawid]
152160
invoke "graphiti:api_test", [resource_klass], opts
153161
end
154162

lib/generators/graphiti/templates/index_request_spec.rb.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ RSpec.describe "<%= type %>#index", type: :request do
1616
make_request
1717
expect(response.status).to eq(200), response.body
1818
expect(d.map(&:jsonapi_type).uniq).to match_array(['<%= type %>'])
19-
expect(d.map(&:id)).to match_array([<%= var %>1.id, <%= var %>2.id])
19+
expect(d.map(&:<%= id_or_rawid %>)).to match_array([<%= var %>1.id, <%= var %>2.id])
2020
end
2121
end
2222
end

lib/generators/graphiti/templates/resource_reads_spec.rb.erb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RSpec.describe <%= resource_class %>, type: :resource do
77
it 'works' do
88
render
99
data = jsonapi_data[0]
10-
expect(data.id).to eq(<%= var %>.id)
10+
expect(data.<%= id_or_rawid %>).to eq(<%= var %>.id)
1111
expect(data.jsonapi_type).to eq('<%= type %>')
1212
<%- attributes.each do |a| -%>
1313
<%- if [:created_at, :updated_at].include?(a.name.to_sym) -%>
@@ -31,7 +31,7 @@ RSpec.describe <%= resource_class %>, type: :resource do
3131

3232
it 'works' do
3333
render
34-
expect(d.map(&:id)).to eq([<%= var %>2.id])
34+
expect(d.map(&:<%= id_or_rawid %>)).to eq([<%= var %>2.id])
3535
end
3636
end
3737
end
@@ -48,10 +48,10 @@ RSpec.describe <%= resource_class %>, type: :resource do
4848

4949
it 'works' do
5050
render
51-
expect(d.map(&:id)).to eq([
51+
expect(d.map(&:<%= id_or_rawid %>)).to eq([
5252
<%= var %>1.id,
5353
<%= var %>2.id
54-
])
54+
]<%= sort_raw_ids %>)
5555
end
5656
end
5757

@@ -62,10 +62,10 @@ RSpec.describe <%= resource_class %>, type: :resource do
6262

6363
it 'works' do
6464
render
65-
expect(d.map(&:id)).to eq([
65+
expect(d.map(&:<%= id_or_rawid %>)).to eq([
6666
<%= var %>2.id,
6767
<%= var %>1.id
68-
])
68+
]<%= sort_raw_ids_descending %>)
6969
end
7070
end
7171
end

lib/generators/graphiti/templates/show_request_spec.rb.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ RSpec.describe "<%= type %>#show", type: :request do
1515
make_request
1616
expect(response.status).to eq(200)
1717
expect(d.jsonapi_type).to eq('<%= type %>')
18-
expect(d.id).to eq(<%= var %>.id)
18+
expect(d.<%= id_or_rawid %>).to eq(<%= var %>.id)
1919
end
2020
end
2121
end

0 commit comments

Comments
 (0)