trailblazer-macro-contract 2.1.0.beta4 → 2.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e76cb3d4994697ebe273d8d8f4d23eb22cfdf6e4c3e14938916e069a153e6d8d
4
- data.tar.gz: 0bb78c2ca2ba55978dc72bb97166f2bdfa3e3c774061608ab1720f75d0ce735a
3
+ metadata.gz: 6950c7cb14a9a1ef7ca1ee5ae5a9a516ddc193e2e2d92b74a0a1dd270a86a3ff
4
+ data.tar.gz: 2ced13008f600a7a4627c560cc0688a7c77870455cc0b00860fd292805197bec
5
5
  SHA512:
6
- metadata.gz: 43ef3c668e774660436555c176e5922d675e03d56d695dbcf4db9531c58ea81d31ac2e93468c16c56896d77bfafe14995c29e22adda5d701be443b66ca957629
7
- data.tar.gz: '018f95459f73d4033c49ef1566fbc607a79a8c270e634f763a607e2d8a61eec3bdc855f5802b6712f76e8aa9e7a94c5fcccde73af11bb6e6bd77250eea84db35'
6
+ metadata.gz: aa924fcd28353032eb0b613a5d32ed2ffb6d3c1e4ef0833fbdb4fbde6499ad799ce779b7e6b697c9d36e3ec257782969ecfabbe0ca0bf0b658e7352f10abcac2
7
+ data.tar.gz: 8cdc084886db6cd010bbf035c84e444b4c2ee32ce5fdc4ad62efb1d71bbb11226c24dbe1ab1e164ff994e4a84741165c38698244a706ad3f654a90be4ddbd06b
@@ -1,6 +1,12 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
+ Style/StringLiterals:
4
+ EnforcedStyle: double_quotes
5
+ Style/StringLiteralsInInterpolation:
6
+ EnforcedStyle: double_quotes
7
+
3
8
  Naming/MethodName:
4
9
  Exclude:
5
10
  - 'lib/trailblazer/operation/persist.rb'
6
11
  - 'lib/trailblazer/operation/contract.rb'
12
+
@@ -1,11 +1,18 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2018-03-07 12:15:38 +0100 using RuboCop version 0.53.0.
3
+ # on 2018-05-29 21:00:52 +0800 using RuboCop version 0.56.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
+ # Offense count: 1
10
+ # Configuration parameters: Include.
11
+ # Include: **/*.gemfile, **/Gemfile, **/gems.rb
12
+ Bundler/DuplicatedGem:
13
+ Exclude:
14
+ - 'Gemfile'
15
+
9
16
  # Offense count: 2
10
17
  # Cop supports --auto-correct.
11
18
  # Configuration parameters: Include, TreatCommentsAsGroupSeparators.
@@ -14,7 +21,7 @@ Bundler/OrderedGems:
14
21
  Exclude:
15
22
  - 'Gemfile'
16
23
 
17
- # Offense count: 4
24
+ # Offense count: 2
18
25
  # Cop supports --auto-correct.
19
26
  # Configuration parameters: Include, TreatCommentsAsGroupSeparators.
20
27
  # Include: **/*.gemspec
@@ -36,14 +43,6 @@ Layout/EmptyLineBetweenDefs:
36
43
  Exclude:
37
44
  - 'test/test_helper.rb'
38
45
 
39
- # Offense count: 1
40
- # Cop supports --auto-correct.
41
- # Configuration parameters: EnforcedStyle.
42
- # SupportedStyles: empty_lines, no_empty_lines
43
- Layout/EmptyLinesAroundBlockBody:
44
- Exclude:
45
- - 'test/operation/dsl/contract_test.rb'
46
-
47
46
  # Offense count: 1
48
47
  # Cop supports --auto-correct.
49
48
  # Configuration parameters: EnforcedStyle.
@@ -52,13 +51,12 @@ Layout/EmptyLinesAroundClassBody:
52
51
  Exclude:
