mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Some work on hooks in DSL
This commit is contained in:
parent
7d54884196
commit
b4e74444d1
3 changed files with 8 additions and 79 deletions
|
@ -2,6 +2,7 @@
|
||||||
require "./dsl/builder"
|
require "./dsl/builder"
|
||||||
require "./dsl/examples"
|
require "./dsl/examples"
|
||||||
require "./dsl/groups"
|
require "./dsl/groups"
|
||||||
|
require "./dsl/hooks"
|
||||||
require "./dsl/top"
|
require "./dsl/top"
|
||||||
|
|
||||||
module Spectator
|
module Spectator
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
require "./builder"
|
||||||
|
|
||||||
module Spectator::DSL
|
module Spectator::DSL
|
||||||
# DSL methods for adding custom logic to key times of the spec execution.
|
# DSL methods for adding custom logic to key times of the spec execution.
|
||||||
module Hooks
|
module Hooks
|
||||||
|
@ -9,7 +11,7 @@ module Spectator::DSL
|
||||||
{{block.body}}
|
{{block.body}}
|
||||||
end
|
end
|
||||||
|
|
||||||
::Spectator::DSL::Builder.before_all { {{@type.name}.%hook }
|
::Spectator::DSL::Builder.before_all { {{@type.name}}.%hook }
|
||||||
end
|
end
|
||||||
|
|
||||||
macro before_each(&block)
|
macro before_each(&block)
|
||||||
|
@ -19,7 +21,9 @@ module Spectator::DSL
|
||||||
{{block.body}}
|
{{block.body}}
|
||||||
end
|
end
|
||||||
|
|
||||||
::Spectator::DSL::Builder.before_each { |example| example.with_context({{@type.name}) { %hook } }
|
::Spectator::DSL::Builder.before_each do |example|
|
||||||
|
example.with_context({{@type.name}}) { %hook }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
macro after_all(&block)
|
macro after_all(&block)
|
||||||
|
@ -28,81 +32,4 @@ module Spectator::DSL
|
||||||
macro after_each(&block)
|
macro after_each(&block)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
macro before_each(&block)
|
|
||||||
def %hook({{block.args.splat}}) : Nil
|
|
||||||
{{block.body}}
|
|
||||||
end
|
|
||||||
|
|
||||||
::Spectator::SpecBuilder.add_before_each_hook do |test, example|
|
|
||||||
cast_test = test.as({{@type.id}})
|
|
||||||
{% if block.args.empty? %}
|
|
||||||
cast_test.%hook
|
|
||||||
{% else %}
|
|
||||||
cast_test.%hook(example)
|
|
||||||
{% end %}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
macro after_each(&block)
|
|
||||||
def %hook({{block.args.splat}}) : Nil
|
|
||||||
{{block.body}}
|
|
||||||
end
|
|
||||||
|
|
||||||
::Spectator::SpecBuilder.add_after_each_hook do |test, example|
|
|
||||||
cast_test = test.as({{@type.id}})
|
|
||||||
{% if block.args.empty? %}
|
|
||||||
cast_test.%hook
|
|
||||||
{% else %}
|
|
||||||
cast_test.%hook(example)
|
|
||||||
{% end %}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
macro before_all(&block)
|
|
||||||
::Spectator::SpecBuilder.add_before_all_hook {{block}}
|
|
||||||
end
|
|
||||||
|
|
||||||
macro after_all(&block)
|
|
||||||
::Spectator::SpecBuilder.add_after_all_hook {{block}}
|
|
||||||
end
|
|
||||||
|
|
||||||
macro around_each(&block)
|
|
||||||
def %hook({{block.args.first || :example.id}}) : Nil
|
|
||||||
{{block.body}}
|
|
||||||
end
|
|
||||||
|
|
||||||
::Spectator::SpecBuilder.add_around_each_hook { |test, proc| test.as({{@type.id}}).%hook(proc) }
|
|
||||||
end
|
|
||||||
|
|
||||||
macro pre_condition(&block)
|
|
||||||
def %hook({{block.args.splat}}) : Nil
|
|
||||||
{{block.body}}
|
|
||||||
end
|
|
||||||
|
|
||||||
::Spectator::SpecBuilder.add_pre_condition do |test, example|
|
|
||||||
cast_test = test.as({{@type.id}})
|
|
||||||
{% if block.args.empty? %}
|
|
||||||
cast_test.%hook
|
|
||||||
{% else %}
|
|
||||||
cast_test.%hook(example)
|
|
||||||
{% end %}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
macro post_condition(&block)
|
|
||||||
def %hook({{block.args.splat}}) : Nil
|
|
||||||
{{block.body}}
|
|
||||||
end
|
|
||||||
|
|
||||||
::Spectator::SpecBuilder.add_post_condition do |test, example|
|
|
||||||
cast_test = test.as({{@type.id}})
|
|
||||||
{% if block.args.empty? %}
|
|
||||||
cast_test.%hook
|
|
||||||
{% else %}
|
|
||||||
cast_test.%hook(example)
|
|
||||||
{% end %}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,7 @@ require "./spectator/dsl"
|
||||||
class SpectatorTestContext < SpectatorContext
|
class SpectatorTestContext < SpectatorContext
|
||||||
include ::Spectator::DSL::Examples
|
include ::Spectator::DSL::Examples
|
||||||
include ::Spectator::DSL::Groups
|
include ::Spectator::DSL::Groups
|
||||||
|
include ::Spectator::DSL::Hooks
|
||||||
|
|
||||||
# Initial implicit subject for tests.
|
# Initial implicit subject for tests.
|
||||||
# This method should be overridden by example groups when an object is described.
|
# This method should be overridden by example groups when an object is described.
|
||||||
|
|
Loading…
Reference in a new issue