Skip to content

Commit 8d3ce6c

Browse files
committed
Fix: support arg groups with just 1 item.
1 parent dfcf059 commit 8d3ce6c

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

lib/slack/web/api/templates/method.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ module Slack
3838
raise ArgumentError, 'Required arguments :<%= arg_name %> missing' if options[:<%= arg_name %>].nil?
3939
<% end %>
4040
<% data['arg_groups']&.each do |arg_group| %>
41+
<% next if arg_group['args'].size <= 1 %>
4142
<% arg_string = arg_group['args'].map { |arg_name| ":#{arg_name}" }.join(', ') %>
4243
<% if arg_group['mutually_exclusive'] %>
4344
raise ArgumentError, 'Exactly one of <%= arg_string %> is required' unless <%= arg_group['args'].map { |arg_name| "options[:#{arg_name}].nil?" }.join(' ^ ') %>

lib/slack/web/api/templates/method_spec.erb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %>
77
let(:client) { Slack::Web::Client.new }
88
<% names.sort.each_with_index do |(name, data), index| %>
99
<% next if data['mixin'] %>
10-
<% group_required_params = data['arg_groups']&.map { |grp| grp['args'].first } || [] %>
10+
<% group_required_params = data['arg_groups']&.map { |grp| grp['args'].first if grp['args'].size > 1 } || [] %>
1111
<% required_params = data['args'].select{ |k, v| v['required'] || group_required_params.include?(k) } %>
1212
<% json_params = data['args'].map { |arg_name, arg_v| arg_name if arg_v['format'] == 'json' }.compact %>
1313
<% next if (required_params.none? || custom_spec_exists) && json_params.none? && data['arg_groups'].nil? %>
@@ -23,6 +23,7 @@ RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %>
2323
<% end %>
2424
<% end %>
2525
<% data['arg_groups']&.each do |arg_group| %>
26+
<% next if arg_group['args'].size <= 1 %>
2627
it 'requires one of <%= arg_group['args'].join(', ') %>' do
2728
<% params_except_required = example_params.reject { |name, _| arg_group['args'].include?(name) }.map { |name, val| "#{name}: %q[#{val}]" }.join(', ') %>
2829
<% error_message = arg_group['mutually_exclusive'] ? 'Exactly' : 'At least' %>

0 commit comments

Comments
 (0)