53
52
  - 'test/docs/contract_test.rb'
54
53
 
55
- # Offense count: 2
54
+ # Offense count: 1
56
55
  # Cop supports --auto-correct.
57
56
  # Configuration parameters: AllowForAlignment, ForceEqualSignAlignment.
58
57
  Layout/ExtraSpacing:
59
58
  Exclude:
60
59
  - 'test/docs/contract_test.rb'
61
- - 'test/operation/dsl/contract_test.rb'
62
60
 
63
61
  # Offense count: 1
64
62
  # Cop supports --auto-correct.
@@ -67,12 +65,11 @@ Layout/IndentAssignment:
67
65
  Exclude:
68
66
  - 'lib/trailblazer/operation/validate.rb'
69
67
 
70
- # Offense count: 7
68
+ # Offense count: 5
71
69
  # Cop supports --auto-correct.
72
70
  Layout/LeadingCommentSpace:
73
71
  Exclude:
74
72
  - 'test/docs/contract_test.rb'
75
- - 'test/operation/dsl/contract_test.rb'
76
73
 
77
74
  # Offense count: 13
78
75
  # Cop supports --auto-correct.
@@ -89,22 +86,15 @@ Layout/SpaceAfterColon:
89
86
  Layout/SpaceAroundEqualsInParameterDefault:
90
87
  EnforcedStyle: no_space
91
88
 
92
- # Offense count: 13
89
+ # Offense count: 7
93
90
  # Cop supports --auto-correct.
94
91
  # Configuration parameters: AllowForAlignment.
95
92
  Layout/SpaceAroundOperators:
96
93
  Exclude:
97
94
  - 'test/docs/contract_test.rb'
98
95
  - 'test/operation/contract_test.rb'
99
- - 'test/operation/dsl/contract_test.rb'
100
96
  - 'test/operation/persist_test.rb'
101
97
 
102
- # Offense count: 2
103
- # Cop supports --auto-correct.
104
- Layout/SpaceBeforeComment:
105
- Exclude:
106
- - 'test/operation/dsl/contract_test.rb'
107
-
108
98
  # Offense count: 5
109
99
  # Cop supports --auto-correct.
110
100
  # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
@@ -114,7 +104,7 @@ Layout/SpaceInsideBlockBraces:
114
104
  Exclude:
115
105
  - 'test/docs/contract_test.rb'
116
106
 
117
- # Offense count: 58
107
+ # Offense count: 38
118
108
  # Cop supports --auto-correct.
119
109
  # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces.
120
110
  # SupportedStyles: space, no_space, compact
@@ -123,11 +113,12 @@ Layout/SpaceInsideHashLiteralBraces:
123
113
  Exclude:
124
114
  - 'test/docs/contract_test.rb'
125
115
  - 'test/operation/contract_test.rb'
126
- - 'test/operation/dsl/contract_test.rb'
127
116
  - 'test/test_helper.rb'
128
117
 
129
- # Offense count: 109
118
+ # Offense count: 110
130
119
  # Cop supports --auto-correct.
120
+ # Configuration parameters: EnforcedStyle.
121
+ # SupportedStyles: space, no_space
131
122
  Layout/SpaceInsideParens:
132
123
  Exclude:
133
124
  - 'lib/trailblazer/operation/contract.rb'
@@ -136,7 +127,6 @@ Layout/SpaceInsideParens:
136
127
  - 'test/docs/contract_test.rb'
137
128
  - 'test/docs/dry_test.rb'
138
129
  - 'test/operation/contract_test.rb'
139
- - 'test/operation/dsl/contract_test.rb'
140
130
  - 'test/operation/persist_test.rb'
141
131
 
142
132
  # Offense count: 1
@@ -164,57 +154,19 @@ Lint/UnusedBlockArgument:
164
154
  Exclude:
165
155
  - 'test/test_helper.rb'
166
156
 
