reflekt 0.1.0 → 0.3.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/reflekt.rb +60 -5
  3. metadata +18 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a89b5337a81d488c544ebb0d99d776ab3023f247170ca3921e6b3bd7e95d434c
4
- data.tar.gz: 318edd93d1a77f78ff65de68510146ecbae84975b09da0e07d2ac4ee64176e15
3
+ metadata.gz: 8ea7a5f25f96a57be5a969ed1648f50d609dba6072b9a7543a7b4304b7242dbb
4
+ data.tar.gz: df11f9353775f6af904ac08e8718f324e9c15d8b3975b9a35b21d28a8dc54d2f
5
5
  SHA512:
6
- metadata.gz: 05ff6c5822257819b093ce9625aad2b85fbe676673cef28a17e4d6cc47b0e2cba323ccf0c72b3ac6bc96320efa811f71681cf9c8ee6f2ba132535c9a3d5d646e
7
- data.tar.gz: 4fa5958b8766c9604e636ec180cf2b83bfd2cfc5423681b96f1bc01aaa944aae13da319b9ec4514b6be1a94ed590f64761f84b88d85484cc05593dcd543d6c27
6
+ metadata.gz: dca4b9717d22ced3ca520f138b56c1eee19b0ec1e771d045aa1f1e76de7e532bc5f71a9e9482ab39b03ceab6517904da9876750b1e05d3da91a21fe49a505589
7
+ data.tar.gz: 2b55b64dbafd84e1e0a36e39291f6ef8aa10a91bb25f22e838b2fdc27565a6e677c1cdd010890fa5dca34765e433771529b5516a67c8dc44ca5fb55bcf4873ac
@@ -1,9 +1,17 @@
1
1
  require 'set'
2
2
 
3
+ # Production.
4
+ require 'rowdb'
5
+
6
+ # Development.
7
+ #require_relative '../../rowdb/lib/rowdb.rb'
8
+ #require_relative '../../rowdb/lib/adapters/Adapter.rb'
9
+ #require_relative '../../rowdb/lib/adapters/FileSystem.rb'
10
+
3
11
  ################################################################################
4
12
  # REFLEKT
5
13
  #
6
- # Must be defined before the class it's included in.
14
+ # Usage. Prepend to the class like so:
7
15
  #
8
16
  # class ExampleClass
9
17
  # prepend Reflekt
@@ -29,6 +37,8 @@ module Reflekt
29
37
  @reflekt_clones.each do |clone|
30
38
  reflekt_action(clone, method, *args)
31
39
  end
40
+ # Save results.
41
+ @@db.write()
32
42
  end
33
43
  end
34
44
 
@@ -58,6 +68,9 @@ module Reflekt
58
68
 
59
69
  def reflekt_action(clone, method, *args)
60
70
 
71
+ class_name = clone.class.to_s
72
+ method_name = method.to_s
73
+
61
74
  # Create new arguments.
62
75
  new_args = []
63
76
  args.each do |arg|
@@ -72,17 +85,59 @@ module Reflekt
72
85
  # Action method with new arguments.
73
86
  begin
74
87
  clone.send(method, *new_args)
88
+
89
+ # Build reflection.
90
+ reflection = {
91
+ "time" => Time.now.to_i,
92
+ }
93
+ # When error.
75
94
  rescue StandardError => error
76
- p error
95
+ reflection["status"] = "error"
96
+ reflection["error"] = error
97
+ # When success.
77
98
  else
78
- puts "Success."
99
+ reflection["status"] = "success"
79
100
  end
80
101
 
102
+ # Save reflection.
103
+ @@db.get("#{class_name}.#{method_name}")
104
+ .push(reflection)
105
+
81
106
  end
82
107
 
108
+ private
109
+
83
110
  # Prepend Klass to the instance's singleton class.
84
111
  def self.prepended(base)
85
112
  base.singleton_class.prepend(Klass)
113
+
114
+ @@setup ||= setup_klass
115
+ end
116
+
117
+ # Setup Klass.
118
+ def self.setup_klass()
119
+
120
+ # Receive configuration from host application.
121
+ $ENV ||= {}
122
+ $ENV[:reflekt] ||= $ENV[:reflekt] = {}
123
+
124
+ # Create "reflections" directory in configured path.
125
+ if $ENV[:reflekt][:output_path]
126
+ dir_path = File.join($ENV[:reflekt][:output_path], 'reflections')
127
+ # Create "reflections" directory in current execution path.
128
+ else
129
+ dir_path = File.join(Dir.pwd, 'reflections')
130
+ end
131
+
132
+ unless Dir.exist? dir_path
133
+ Dir.mkdir(dir_path)
134
+ end
135
+
136
+ # Create database.
137
+ @@db = Rowdb.new(dir_path + '/db.json')
138
+ @@db.defaults({"reflections" => []})
139
+
140
+ return true
86
141
  end
87
142
 
88
143
  module Klass
@@ -90,11 +145,11 @@ module Reflekt
90
145
  @@deflekted_methods = Set.new
91
146
 
92
147
  ##
93
- # Don't reflekt every method.
148
+ # Skip a method.
94
149
  #
95
150
  # method - A symbol representing the method name.
96
151
  ##
97
- def deflekt(method)
152
+ def reflekt_skip(method)
98
153
  @@deflekted_methods.add(method)
99
154
  end
100
155
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reflekt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maedi Prichard
@@ -9,8 +9,22 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2020-07-18 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Reflection-driven development using reflection testing.
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rowdb
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
+ description: Reflective testing that's completely automated.
14
28
  email: maediprichard@gmailcom
15
29
  executables: []
16
30
  extensions: []
@@ -39,5 +53,5 @@ requirements: []
39
53
  rubygems_version: 3.0.2
40
54
  signing_key:
41
55
  specification_version: 4
42
- summary: Reflection-driven development.
56
+ summary: Reflective testing that's completely automated.
43
57
  test_files: []