reflekt 0.7.0 → 0.7.1
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/lib/reflekt.rb +38 -29
- data/lib/web/template.html.erb +17 -9
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a8f70f5646d8276359aaf74b703172bbadc1d9025d8a716183578365fd91014
|
4
|
+
data.tar.gz: 9666d1aadc1b8ef280ac68da0c66f75b5c399d4eb67898079abcb82aa23baf23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68cecdc1e2552bc59dc4fb3a5001f094425a78dd9b96504e2f3270a9cf82b6767e719e8398731d57c58a6ddf20ca30fe3cae66ff75a172bf7d9f73ce758c7b3b
|
7
|
+
data.tar.gz: cfabac18abb5dda7b90d3cfa0e8494ece8f9c2a48f3fc8a5c8fff8162eddfbee9b8bc9210fd05ae79d384ded033ef69a6eb1b57d84675dd9c0a71e1ab3dbaf67
|
data/lib/reflekt.rb
CHANGED
@@ -13,6 +13,11 @@ require 'rowdb'
|
|
13
13
|
|
14
14
|
module Reflekt
|
15
15
|
|
16
|
+
REFLEKT_STATUS = "s"
|
17
|
+
REFLEKT_PASS = "p"
|
18
|
+
REFLEKT_FAIL = "f"
|
19
|
+
REFLEKT_MESSAGE = "m"
|
20
|
+
|
16
21
|
@@reflekt_clone_count = 5
|
17
22
|
|
18
23
|
def initialize(*args)
|
@@ -21,7 +26,7 @@ module Reflekt
|
|
21
26
|
@reflekt_clones = []
|
22
27
|
|
23
28
|
# Limit the amount of clones that can be created per instance.
|
24
|
-
# A method called
|
29
|
+
# A method called thousands of times doesn't need that many reflections.
|
25
30
|
@reflekt_limit = 5
|
26
31
|
@reflekt_count = 0
|
27
32
|
|
@@ -43,25 +48,7 @@ module Reflekt
|
|
43
48
|
# Save results.
|
44
49
|
@@reflekt_db.write()
|
45
50
|
|
46
|
-
|
47
|
-
@@reflekt_json = File.read("#{@@reflekt_output_path}/db.json")
|
48
|
-
template = File.read("#{@@reflekt_path}/web/template.html.erb")
|
49
|
-
rendered = ERB.new(template).result(binding)
|
50
|
-
File.open("#{@@reflekt_output_path}/index.html", 'w+') do |f|
|
51
|
-
f.write rendered
|
52
|
-
end
|
53
|
-
|
54
|
-
# Add JS.
|
55
|
-
alpinejs = File.read("#{@@reflekt_path}/web/alpine.js")
|
56
|
-
File.open("#{@@reflekt_output_path}/alpine.js", 'w+') do |f|
|
57
|
-
f.write alpinejs
|
58
|
-
end
|
59
|
-
|
60
|
-
# Add CSS.
|
61
|
-
stylesheet = File.read("#{@@reflekt_path}/web/style.css")
|
62
|
-
File.open("#{@@reflekt_output_path}/style.css", 'w+') do |f|
|
63
|
-
f.write stylesheet
|
64
|
-
end
|
51
|
+
reflekt_render()
|
65
52
|
|
66
53
|
end
|
67
54
|
@reflekt_count = @reflekt_count + 1
|
@@ -114,21 +101,43 @@ module Reflekt
|
|
114
101
|
clone.send(method, *new_args)
|
115
102
|
|
116
103
|
# Build reflection.
|
117
|
-
reflection = {
|
118
|
-
|
119
|
-
}
|
104
|
+
reflection = { "time" => Time.now.to_i }
|
105
|
+
|
120
106
|
# When fail.
|
121
|
-
|
122
|
-
reflection[
|
123
|
-
reflection[
|
107
|
+
rescue StandardError => message
|
108
|
+
reflection[REFLEKT_STATUS] = REFLEKT_MESSAGE
|
109
|
+
reflection[REFLEKT_MESSAGE] = message
|
124
110
|
# When pass.
|
125
111
|
else
|
126
|
-
reflection[
|
112
|
+
reflection[REFLEKT_STATUS] = REFLEKT_PASS
|
127
113
|
end
|
128
114
|
|
129
115
|
# Save reflection.
|
130
|
-
@@reflekt_db.get("#{class_name}.#{method_name}")
|
131
|
-
|
116
|
+
@@reflekt_db.get("#{class_name}.#{method_name}").push(reflection)
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
def reflekt_render()
|
121
|
+
|
122
|
+
# Render results.
|
123
|
+
@@reflekt_json = File.read("#{@@reflekt_output_path}/db.json")
|
124
|
+
template = File.read("#{@@reflekt_path}/web/template.html.erb")
|
125
|
+
rendered = ERB.new(template).result(binding)
|
126
|
+
File.open("#{@@reflekt_output_path}/index.html", 'w+') do |f|
|
127
|
+
f.write rendered
|
128
|
+
end
|
129
|
+
|
130
|
+
# Add JS.
|
131
|
+
javascript = File.read("#{@@reflekt_path}/web/alpine.js")
|
132
|
+
File.open("#{@@reflekt_output_path}/alpine.js", 'w+') do |f|
|
133
|
+
f.write javascript
|
134
|
+
end
|
135
|
+
|
136
|
+
# Add CSS.
|
137
|
+
stylesheet = File.read("#{@@reflekt_path}/web/style.css")
|
138
|
+
File.open("#{@@reflekt_output_path}/style.css", 'w+') do |f|
|
139
|
+
f.write stylesheet
|
140
|
+
end
|
132
141
|
|
133
142
|
end
|
134
143
|
|
data/lib/web/template.html.erb
CHANGED
@@ -1,23 +1,30 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html>
|
3
|
+
|
3
4
|
<head>
|
4
5
|
<meta charset="utf-8">
|
5
6
|
<title>Reflekt</title>
|
6
|
-
<meta name="description" content="">
|
7
|
-
<meta name="author" content="">
|
7
|
+
<meta name="description" content="Reflective testing results.">
|
8
|
+
<meta name="author" content="Maedi Prichard">
|
8
9
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
9
10
|
<link rel="stylesheet" href="style.css">
|
10
11
|
<link rel="shortcut icon" href="">
|
11
12
|
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap" rel="stylesheet">
|
12
13
|
<link href="https://fonts.googleapis.com/css2?family=Merriweather&display=swap" rel="stylesheet">
|
13
14
|
</head>
|
15
|
+
|
14
16
|
<body>
|
15
17
|
|
16
18
|
<script>
|
17
19
|
|
20
|
+
const STATUS = "s";
|
21
|
+
const PASS = "p";
|
22
|
+
const FAIL = "f";
|
23
|
+
|
18
24
|
function getReflections() {
|
19
25
|
|
20
26
|
var reflections = JSON.parse(<%= @@reflekt_json %>);
|
27
|
+
console.log("REFLECTIONS:");
|
21
28
|
console.log(reflections);
|
22
29
|
var results = {};
|
23
30
|
|
@@ -43,16 +50,16 @@
|
|
43
50
|
|
44
51
|
// Method pass rate.
|
45
52
|
var pass_count = method.reduce(function(obj, v) {
|
46
|
-
obj[v
|
53
|
+
obj[v[STATUS]] = (obj[v[STATUS]] || 0) + 1;
|
47
54
|
return obj;
|
48
55
|
}, {});
|
49
56
|
|
50
|
-
var pass_rate = (pass_count[
|
57
|
+
var pass_rate = (pass_count[PASS] / method.length) * 100;
|
51
58
|
results[class_id]['methods'][method_id] = {
|
52
59
|
'stats': {
|
53
60
|
'pass_rate': pass_rate,
|
54
61
|
'test_count': method.length,
|
55
|
-
'pass_count': pass_count[
|
62
|
+
'pass_count': pass_count[PASS]
|
56
63
|
}
|
57
64
|
};
|
58
65
|
if (pass_rate == 100) {
|
@@ -64,7 +71,7 @@
|
|
64
71
|
|
65
72
|
// Class pass rate.
|
66
73
|
results[class_id]['stats']['test_count'] += method.length;
|
67
|
-
results[class_id]['stats']['pass_count'] += pass_count[
|
74
|
+
results[class_id]['stats']['pass_count'] += pass_count[PASS];
|
68
75
|
|
69
76
|
}
|
70
77
|
|
@@ -98,14 +105,14 @@
|
|
98
105
|
</div>
|
99
106
|
|
100
107
|
<ul class="panels">
|
101
|
-
<template x-for="[class_id, klass] in Object.entries(
|
108
|
+
<template x-for="[class_id, klass] in Object.entries(refs)" :key="class_id">
|
102
109
|
|
103
110
|
<li class="panel">
|
104
111
|
|
105
112
|
<div class="reflection class" x-bind:class="` ${ klass.status } `">
|
106
113
|
<h2 x-text="` ${class_id}() `"></h2>
|
107
114
|
<div class="stats">
|
108
|
-
<div class="stat" x-text="` ${klass.stats.pass_rate}% `"></div>
|
115
|
+
<div class="stat" x-text="` ${klass.stats.pass_rate.toFixed(2)}% `"></div>
|
109
116
|
</div>
|
110
117
|
</div>
|
111
118
|
|
@@ -114,7 +121,7 @@
|
|
114
121
|
<li class="reflection method" x-bind:class="` ${ method.status } `">
|
115
122
|
<h3 x-text="` ${method_id}() `"></h3>
|
116
123
|
<div class="stats">
|
117
|
-
<div class="stat" x-text="` ${method.stats.pass_rate}% `"></div>
|
124
|
+
<div class="stat" x-text="` ${method.stats.pass_rate.toFixed(2)}% `"></div>
|
118
125
|
</div>
|
119
126
|
</li>
|
120
127
|
</template>
|
@@ -130,4 +137,5 @@
|
|
130
137
|
<script src="alpine.js"></script>
|
131
138
|
|
132
139
|
</body>
|
140
|
+
|
133
141
|
</html>
|