167
- # Offense count: 3
168
- # Configuration parameters: CountComments, ExcludedMethods.
169
- Metrics/BlockLength:
170
- Max: 32
171
-
172
- # Offense count: 2
173
- # Configuration parameters: .
174
- # SupportedStyles: snake_case, camelCase
175
- Naming/MethodName:
176
- EnforcedStyle: snake_case
177
-
178
- # Offense count: 1
179
- # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
180
- Naming/UncommunicativeBlockParamName:
181
- Exclude:
182
- - 'lib/trailblazer/operation/persist.rb'
183
-
184
- # Offense count: 6
185
- # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
186
- # AllowedNames: io, id
187
- Naming/UncommunicativeMethodParamName:
188
- Exclude:
189
- - 'lib/trailblazer/operation/validate.rb'
190
- - 'test/docs/contract_test.rb'
191
- - 'test/operation/persist_test.rb'
192
-
193
157
  # Offense count: 1
194
158
  # Cop supports --auto-correct.
195
159
  Style/BlockComments:
196
160
  Exclude:
197
161
  - 'test/docs/contract_test.rb'
198
162
 
199
- # Offense count: 1
200
- # Cop supports --auto-correct.
201
- # Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, IgnoredMethods.
202
- # SupportedStyles: line_count_based, semantic, braces_for_chaining
203
- # ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
204
- # FunctionalMethods: let, let!, subject, watch
205
- # IgnoredMethods: lambda, proc, it
206
- Style/BlockDelimiters:
207
- Exclude:
208
- - 'test/operation/dsl/contract_test.rb'
209
-
210
- # Offense count: 4
163
+ # Offense count: 3
211
164
  # Cop supports --auto-correct.
212
165
  # Configuration parameters: EnforcedStyle.
213
166
  # SupportedStyles: braces, no_braces, context_dependent
214
167
  Style/BracesAroundHashParameters:
215
168
  Exclude:
216
169
  - 'test/operation/contract_test.rb'
217
- - 'test/operation/dsl/contract_test.rb'
218
170
 
219
171
  # Offense count: 8
220
172
  # Cop supports --auto-correct.
@@ -254,7 +206,7 @@ Style/HashSyntax:
254
206
  - 'test/docs/contract_test.rb'
255
207
  - 'test/operation/contract_test.rb'
256
208
 
257
- # Offense count: 72
209
+ # Offense count: 66
258
210
  # Cop supports --auto-correct.
259
211
  # Configuration parameters: .
260
212
  # SupportedStyles: call, braces
@@ -267,7 +219,7 @@ Style/ParallelAssignment:
267
219
  Exclude:
268
220
  - 'lib/trailblazer/operation/validate.rb'
269
221
 
270
- # Offense count: 37
222
+ # Offense count: 30
271
223
  # Cop supports --auto-correct.
272
224
  # Configuration parameters: PreferredDelimiters.
273
225
  Style/PercentLiteralDelimiters:
@@ -275,7 +227,6 @@ Style/PercentLiteralDelimiters:
275
227
  - 'test/docs/contract_test.rb'
276
228
  - 'test/docs/dry_test.rb'
277
229
  - 'test/operation/contract_test.rb'
278
- - 'test/operation/dsl/contract_test.rb'
279
230
  - 'test/operation/persist_test.rb'
280
231
 
281
232
  # Offense count: 2
@@ -294,7 +245,7 @@ Style/SingleLineMethods:
294
245
  - 'test/operation/persist_test.rb'
295
246
  - 'test/test_helper.rb'
296
247
 
297
- # Offense count: 217
248
+ # Offense count: 14
298
249
  # Cop supports --auto-correct.
299
250
  # Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
300
251
  # SupportedStyles: single_quotes, double_quotes
@@ -302,20 +253,11 @@ Style/StringLiterals:
302
253
  Exclude:
303
254
  - 'Gemfile'
304
255
  - 'Rakefile'
