trailblazer-core-utils 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fc15bc9574a978aa4195fabd689b8d9c359c72ad43a1da2c93001e06df285cef
4
+ data.tar.gz: 336e6e60a0dd6ef4e46600bd31188fc749cd3f2c005f65da67a6771d7018b920
5
+ SHA512:
6
+ metadata.gz: bac547764b842d9cadf77398088fb885f8bc284a1abbdaed2b9efe6650d4eb8a438e370727182187c0b80ce3bdf3cfb07974f744045af79f7f74a37cdda80aa6
7
+ data.tar.gz: 8b4fca447de1b17f782482238db9488df31efceb7b6847bf60f858e2e9eb3ca7b3e692b47b34b85c6ad2b4e40faf9a20670396c107b587a8d09112b3337c75a4
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## [Unreleased]
2
+
3
+ ## [0.0.1] - 2022-12-13
4
+
5
+ - Initial release.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in trailblazer-core-utils.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+
10
+ gem "minitest", "~> 5.0"
data/README.md ADDED
@@ -0,0 +1,14 @@
1
+ # Trailblazer::Core::Utils
2
+
3
+ ## Convert Activity tests to Operation tests
4
+
5
+ In order to show users both `Activity` and `Operation` tests, we have a converter.
6
+ This implies converted tests are written in a specific style.
7
+
8
+ We currently don't use a `bin/` command.
9
+
10
+ ```ruby
11
+ require "trailblazer/core"
12
+ Trailblazer::Core.convert_operation_test("test/docs/model_test.rb")
13
+ Trailblazer::Core.convert_operation_test("test/docs/each_test.rb")
14
+ ```
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test"
8
+ t.libs << "lib"
9
+ t.test_files = FileList["test/**/test_*.rb"]
10
+ end
11
+
12
+ task default: :test
@@ -0,0 +1,78 @@
1
+ module Trailblazer
2
+ module Core
3
+ module Utils
4
+ # Convert an Activity test into an operation test.
5
+ # Store at {test/docs/autogenerated/operation_model_test.rb}
6
+ #
7
+ # {#~ctx_to_result} allows to always convert ctx to result within the block.
8
+
9
+ module ConvertOperationTest
10
+ def self.call(filepath)
11
+ within_marker = false
12
+ within_ignore = false
13
+ within_ctx_to_result = false
14
+
15
+ op_test =
16
+ File.foreach(filepath).collect do |line|
17
+ if line.match(/#:[\w]+/) # FIXME: we don't use this!
18
+ within_marker = true
19
+ end
20
+ if line.match(/#:.+ end/)
21
+ within_marker = false
22
+ end
23
+
24
+ if line.match(/#~ignore/) # FIXME: we don't use this!
25
+ within_ignore = true
26
+ end
27
+ if line.match(/#~ignore end/)
28
+ within_ignore = false
29
+ end
30
+
31
+ if line.match(/#~ctx_to_result/)
32
+ within_ctx_to_result = true
33
+ end
34
+ if line.match(/#~ctx_to_result end/)
35
+ within_ctx_to_result = false
36
+ end
37
+
38
+ if within_ignore
39
+ # puts "@@@@@ #{line.inspect}"
40
+ line = ""
41
+ else
42
+ line = line.sub("< Trailblazer::Activity::Railway", "< Trailblazer::Operation")
43
+ line = line.gsub("::Activity", "::Operation")
44
+
45
+ # if within_marker
46
+ line = line.sub("signal, (ctx, _) =", "result =")
47
+ if within_ctx_to_result
48
+ line = line.sub("ctx[", "result[")
49
+ end
50
+
51
+ if match = line.match(/(Trailblazer::Operation\.\(([\w:]+), ?)/)
52
+ activity = match[2]
53
+ line = line.sub(match[0], "#{activity}.(")
54
+ end
55
+
56
+ if match = line.match(/(\s+)puts signal.+(:\w+)>/)
57
+ semantic = match[2]
58
+ line = "#{match[1]}result.success? # => #{semantic == ":success" ? true : false}\n"
59
+ end
60
+ # end
61
+
62
+ line = line.sub("assert_equal ctx", "assert_equal result")
63
+ line = line.sub("assert_equal signal", "assert_equal result.event")
64
+ end
65
+
66
+ line
67
+ end
68
+
69
+ op_test.insert(1, "module Autogenerated")
70
+ op_test << "end"
71
+
72
+ File.write "test/docs/autogenerated/operation_" + File.basename(filepath), op_test.join("")
73
+ end
74
+
75
+ end # ConvertOperationTest
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,14 @@
1
+ module Trailblazer
2
+ module Core
3
+ module Utils
4
+ # Used to test {missing keyword} exceptions in all Ruby versions.
5
+ def self.symbol_inspect_for(name)
6
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.7.0") || RUBY_ENGINE == 'jruby'
7
+ "#{name}"
8
+ else
9
+ ":#{name}"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ module Trailblazer
2
+ module Core
3
+ module Utils
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "utils/version"
4
+
5
+ module Trailblazer
6
+ module Core
7
+ module Utils
8
+ class Error < StandardError; end
9
+ # Your code goes here...
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ require "trailblazer/core/utils/convert_operation_test"
2
+ require "trailblazer/core/utils/symbol_inspect_for"
3
+
4
+ module Trailblazer
5
+ module Core
6
+ # def self.convert_operation_test(*args, **kws)
7
+ # Utils::ConvertOperationTest.(*args, **kws)
8
+ # end
9
+
10
+ class << self
11
+ extend Forwardable
12
+ def_delegator Utils::ConvertOperationTest, :call, :convert_operation_test
13
+ def_delegator Utils, :symbol_inspect_for
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,8 @@
1
+ module Trailblazer
2
+ module Core
3
+ module Utils
4
+ VERSION: String
5
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
6
+ end
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: trailblazer-core-utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Nick Sutterer
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-12-13 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ - apotonick@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - CHANGELOG.md
21
+ - Gemfile
22
+ - README.md
23
+ - Rakefile
24
+ - lib/trailblazer/core.rb
25
+ - lib/trailblazer/core/utils.rb
26
+ - lib/trailblazer/core/utils/convert_operation_test.rb
27
+ - lib/trailblazer/core/utils/symbol_inspect_for.rb
28
+ - lib/trailblazer/core/utils/version.rb
29
+ - sig/trailblazer/core/utils.rbs
30
+ homepage: https://trailblazer.to
31
+ licenses: []
32
+ metadata:
33
+ homepage_uri: https://trailblazer.to
34
+ source_code_uri: https://github.com/trailblazer/trailblazer-core-utils
35
+ post_install_message:
36
+ rdoc_options: []
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.5.0
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ requirements: []
50
+ rubygems_version: 3.2.3
51
+ signing_key:
52
+ specification_version: 4
53
+ summary: Utilities for Trailblazer core developers.
54
+ test_files: []