Shorten tag method names

Plain `tags` is safe to use as a class method on the group.
This commit is contained in:
Michael Miller 2021-01-30 14:13:27 -07:00
parent e093ec788e
commit bd942bb644
No known key found for this signature in database
GPG key ID: F9A0C5C65B162436
3 changed files with 21 additions and 21 deletions

View file

@ -26,8 +26,8 @@ module Spectator::DSL
\{% raise "A description or block must be provided. Cannot use '{{name.id}}' alone." unless what || block %} \{% raise "A description or block must be provided. Cannot use '{{name.id}}' alone." unless what || block %}
\{% raise "Block argument count '{{name.id}}' hook must be 0..1" if block.args.size > 1 %} \{% raise "Block argument count '{{name.id}}' hook must be 0..1" if block.args.size > 1 %}
_spectator_tags_method(%tags, :_spectator_tags, {{tags.splat(",")}} {{metadata.double_splat}}) _spectator_tags(%tags, :tags, {{tags.splat(",")}} {{metadata.double_splat}})
_spectator_tags_method(\%tags, %tags, \{{tags.splat(",")}} \{{metadata.double_splat}}) _spectator_tags(\%tags, %tags, \{{tags.splat(",")}} \{{metadata.double_splat}})
def \%test(\{{block.args.splat}}) : Nil def \%test(\{{block.args.splat}}) : Nil
\{{block.body}} \{{block.body}}
@ -67,23 +67,23 @@ module Spectator::DSL
# Defines a class method named *name* that combines tags # Defines a class method named *name* that combines tags
# returned by *source* with *tags* and *metadata*. # returned by *source* with *tags* and *metadata*.
# Any falsey items from *metadata* are removed. # Any falsey items from *metadata* are removed.
private macro _spectator_tags_method(name, source, *tags, **metadata) private macro _spectator_tags(name, source, *tags, **metadata)
def self.{{name.id}} def self.{{name.id}}
tags = {{source.id}} %tags = {{source.id}}
{% unless tags.empty? %} {% unless tags.empty? %}
tags.concat({ {{tags.map(&.id.symbolize).splat}} }) %tags.concat({ {{tags.map(&.id.symbolize).splat}} })
{% end %} {% end %}
{% for k, v in metadata %} {% for k, v in metadata %}
cond = begin %cond = begin
{{v}} {{v}}
end end
if cond if %cond
tags.add({{k.id.symbolize}}) %tags.add({{k.id.symbolize}})
else else
tags.delete({{k.id.symbolize}}) %tags.delete({{k.id.symbolize}})
end end
{% end %} {% end %}
tags %tags
end end
end end

View file

@ -16,13 +16,13 @@ module Spectator::DSL
class Group\%group < \{{@type.id}} class Group\%group < \{{@type.id}}
_spectator_group_subject(\{{what}}) _spectator_group_subject(\{{what}})
_spectator_tags_method(:_spectator_tags, :super, {{tags.splat(", ")}} {{metadata.double_splat}}) _spectator_tags_method(:tags, :super, {{tags.splat(", ")}} {{metadata.double_splat}})
_spectator_tags_method(:_spectator_tags, :previous_def, \{{tags.splat(", ")}} \{{metadata.double_splat}}) _spectator_tags_method(:tags, :previous_def, \{{tags.splat(", ")}} \{{metadata.double_splat}})
::Spectator::DSL::Builder.start_group( ::Spectator::DSL::Builder.start_group(
_spectator_group_name(\{{what}}), _spectator_group_name(\{{what}}),
::Spectator::Source.new(\{{block.filename}}, \{{block.line_number}}), ::Spectator::Source.new(\{{block.filename}}, \{{block.line_number}}),
_spectator_tags tags
) )
\{{block.body}} \{{block.body}}
@ -89,21 +89,21 @@ module Spectator::DSL
# Any falsey items from *metadata* are removed. # Any falsey items from *metadata* are removed.
private macro _spectator_tags_method(name, source, *tags, **metadata) private macro _spectator_tags_method(name, source, *tags, **metadata)
def self.{{name.id}} def self.{{name.id}}
tags = {{source.id}} %tags = {{source.id}}
{% unless tags.empty? %} {% unless tags.empty? %}
tags.concat({ {{tags.map(&.id.symbolize).splat}} }) %tags.concat({ {{tags.map(&.id.symbolize).splat}} })
{% end %} {% end %}
{% for k, v in metadata %} {% for k, v in metadata %}
cond = begin %cond = begin
{{v}} {{v}}
end end
if cond if %cond
tags.add({{k.id.symbolize}}) %tags.add({{k.id.symbolize}})
else else
tags.delete({{k.id.symbolize}}) %tags.delete({{k.id.symbolize}})
end end
{% end %} {% end %}
tags %tags
end end
end end

View file

@ -32,7 +32,7 @@ class SpectatorTestContext < SpectatorContext
# Initial tags for tests. # Initial tags for tests.
# This method should be overridden by example groups and examples. # This method should be overridden by example groups and examples.
def self._spectator_tags def self.tags
::Spectator::Tags.new ::Spectator::Tags.new
end end
end end