305
- - 'lib/trailblazer/macro/contract.rb'
306
- - 'lib/trailblazer/macro/contract/version.rb'
307
- - 'lib/trailblazer/operation/contract.rb'
308
- - 'lib/trailblazer/operation/persist.rb'
309
- - 'lib/trailblazer/operation/validate.rb'
310
- - 'test/docs/contract_test.rb'
311
- - 'test/docs/dry_test.rb'
312
256
  - 'test/operation/contract_test.rb'
313
- - 'test/operation/dsl/contract_test.rb'
314
- - 'test/operation/persist_test.rb'
315
257
  - 'test/test_helper.rb'
316
258
  - 'trailblazer-macro-contract.gemspec'
317
259
 
318
- # Offense count: 93
260
+ # Offense count: 75
319
261
  # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
320
262
  # URISchemes: http, https
321
263
  Metrics/LineLength:
data/CHANGES.md CHANGED
@@ -1,3 +1,14 @@
1
+ # 2.1.0.rc1
2
+
3
+ * Add a separate End to Validate. When the key extraction fails, the Validate activity will
4
+ end in a new end End.extract_failure.
5
+ This end is, per default, connected to the outer failure track, exposing the exact same
6
+ behavior it did before, but is now deviatable in the outer "real" operation to a separate
7
+ flow.
8
+ * Add `Validate( constant: MySchema )` to allow using `Dry::Schema` without the need for `Contract::Build()`.
9
+ This replaces a hack that used `contract MySchema` to achieve the same.
10
+ * Change back to MIT license.
11
+
1
12
  # 2.1.0.beta4
2
13
 
3
14
  * New activity API update.
data/Gemfile CHANGED
@@ -1,18 +1,22 @@
1
1
  source 'https://rubygems.org'
2
-
3
2
  # Specify your gem's dependencies in trailblazer.gemspec
4
3
  gemspec
5
4
 
6
- gem "reform-rails"
7
- gem "activesupport"
8
-
9
- gem "reform"
10
- gem "multi_json"
11
-
12
5
  gem "dry-auto_inject"
13
6
  gem "dry-matcher"
14
7
  gem "dry-validation"
15
8
 
9
+ # if ENV['USE_LOCAL_GEMS']
10
+ gem "reform", path: "../reform"
11
+ gem "reform-rails", path: "../reform-rails"
12
+ gem "trailblazer-operation", path: "../trailblazer-operation"
13
+ gem "trailblazer-macro", path: "../trailblazer-macro"
14
+ gem "trailblazer-activity", path: "../trailblazer-activity"
15
+ # gem "trailblazer-context", path: "../trailblazer-context"
16
+ # else
17
+ # gem "reform"
18
+ # end
19
+
16
20
  # gem "trailblazer-operation", github: "trailblazer/trailblazer-operation"
17
21
  # gem "trailblazer-macro", github: "trailblazer/trailblazer-macro"
18
22
 
@@ -1,9 +1,27 @@
1
- Copyright (c) Nick Sutterer
1
+ The MIT License (MIT)
2
2
 
3
- Trailblazer is an Open Source project licensed under the terms of
4
- the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
- for license text.
3
+ Copyright (c) 2018 Trailblazer GmbH
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
22
+
23
+ ---------
6
24
 
7
25
  Trailblazer Enterprise has a commercial-friendly license allowing private forks
8
26
  and modifications of Trailblazer. Please see http://trailblazer.to/enterprise/ for
9
- more detail. You can find the commercial license terms in COMM-LICENSE.
27
+ more detail.
@@ -1,2 +1,2 @@
1
1
  require "trailblazer/macro/contract/version"
2
- require "trailblazer/macro/contract"
2
+ require "trailblazer/macro/contract"
@@ -1,7 +1,7 @@
1
1
  module Trailblazer
2
2
  module Macro
3
3
  module Contract
4
- VERSION = "2.1.0.beta4".freeze
4
+ VERSION = "2.1.0.rc1".freeze
5
5
  end
6
6
  end
7
7
  end
