trailblazer-test 0.1.0 → 1.0.0
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/.github/workflows/ci.yml +20 -0
- data/CHANGES.md +8 -0
- data/Gemfile +7 -0
- data/README.md +24 -190
- data/Rakefile +0 -3
- data/lib/trailblazer/test/assertion/assert_exposes.rb +73 -0
- data/lib/trailblazer/test/assertion/assert_fail.rb +58 -0
- data/lib/trailblazer/test/assertion/assert_pass.rb +101 -0
- data/lib/trailblazer/test/assertion.rb +114 -0
- data/lib/trailblazer/test/context.rb +5 -0
- data/lib/trailblazer/test/endpoint.rb +42 -0
- data/lib/trailblazer/test/helper/mock_step.rb +19 -0
- data/lib/trailblazer/test/suite/assert.rb +90 -0
- data/lib/trailblazer/test/suite/ctx.rb +51 -0
- data/lib/trailblazer/test/suite.rb +58 -0
- data/lib/trailblazer/test/testing.rb +62 -0
- data/lib/trailblazer/test/version.rb +1 -1
- data/lib/trailblazer/test.rb +13 -4
- data/trailblazer-test.gemspec +11 -3
- metadata +91 -19
- data/.rubocop-https---raw-githubusercontent-com-trailblazer-meta-master-rubocop-yml +0 -115
- data/.rubocop.yml +0 -17
- data/.travis.yml +0 -16
- data/lib/trailblazer/test/assertions.rb +0 -37
- data/lib/trailblazer/test/deprecation/operation/assertions.rb +0 -42
- data/lib/trailblazer/test/deprecation/operation/helper.rb +0 -28
- data/lib/trailblazer/test/operation/assertions.rb +0 -89
- data/lib/trailblazer/test/operation/helper.rb +0 -38
- data/lib/trailblazer/test/operation/policy_assertions.rb +0 -13
@@ -0,0 +1,42 @@
|
|
1
|
+
module Trailblazer
|
2
|
+
module Test
|
3
|
+
# DISCUSS: this is not really endpoint related, it's more like setting a "global" invocation mechanism.
|
4
|
+
module Endpoint
|
5
|
+
# DISCUSS: not sure this is the final "technique" to use the global endpoint invoker.
|
6
|
+
def self.module!(receiver, invoke_method:, invoke_method_wtf:)
|
7
|
+
receiver.class_eval do
|
8
|
+
@@INVOKE_METHOD = invoke_method
|
9
|
+
@@INVOKE_METHOD_WTF = invoke_method_wtf
|
10
|
+
|
11
|
+
def trailblazer_test_invoke_method
|
12
|
+
@@INVOKE_METHOD
|
13
|
+
end
|
14
|
+
|
15
|
+
def trailblazer_test_invoke_method_wtf
|
16
|
+
@@INVOKE_METHOD_WTF
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
Assertion
|
21
|
+
end
|
22
|
+
|
23
|
+
module Assertion
|
24
|
+
def assert_pass(*args, invoke: trailblazer_test_invoke_method, **options, &block)
|
25
|
+
super(*args, **options, invoke: invoke, &block)
|
26
|
+
end
|
27
|
+
|
28
|
+
def assert_fail(*args, invoke: trailblazer_test_invoke_method, **options, &block)
|
29
|
+
super(*args, **options, invoke: invoke, &block)
|
30
|
+
end
|
31
|
+
|
32
|
+
def assert_pass?(*args, **options, &block)
|
33
|
+
assert_pass(*args, **options, invoke: trailblazer_test_invoke_method_wtf, &block)
|
34
|
+
end
|
35
|
+
|
36
|
+
def assert_fail?(*args, **options, &block)
|
37
|
+
assert_fail(*args, **options, invoke: trailblazer_test_invoke_method_wtf, &block)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Trailblazer::Test
|
2
|
+
module Helper
|
3
|
+
module MockStep
|
4
|
+
def mock_step(activity, path:, &block)
|
5
|
+
raise ArgumentError, "Missing block: `#mock_step` requires a block." unless block_given?
|
6
|
+
|
7
|
+
mocked_step_id, path = path.last, path[0..-2]
|
8
|
+
|
9
|
+
mock_step = ->(ctx, **) { yield(ctx) }
|
10
|
+
mock_instruction = -> { step mock_step, replace: mocked_step_id }
|
11
|
+
|
12
|
+
|
13
|
+
Trailblazer::Activity::DSL::Linear::Patch.(activity, path, mock_instruction)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# [:delete_assets] => -> { step Destroy.method(:tidy_storage), before: :rm_uploads }
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module Trailblazer
|
2
|
+
module Test
|
3
|
+
# Offers the assertions `#assert_pass` and friends but with a configuration "DSL".
|
4
|
+
# That means you can write super short and concise test cases using the defaulting
|
5
|
+
# in this module.
|
6
|
+
module Suite
|
7
|
+
# Provide {Assert.assert_pass} and {Assert.assert_fail} functions which decouple
|
8
|
+
# the assertion logic from the actual test framework.
|
9
|
+
# They are called from the {Suite#assert_pass} helpers.
|
10
|
+
module Assert
|
11
|
+
module_function
|
12
|
+
|
13
|
+
# @semi-public (for rspec-trailblazer).
|
14
|
+
def normalize_for(params_fragment, **kws)
|
15
|
+
kws = normalize_kws(**kws)
|
16
|
+
ctx = ctx_for_params_fragment(params_fragment, **kws)
|
17
|
+
|
18
|
+
return ctx, kws
|
19
|
+
end
|
20
|
+
|
21
|
+
#@public
|
22
|
+
def assert_pass(params_fragment, deep_merge: true, assertion:, expected_attributes_to_merge:, **kws) # TODO: remove kws.
|
23
|
+
ctx, kws = normalize_for(params_fragment, **kws) # compute input, .
|
24
|
+
|
25
|
+
expected_attributes = expected_attributes_for(expected_attributes_to_merge, **kws) # compute "output", expected model attributes.
|
26
|
+
|
27
|
+
activity = kws[:operation] # FIXME.
|
28
|
+
|
29
|
+
assertion.(activity, ctx, expected_model_attributes: expected_attributes, **kws)
|
30
|
+
end
|
31
|
+
|
32
|
+
def assert_fail(params_fragment, expected_errors, assertion:, **kws)
|
33
|
+
ctx, kws = normalize_for(params_fragment, **kws)
|
34
|
+
activity = kws[:operation] # FIXME.
|
35
|
+
|
36
|
+
assertion.(activity, ctx, expected_errors, **kws)
|
37
|
+
end
|
38
|
+
|
39
|
+
# @semi-public used in rspec-trailblazer.
|
40
|
+
def ctx_for_params_fragment(params_fragment, key_in_params:, default_ctx:, **)
|
41
|
+
return params_fragment if params_fragment.kind_of?(Trailblazer::Test::Context)
|
42
|
+
# If {:key_in_params} is given, key the {params_fragment} with it, e.g. {params: {transaction: {.. params_fragment ..}}}
|
43
|
+
merge_with_ctx = key_in_params ? {params: {key_in_params => params_fragment}} : {params: params_fragment}
|
44
|
+
|
45
|
+
ctx = Suite.merge_for(default_ctx, merge_with_ctx, true)
|
46
|
+
end
|
47
|
+
|
48
|
+
# @private
|
49
|
+
# Gather all test case configuration. This involves reading all test `let` directives.
|
50
|
+
def normalize_kws(user_block:, test:, operation: test.operation, contract_name: "default", invoke: Assertion.method(:invoke_operation), **options)
|
51
|
+
kws = {
|
52
|
+
operation: operation,
|
53
|
+
test: test,
|
54
|
+
contract_name: contract_name,
|
55
|
+
user_block: user_block,
|
56
|
+
invoke: invoke,
|
57
|
+
|
58
|
+
**normalize_kws_for_ctx(test: test, **options),
|
59
|
+
**normalize_kws_for_model_assertion(test: test, **options),
|
60
|
+
}
|
61
|
+
|
62
|
+
return kws
|
63
|
+
end
|
64
|
+
|
65
|
+
# @semi-public used in rspec-trailblazer.
|
66
|
+
# Used when building the incoming {ctx}, e.g. in {#run}.
|
67
|
+
def normalize_kws_for_ctx(test:, key_in_params: test.key_in_params, default_ctx: test.default_ctx, **)
|
68
|
+
{
|
69
|
+
default_ctx: default_ctx,
|
70
|
+
key_in_params: key_in_params,
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
def normalize_kws_for_model_assertion(test:, expected_attributes: test.expected_attributes, model_at: :model, **)
|
75
|
+
{
|
76
|
+
expected_attributes: expected_attributes,
|
77
|
+
model_at: model_at,
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
# FIXME: when {deep_merge: true} the result hash contains subclassed AR classes instead of the original ones.
|
82
|
+
# when we got this sorted we can allows deep merging here, too.
|
83
|
+
# @semi-public (for rspec-trailblazer).
|
84
|
+
def expected_attributes_for(expected_attributes_to_merge, expected_attributes:, deep_merge: false, **)
|
85
|
+
_expected_attributes = Suite.merge_for(expected_attributes, expected_attributes_to_merge, deep_merge)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "hashie"
|
2
|
+
require "trailblazer/test/context"
|
3
|
+
|
4
|
+
module Trailblazer
|
5
|
+
module Test
|
6
|
+
module Suite
|
7
|
+
# @private
|
8
|
+
class CtxHash < Hash
|
9
|
+
include Hashie::Extensions::DeepMerge
|
10
|
+
end
|
11
|
+
|
12
|
+
module_function
|
13
|
+
# @private
|
14
|
+
def merge_for(dest, source, deep_merge)
|
15
|
+
return dest.merge(source) unless deep_merge
|
16
|
+
|
17
|
+
CtxHash[dest].deep_merge(CtxHash[source]) # FIXME: this subclasses ActiveRecord classes in dest like {class: ReportSubscription}
|
18
|
+
end
|
19
|
+
|
20
|
+
def Ctx(merge_with_ctx={}, exclude: false, merge: true, **kws)
|
21
|
+
if merge
|
22
|
+
options = Suite::Assert.normalize_kws_for_ctx(test: self, **kws) # FIXME: why test?
|
23
|
+
key_in_params = options[:key_in_params]
|
24
|
+
default_ctx = options[:default_ctx]
|
25
|
+
|
26
|
+
# Extract {:params} from {default_ctx}
|
27
|
+
default_params = key_in_params ? default_ctx[:params][key_in_params] : default_ctx[:params]
|
28
|
+
|
29
|
+
# Remove {:exclude} variables from the {params:} part
|
30
|
+
filtered_default_params =
|
31
|
+
if exclude
|
32
|
+
default_params.slice(*(default_params.keys - exclude))
|
33
|
+
else
|
34
|
+
default_params # use original params if no filtering configured.
|
35
|
+
end
|
36
|
+
|
37
|
+
# FIXME: very, very redundant.
|
38
|
+
default_params_for_ctx = key_in_params ? {key_in_params => filtered_default_params} : filtered_default_params
|
39
|
+
|
40
|
+
ctx = default_ctx.merge({params: default_params_for_ctx})
|
41
|
+
else # FIXME: if/else here sucks.
|
42
|
+
ctx = {}
|
43
|
+
end
|
44
|
+
|
45
|
+
ctx = Suite.merge_for(ctx, merge_with_ctx, true) # merge injections
|
46
|
+
|
47
|
+
Trailblazer::Test::Context[ctx] # this signals "pass-through"
|
48
|
+
end
|
49
|
+
end # Suite
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Trailblazer
|
2
|
+
module Test
|
3
|
+
# Offers the assertions `#assert_pass` and friends but with a configuration "DSL".
|
4
|
+
# That means you can write super short and concise test cases using the defaulting
|
5
|
+
# in this module.
|
6
|
+
module Suite
|
7
|
+
# Defaults so tests run without tweaking (almost).
|
8
|
+
module Spec
|
9
|
+
def self.included(includer)
|
10
|
+
includer.let(:operation) { raise "Trailblazer::Test: `let(:operation) { ... }` is missing" }
|
11
|
+
includer.let(:key_in_params) { false }
|
12
|
+
includer.let(:expected_attributes) { {} } # You need to override this in your tests.
|
13
|
+
includer.let(:default_ctx) { {} }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# For Minitest::Test, given there are still people using this awkward syntax. :)
|
18
|
+
module Test
|
19
|
+
def operation
|
20
|
+
raise "Trailblazer::Test: `def operation` is missing"
|
21
|
+
end
|
22
|
+
|
23
|
+
def key_in_params
|
24
|
+
false
|
25
|
+
end
|
26
|
+
|
27
|
+
def expected_attributes
|
28
|
+
{}
|
29
|
+
end
|
30
|
+
|
31
|
+
def default_ctx
|
32
|
+
{}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# The assertions and helpers included into the actual test.
|
37
|
+
def assert_pass(params_fragment, expected_attributes_to_merge={}, assertion: Assertion::AssertPass, **kws, &block)
|
38
|
+
Assert.assert_pass(params_fragment, test: self, user_block: block, assertion: assertion, expected_attributes_to_merge: expected_attributes_to_merge, **kws)
|
39
|
+
end
|
40
|
+
|
41
|
+
def assert_fail(params_fragment, expected_errors=nil, assertion: Assertion::AssertFail, **kws, &block)
|
42
|
+
Assert.assert_fail(params_fragment, expected_errors, test: self, user_block: block, assertion: assertion, **kws)
|
43
|
+
end
|
44
|
+
|
45
|
+
def assert_pass?(*args, **kws, &block)
|
46
|
+
assert_pass(*args, **kws, invoke: Assertion.method(:invoke_operation_with_wtf), &block)
|
47
|
+
end
|
48
|
+
|
49
|
+
def assert_fail?(*args, **kws, &block)
|
50
|
+
assert_fail(*args, **kws, invoke: Assertion.method(:invoke_operation_with_wtf), &block)
|
51
|
+
end
|
52
|
+
|
53
|
+
def Ctx(*args, **kws)
|
54
|
+
Assert.Ctx(*args, test: self, **kws)
|
55
|
+
end
|
56
|
+
end # Suite
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require "trailblazer/macro"
|
2
|
+
require "trailblazer/macro/contract"
|
3
|
+
# require "reform/form/active_model/validations" # FIXME: document!
|
4
|
+
require "dry-validation" # FIXME: bug in reform-rails with Rails 6.1 errors object forces us to use dry-v until it's fixed.
|
5
|
+
require "trailblazer/operation"
|
6
|
+
|
7
|
+
module Trailblazer::Test
|
8
|
+
# Test components we need in other gems, too.
|
9
|
+
module Testing
|
10
|
+
class Memo < Struct.new(:id, :title, :content, :tag_list, :persisted?, :errors, keyword_init: true)
|
11
|
+
VALID_INPUT = {params: {memo: {title: "TODO", content: "Stock up beer"}}}.freeze
|
12
|
+
|
13
|
+
def save
|
14
|
+
self[:persisted?] = true
|
15
|
+
self[:id] = 1
|
16
|
+
end
|
17
|
+
|
18
|
+
module Operation
|
19
|
+
class Create < Trailblazer::Operation
|
20
|
+
class Form < Reform::Form
|
21
|
+
require "reform/form/dry"
|
22
|
+
include Reform::Form::Dry
|
23
|
+
|
24
|
+
property :title
|
25
|
+
property :content
|
26
|
+
property :tag_list
|
27
|
+
|
28
|
+
validation do
|
29
|
+
params do
|
30
|
+
required(:title).filled
|
31
|
+
required(:content).filled(min_size?: 8)
|
32
|
+
optional(:tag_list).maybe(type?: String)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
step :capture
|
38
|
+
step Model::Build(Memo, :new)
|
39
|
+
step Contract::Build(constant: Form)
|
40
|
+
step Contract::Validate(key: :memo)
|
41
|
+
step :parse_tag_list
|
42
|
+
step Contract::Persist()
|
43
|
+
|
44
|
+
module Capture
|
45
|
+
def capture(ctx, **)
|
46
|
+
ctx[:captured] = CU.inspect(ctx.to_h)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
include Capture
|
50
|
+
|
51
|
+
def parse_tag_list(ctx, **)
|
52
|
+
tag_list = ctx["contract.default"].tag_list or return true
|
53
|
+
|
54
|
+
tags = tag_list.split(",")
|
55
|
+
|
56
|
+
ctx["contract.default"].tag_list = tags
|
57
|
+
end
|
58
|
+
end # Create
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/trailblazer/test.rb
CHANGED
@@ -3,10 +3,19 @@ require "trailblazer/test/version"
|
|
3
3
|
module Trailblazer
|
4
4
|
module Test
|
5
5
|
# Your code goes here...
|
6
|
+
|
7
|
+
def self.module!(*args, **options, &block)
|
8
|
+
Assertion.module!(*args, **options, &block)
|
9
|
+
end
|
6
10
|
end
|
7
11
|
end
|
8
12
|
|
9
|
-
require "trailblazer/test/
|
10
|
-
require "trailblazer/test/
|
11
|
-
require "trailblazer/test/
|
12
|
-
require "trailblazer/test/
|
13
|
+
require "trailblazer/test/assertion/assert_exposes"
|
14
|
+
require "trailblazer/test/assertion/assert_pass"
|
15
|
+
require "trailblazer/test/assertion/assert_fail"
|
16
|
+
require "trailblazer/test/assertion"
|
17
|
+
require "trailblazer/test/suite"
|
18
|
+
require "trailblazer/test/suite/assert"
|
19
|
+
require "trailblazer/test/suite/ctx"
|
20
|
+
require "trailblazer/test/helper/mock_step"
|
21
|
+
# require "trailblazer/test/operation/policy_assertions"
|
data/trailblazer-test.gemspec
CHANGED
@@ -21,9 +21,17 @@ Gem::Specification.new do |spec|
|
|
21
21
|
|
22
22
|
spec.add_dependency "hashie"
|
23
23
|
|
24
|
-
spec.add_development_dependency "bundler"
|
24
|
+
spec.add_development_dependency "bundler"
|
25
25
|
spec.add_development_dependency "minitest", "~> 5.0"
|
26
|
+
spec.add_development_dependency "minitest-line"
|
26
27
|
spec.add_development_dependency "rake"
|
27
|
-
|
28
|
-
spec.add_development_dependency "
|
28
|
+
|
29
|
+
spec.add_development_dependency "trailblazer-operation"
|
30
|
+
spec.add_development_dependency "trailblazer-macro"
|
31
|
+
spec.add_development_dependency "trailblazer-macro-contract"
|
32
|
+
# spec.add_development_dependency "reform-rails"
|
33
|
+
spec.add_development_dependency "dry-validation"
|
34
|
+
spec.add_development_dependency "trailblazer-core-utils", ">= 0.0.5"
|
35
|
+
|
36
|
+
spec.add_dependency "trailblazer-activity-dsl-linear", ">= 1.2.6"
|
29
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trailblazer-test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest-line
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,7 +81,7 @@ dependencies:
|
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: trailblazer-operation
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - ">="
|
@@ -81,7 +95,7 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: trailblazer-macro
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
@@ -94,6 +108,62 @@ dependencies:
|
|
94
108
|
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: trailblazer-macro-contract
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: dry-validation
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: trailblazer-core-utils
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 0.0.5
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.0.5
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: trailblazer-activity-dsl-linear
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 1.2.6
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 1.2.6
|
97
167
|
description: Assertions, matchers, and helpers to test Trailblazer code.
|
98
168
|
email:
|
99
169
|
- apotonick@gmail.com
|
@@ -101,21 +171,24 @@ executables: []
|
|
101
171
|
extensions: []
|
102
172
|
extra_rdoc_files: []
|
103
173
|
files:
|
174
|
+
- ".github/workflows/ci.yml"
|
104
175
|
- ".gitignore"
|
105
|
-
- ".rubocop-https---raw-githubusercontent-com-trailblazer-meta-master-rubocop-yml"
|
106
|
-
- ".rubocop.yml"
|
107
|
-
- ".travis.yml"
|
108
176
|
- CHANGES.md
|
109
177
|
- Gemfile
|
110
178
|
- README.md
|
111
179
|
- Rakefile
|
112
180
|
- lib/trailblazer/test.rb
|
113
|
-
- lib/trailblazer/test/
|
114
|
-
- lib/trailblazer/test/
|
115
|
-
- lib/trailblazer/test/
|
116
|
-
- lib/trailblazer/test/
|
117
|
-
- lib/trailblazer/test/
|
118
|
-
- lib/trailblazer/test/
|
181
|
+
- lib/trailblazer/test/assertion.rb
|
182
|
+
- lib/trailblazer/test/assertion/assert_exposes.rb
|
183
|
+
- lib/trailblazer/test/assertion/assert_fail.rb
|
184
|
+
- lib/trailblazer/test/assertion/assert_pass.rb
|
185
|
+
- lib/trailblazer/test/context.rb
|
186
|
+
- lib/trailblazer/test/endpoint.rb
|
187
|
+
- lib/trailblazer/test/helper/mock_step.rb
|
188
|
+
- lib/trailblazer/test/suite.rb
|
189
|
+
- lib/trailblazer/test/suite/assert.rb
|
190
|
+
- lib/trailblazer/test/suite/ctx.rb
|
191
|
+
- lib/trailblazer/test/testing.rb
|
119
192
|
- lib/trailblazer/test/version.rb
|
120
193
|
- trailblazer-test.gemspec
|
121
194
|
homepage: http://trailblazer.to
|
@@ -136,8 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
209
|
- !ruby/object:Gem::Version
|
137
210
|
version: '0'
|
138
211
|
requirements: []
|
139
|
-
|
140
|
-
rubygems_version: 2.7.7
|
212
|
+
rubygems_version: 3.2.3
|
141
213
|
signing_key:
|
142
214
|
specification_version: 4
|
143
215
|
summary: Assertions, matchers, and helpers to test Trailblazer code.
|
@@ -1,115 +0,0 @@
|
|
1
|
-
AllCops:
|
2
|
-
TargetRubyVersion: 2.5.0
|
3
|
-
DisplayCopNames: true
|
4
|
-
Layout/CaseIndentation:
|
5
|
-
IndentOneStep: true
|
6
|
-
Layout/FirstArrayElementLineBreak:
|
7
|
-
Enabled: true
|
8
|
-
Layout/FirstHashElementLineBreak:
|
9
|
-
Enabled: true
|
10
|
-
Layout/FirstMethodArgumentLineBreak:
|
11
|
-
Enabled: true
|
12
|
-
Layout/FirstMethodParameterLineBreak:
|
13
|
-
Enabled: true
|
14
|
-
Layout/MultilineAssignmentLayout:
|
15
|
-
Enabled: true
|
16
|
-
EnforcedStyle: same_line
|
17
|
-
Layout/SpaceInsideHashLiteralBraces:
|
18
|
-
EnforcedStyle: no_space
|
19
|
-
Metrics/LineLength:
|
20
|
-
Max: 130
|
21
|
-
Metrics/ParameterLists:
|
22
|
-
Max: 5
|
23
|
-
Naming/VariableNumber:
|
24
|
-
EnforcedStyle: snake_case
|
25
|
-
Style/AndOr:
|
26
|
-
EnforcedStyle: conditionals
|
27
|
-
Style/AutoResourceCleanup:
|
28
|
-
Enabled: true
|
29
|
-
Style/CollectionMethods:
|
30
|
-
Enabled: true
|
31
|
-
Style/Documentation:
|
32
|
-
Enabled: false
|
33
|
-
Style/EmptyLiteral:
|
34
|
-
Enabled: false
|
35
|
-
Style/EmptyMethod:
|
36
|
-
EnforcedStyle: expanded
|
37
|
-
Style/FormatStringToken:
|
38
|
-
EnforcedStyle: template
|
39
|
-
Style/ImplicitRuntimeError:
|
40
|
-
Enabled: true
|
41
|
-
Style/MethodCalledOnDoEndBlock:
|
42
|
-
Enabled: true
|
43
|
-
Style/MethodDefParentheses:
|
44
|
-
EnforcedStyle: require_parentheses
|
45
|
-
Style/MissingElse:
|
46
|
-
Enabled: true
|
47
|
-
EnforcedStyle: case
|
48
|
-
Style/NumericLiterals:
|
49
|
-
Enabled: false
|
50
|
-
Style/OptionHash:
|
51
|
-
Enabled: true
|
52
|
-
Style/PercentLiteralDelimiters:
|
53
|
-
PreferredDelimiters:
|
54
|
-
"%w": "[]"
|
55
|
-
"%W": "[]"
|
56
|
-
"%i": "[]"
|
57
|
-
"%I": "[]"
|
58
|
-
"%r": "()"
|
59
|
-
Style/ReturnNil:
|
60
|
-
Enabled: true
|
61
|
-
Style/SafeNavigation:
|
62
|
-
Enabled: false
|
63
|
-
Style/Send:
|
64
|
-
Enabled: true
|
65
|
-
Style/SignalException:
|
66
|
-
EnforcedStyle: semantic
|
67
|
-
Style/StringLiterals:
|
68
|
-
EnforcedStyle: double_quotes
|
69
|
-
Style/StringLiteralsInInterpolation:
|
70
|
-
EnforcedStyle: double_quotes
|
71
|
-
Style/StringMethods:
|
72
|
-
Enabled: true
|
73
|
-
Style/SymbolArray:
|
74
|
-
Enabled: true
|
75
|
-
# this allows in rspec to have expect { } with multiple lines
|
76
|
-
Style/BlockDelimiters:
|
77
|
-
EnforcedStyle: braces_for_chaining
|
78
|
-
Layout/EndOfLine:
|
79
|
-
Enabled: false
|
80
|
-
# don't need these checks in test folders
|
81
|
-
Metrics/ModuleLength:
|
82
|
-
Exclude:
|
83
|
-
- "spec/**/*"
|
84
|
-
- "test/**/*"
|
85
|
-
Metrics/BlockLength:
|
86
|
-
Exclude:
|
87
|
-
- "spec/**/*"
|
88
|
-
- "test/**/*"
|
89
|
-
- "*.gemspec" # definitely not in the gemspec
|
90
|
-
Metrics/MethodLength:
|
91
|
-
Max: 20
|
92
|
-
Lint/UnreachableCode:
|
93
|
-
Description: 'Unreachable code.'
|
94
|
-
Enabled: false
|
95
|
-
Lint/Void:
|
96
|
-
Enabled: false
|
97
|
-
Layout/AlignHash:
|
98
|
-
EnforcedLastArgumentHashStyle: ignore_implicit
|
99
|
-
Metrics/AbcSize:
|
100
|
-
Max: 25
|
101
|
-
Style/LambdaCall:
|
102
|
-
Enabled: false
|
103
|
-
Style/Semicolon:
|
104
|
-
Enabled: false
|
105
|
-
Naming/UncommunicativeMethodParamName:
|
106
|
-
Enabled: false
|
107
|
-
Style/ClassAndModuleChildren:
|
108
|
-
Enabled: false
|
109
|
-
Layout/LeadingCommentSpace:
|
110
|
-
Exclude:
|
111
|
-
- 'test/docs/**/*'
|
112
|
-
Layout/AlignHash:
|
113
|
-
EnforcedHashRocketStyle: table
|
114
|
-
Style/FrozenStringLiteralComment:
|
115
|
-
Enabled: false
|