@@ -5,24 +5,26 @@ module Trailblazer
5
5
  # result.contract.errors = {..}
6
6
  # Deviate to left track if optional key is not found in params.
7
7
  # Deviate to left if validation result falsey.
8
- def self.Validate(skip_extract: false, name: "default", representer: false, key: nil) # DISCUSS: should we introduce something like Validate::Deserializer?
8
+ def self.Validate(skip_extract: false, name: "default", representer: false, key: nil, constant: nil) # DISCUSS: should we introduce something like Validate::Deserializer?
9
9
  params_path = "contract.#{name}.params" # extract_params! save extracted params here.
10
10
 
11
11
  extract = Validate::Extract.new( key: key, params_path: params_path ).freeze
12
- validate = Validate.new( name: name, representer: representer, params_path: params_path ).freeze
12
+ validate = Validate.new( name: name, representer: representer, params_path: params_path, constant: constant ).freeze
13
13
 
14
14
  # Build a simple Railway {Activity} for the internal flow.
15
15
  activity = Module.new do
16
16
  extend Activity::Railway(name: "Contract::Validate")
17
17
 
18
- step extract, id: "#{params_path}_extract" unless skip_extract || representer
18
+ step extract, id: "#{params_path}_extract", Activity::DSL.Output(:failure) => Activity::DSL.End(:extract_failure) unless skip_extract || representer
19
19
  step validate, id: "contract.#{name}.call"
20
20
  end
21
21
 
22
- # activity, _ = activity.decompose
22
+ options = { task: activity, id: "contract.#{name}.validate", outputs: activity.outputs}
23
23
 
24
- # DISCUSS: use Nested here?
25
- { task: activity, id: "contract.#{name}.validate", outputs: activity.outputs }
24
+ # Deviate End.extract_failure to the standard failure track as a default. This can be changed from the user side.
25
+ options = options.merge(Activity::DSL.Output(:extract_failure) => Activity::DSL.Track(:failure)) unless skip_extract
26
+
27
+ options
26
28
  end
27
29
 
28
30
  class Validate
@@ -37,8 +39,8 @@ module Trailblazer
37
39
  end
38
40
  end
39
41
 
40
- def initialize(name:"default", representer:false, params_path:nil)
41
- @name, @representer, @params_path = name, representer, params_path
42
+ def initialize(name:"default", representer:false, params_path:nil, constant: nil)
43
+ @name, @representer, @params_path, @constant = name, representer, params_path, constant
42
44
  end
43
45
 
44
46
  # Task: Validates contract `:name`.
@@ -52,7 +54,7 @@ module Trailblazer
52
54
 
53
55
  def validate!(options, representer:false, from: :document, params_path:nil)
54
56
  path = "contract.#{@name}"
55
- contract = options[path]
57
+ contract = @constant || options[path]
56
58
 
57
59
  # this is for 1.1-style compatibility and should be removed once we have Deserializer in place:
58
60
  options["result.#{path}"] = result =
@@ -257,6 +257,46 @@ class DocsContractKeyTest < Minitest::Spec
257
257
  end
258
258
  end
259
259
 
260
+ #---
261
+ #- Validate( key: :song ), Output(:extract_failure) => End(:my_new_end)
262
+ class DocsContractKeyWithOutputTest < Minitest::Spec
263
+ Song = Class.new(ContractConstantTest::Song)
264
+
265
+ module Song::Contract
266
+ Create = ContractConstantTest::Song::Contract::Create
267
+ end
268
+
269
+ #:key-output
270
+ class Song::Create < Trailblazer::Operation
271
+ step Model( Song, :new )
272
+ step Contract::Build( constant: Song::Contract::Create )
273
+ step Contract::Validate( key: "song" ), Output(:extract_failure) => End(:key_not_found)
274
+ step Contract::Persist( )
275
+ end
276
+ #:key-output end
277
+
278
+ it do
279
+ result = Song::Create.(params: {})
280
+
281
+ result.event.inspect.must_equal %{#<Trailblazer::Activity::End semantic=:key_not_found>}
282
+ result.inspect(:model, "result.contract.default.extract").must_equal %{<Result:false [#<struct DocsContractKeyWithOutputTest::Song title=nil, length=nil>, nil] >}
283
+ end
284
+
285
+ it { Song::Create.(params: {"song" => { title: "SVG", length: 13 }}).inspect(:model).must_equal %{<Result:true [#<struct DocsContractKeyWithOutputTest::Song title=\"SVG\", length=13>] >} }
286
+ it do
287
+ #:key-output-res
288
+ result = Song::Create.(params: { "song" => { title: "Rising Force", length: 13 } })
289
+ result.success? #=> true
290
+ #:key-output-res end
291
+
292
+ #:key-output-res-false
293
+ result = Song::Create.(params: { title: "Rising Force", length: 13 })
294
+ result.success? #=> false
295
+ result.event #=> #<Trailblazer::Activity::End semantic=:key_not_found>
296
+ #:key-output-res-false end
297
+ end
298
+ end
299
+
260
300
  #- Contract::Build[ constant: XXX, name: AAA ]
261
301
  class ContractNamedConstantTest < Minitest::Spec
262
302
  Song = Class.new(ContractConstantTest::Song)
@@ -361,6 +401,29 @@ class DryValidationContractTest < Minitest::Spec
361
401
  it { Create.(params: { id: 1, title: "" }).inspect(:model).must_equal %{<Result:false [#<struct DryValidationContractTest::Song id=nil, title=nil>] >} }
362
402
  it { Create.(params: { id: 1, title: "Y" }).inspect(:model).must_equal %{<Result:false [#<struct DryValidationContractTest::Song id=nil, title=nil>] >} }
363
403
  it { Create.(params: { id: 1, title: "Yo" }).inspect(:model).must_equal %{<Result:true [#<struct DryValidationContractTest::Song id=1, title="Yo">] >} }
404
+
405
+ #---
406
+ # Contract::Validate(constant: DrySchema)
407
+ class OpWithSchema < Trailblazer::Operation
408
+ Schema = Dry::Validation.Schema do
409
+ required(:title).filled
410
+ end
411
+
412
+ step Model( Song, :new ) # FIXME.
413
+ step Contract::Validate( constant: Schema, key: :song) # generic validate call for you.
414
+ end
415
+
416
+ # success
417
+ it { OpWithSchema.(params: {song: { title: "SVG" }}).success?.must_equal true }
418
+ # failure
419
+ it { OpWithSchema.(params: {song: { title: nil }}).success?.must_equal false }
420
+ it "shows error messages" do
421
+ result = OpWithSchema.(params: {song: { title: nil }})
422
+
423
+ result["result.contract.default"].errors.must_equal(title: ["must be filled"])
424
+ end
425
+ # key not found
426
+ it { OpWithSchema.(params: {}).success?.must_equal false }
364
427
  end
365
428
 
366
429
  class DocContractBuilderTest < Minitest::Spec
@@ -1,4 +1,5 @@
1
1
  require "test_helper"
2
+ require "dry/validation"
2
3
 
3
4
  class ContractTest < Minitest::Spec
4
5
  Song = Struct.new(:title)
@@ -31,7 +31,7 @@ class PersistTest < Minitest::Spec
31
31
  # failure
32
32
  it do
33
33
  result = Create.(params: { title: "Fail!" })
34
- result[:model].saved.must_be_nil
34
+ assert_nil result[:model].saved
35
35
  result[:model].title.must_equal "Fail!"
36
36
  result["2. fail"].must_equal "Persist"
37
37
  result.success?.must_equal false
@@ -42,7 +42,7 @@ class PersistTest < Minitest::Spec
42
42
  class Update < Create
43
43
  end
44
44
 
45
- it { Operation::Inspect.( Update ).must_equal %{[>model.build,>contract.build,>contract.default.validate,<<PersistTest::Create::Fail1,>persist.save,<<PersistTest::Create::Fail2]} }
45
+ it { Trailblazer::Operation::Inspect.( Update ).must_equal %{[>model.build,>contract.build,>contract.default.validate,<<PersistTest::Create::Fail1,>persist.save,<<PersistTest::Create::Fail2]} }
46
46
 
47
47
  #---
48
48
  it do
@@ -27,10 +27,6 @@ module Test
27
27
  ReturnResult = ->(last, input, options) { input }
28
28
  end
29
29
 
30
- require "pp"
31
-
32
- Minitest::Spec::Operation = Trailblazer::Operation
33
-
34
30
  Memo = Struct.new(:id, :body) do
35
31
  def self.find(id)
36
32
  return new(id, "Yo!") if id
@@ -7,33 +7,26 @@ Gem::Specification.new do |spec|
7
7
  spec.version = Trailblazer::Macro::Contract::VERSION
8
8
  spec.authors = ["Nick Sutterer"]
9
9
  spec.email = ["apotonick@gmail.com"]
10
- spec.description = 'Trailblazer operation macros to integrate Reform'
11
- spec.summary = 'Trailblazer operation macros to integrate Reform forms and DRY.rb schemas.'
10
+ spec.description = 'Trailblazer operation form object specific macros'
11
+ spec.summary = 'Macros for form-objects: Build, Validate, Persist'
12
12
  spec.homepage = "http://trailblazer.to"
13
- spec.license = "LGPL-3.0"
13
+ spec.license = "MIT"
14
14
 
15
- spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
16
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
16
+ f.match(%r{^test/})
17
+ end
18
+ spec.test_files = `git ls-files -z test`.split("\x0")
18
19
  spec.require_paths = ["lib"]
19
20
 
20
- spec.add_dependency "declarative"
21
21
  spec.add_dependency "reform", ">= 2.2.0", "< 3.0.0"
22
- spec.add_dependency "trailblazer-operation", ">= 0.3.0", "< 0.4.0"
23
22
 
24
23
  spec.add_development_dependency "bundler"
25
- spec.add_development_dependency "trailblazer-macro", ">= 2.1.0.beta2", "< 2.2.0"
26
-
24
+ spec.add_development_dependency "trailblazer-macro", ">= 2.1.0.rc1", "< 2.2.0"
27
25
  spec.add_development_dependency "reform-rails"
28
26
  spec.add_development_dependency "dry-validation"
29
- spec.add_development_dependency "activemodel"
30
27
 
31
28
  spec.add_development_dependency "minitest"
32
- spec.add_development_dependency "nokogiri"
33
29
  spec.add_development_dependency "rake"
34
30
 
35
- spec.add_development_dependency "roar"
36
- spec.add_development_dependency "multi_json"
37
-
38
31
  spec.required_ruby_version = '>= 2.0.0'
39
32
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-macro-contract
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.beta4
4
+ version: 2.1.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-03 00:00:00.000000000 Z
11
+ date: 2018-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: declarative
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: reform
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -44,26 +30,6 @@ dependencies:
44
30
  - - "<"
45
31
  - !ruby/object:Gem::Version
46
32
  version: 3.0.0
47
- - !ruby/object:Gem::Dependency
48
- name: trailblazer-operation
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: 0.3.0
54
- - - "<"
55
- - !ruby/object:Gem::Version
56
- version: 0.4.0
57
- type: :runtime
58
- prerelease: false
59
- version_requirements: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: 0.3.0
64
- - - "<"
65
- - !ruby/object:Gem::Version
66
- version: 0.4.0
67
33
  - !ruby/object:Gem::Dependency
68
34
  name: bundler
69
35
  requirement: !ruby/object:Gem::Requirement
@@ -84,7 +50,7 @@ dependencies:
84
50
  requirements:
85
51
  - - ">="
86
52
  - !ruby/object:Gem::Version
87
- version: 2.1.0.beta2
53
+ version: 2.1.0.rc1
88
54
  - - "<"
89
55
  - !ruby/object:Gem::Version
90
56
  version: 2.2.0
@@ -94,7 +60,7 @@ dependencies:
94
60
  requirements:
95
61
  - - ">="
96
62
  - !ruby/object:Gem::Version
97
- version: 2.1.0.beta2
63
+ version: 2.1.0.rc1
98
64
  - - "<"
99
65
  - !ruby/object:Gem::Version
100
66
  version: 2.2.0
@@ -126,20 +92,6 @@ dependencies:
126
92
  - - ">="
127
93
  - !ruby/object:Gem::Version
128
94
  version: '0'
129
- - !ruby/object:Gem::Dependency
130
- name: activemodel
131
- requirement: !ruby/object:Gem::Requirement
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- version: '0'
136
- type: :development
137
- prerelease: false
138
- version_requirements: !ruby/object:Gem::Requirement
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- version: '0'
143
95
  - !ruby/object:Gem::Dependency
144
96
  name: minitest
145
97
  requirement: !ruby/object:Gem::Requirement
@@ -154,20 +106,6 @@ dependencies:
154
106
  - - ">="
155
107
  - !ruby/object:Gem::Version
156
108
  version: '0'
157
- - !ruby/object:Gem::Dependency
158
- name: nokogiri
159
- requirement: !ruby/object:Gem::Requirement
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- version: '0'
164
- type: :development
165
- prerelease: false
166
- version_requirements: !ruby/object:Gem::Requirement
167
- requirements:
168
- - - ">="
169
- - !ruby/object:Gem::Version
170
- version: '0'
171
109
  - !ruby/object:Gem::Dependency
172
110
  name: rake
173
111
  requirement: !ruby/object:Gem::Requirement
@@ -182,35 +120,7 @@ dependencies:
182
120
  - - ">="
183
121
  - !ruby/object:Gem::Version
184
122
  version: '0'
185
- - !ruby/object:Gem::Dependency
186
- name: roar
187
- requirement: !ruby/object:Gem::Requirement
188
- requirements:
189
- - - ">="
190
- - !ruby/object:Gem::Version
191
- version: '0'
192
- type: :development
193
- prerelease: false
194
- version_requirements: !ruby/object:Gem::Requirement
195
- requirements:
196
- - - ">="
197
- - !ruby/object:Gem::Version
198
- version: '0'
199
- - !ruby/object:Gem::Dependency
200
- name: multi_json
201
- requirement: !ruby/object:Gem::Requirement
202
- requirements:
203
- - - ">="
204
- - !ruby/object:Gem::Version
205
- version: '0'
206
- type: :development
207
- prerelease: false
208
- version_requirements: !ruby/object:Gem::Requirement
209
- requirements:
210
- - - ">="
211
- - !ruby/object:Gem::Version
212
- version: '0'
213
- description: Trailblazer operation macros to integrate Reform
123
+ description: Trailblazer operation form object specific macros
214
124
  email:
215
125
  - apotonick@gmail.com
216
126
  executables: []
@@ -241,7 +151,7 @@ files:
241
151
  - trailblazer-macro-contract.gemspec
242
152
  homepage: http://trailblazer.to
243
153
  licenses:
244
- - LGPL-3.0
154
+ - MIT
245
155
  metadata: {}
246
156
  post_install_message:
247
157
  rdoc_options: []
@@ -262,7 +172,7 @@ rubyforge_project:
262
172
  rubygems_version: 2.7.3
263
173
  signing_key:
264
174
  specification_version: 4
265
- summary: Trailblazer operation macros to integrate Reform forms and DRY.rb schemas.
175
+ summary: 'Macros for form-objects: Build, Validate, Persist'
266
176
  test_files:
267
177
  - test/docs/contract_test.rb
268
178
  - test/docs/dry_test.rb