completeness-fu 0.5.0 → 0.5.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.
- data/VERSION.yml +2 -2
- data/lib/completeness-fu.rb +2 -2
- data/lib/completeness-fu/active_record_additions.rb +27 -18
- data/lib/completeness-fu/scoring_builder.rb +1 -1
- data/test/scoring_test.rb +16 -2
- metadata +2 -2
data/VERSION.yml
CHANGED
data/lib/completeness-fu.rb
CHANGED
@@ -10,11 +10,11 @@ end
|
|
10
10
|
|
11
11
|
CompletenessFu.common_weightings = { :low => 20, :medium => 40, :high => 60 }
|
12
12
|
|
13
|
-
CompletenessFu.
|
13
|
+
CompletenessFu.default_weighting = 40
|
14
14
|
|
15
15
|
CompletenessFu.default_i18n_namespace = [:completeness_scoring, :models]
|
16
16
|
|
17
|
-
CompletenessFu.
|
17
|
+
CompletenessFu.default_gradings = { :poor => 0..24,
|
18
18
|
:low => 25..49,
|
19
19
|
:medium => 50..79,
|
20
20
|
:high => 80..100 }
|
@@ -2,11 +2,12 @@ module CompletenessFu
|
|
2
2
|
|
3
3
|
class << self
|
4
4
|
attr_accessor :common_weightings
|
5
|
-
attr_accessor :
|
5
|
+
attr_accessor :default_weighting
|
6
6
|
attr_accessor :default_i18n_namespace
|
7
|
-
attr_accessor :
|
7
|
+
attr_accessor :default_gradings
|
8
8
|
end
|
9
9
|
|
10
|
+
class CompletenessFuError < Exception; end
|
10
11
|
|
11
12
|
module ActiveRecordAdditions
|
12
13
|
|
@@ -41,24 +42,12 @@ module CompletenessFu
|
|
41
42
|
module InstanceMethods
|
42
43
|
# returns an array of hashes with the translated name, description + weighting
|
43
44
|
def failed_checks
|
44
|
-
|
45
|
-
failures << translate_check_details(check) if not check[:check].call(self)
|
46
|
-
failures
|
47
|
-
end
|
45
|
+
all_checks_which_pass(false)
|
48
46
|
end
|
49
47
|
|
50
48
|
# returns an array of hashes with the translated name, description + weighting
|
51
49
|
def passed_checks
|
52
|
-
|
53
|
-
case check[:check]
|
54
|
-
when Proc
|
55
|
-
passed << translate_check_details(check) if check[:check].call(self)
|
56
|
-
when Symbol
|
57
|
-
passed << translate_check_details(check) if self.send check[:check]
|
58
|
-
end
|
59
|
-
|
60
|
-
passed
|
61
|
-
end
|
50
|
+
all_checks_which_pass
|
62
51
|
end
|
63
52
|
|
64
53
|
# returns the absolute complete score
|
@@ -75,14 +64,34 @@ module CompletenessFu
|
|
75
64
|
|
76
65
|
# returns a basic 'grading' based on percent_complete, defaults are :high, :medium, :low, and :poor
|
77
66
|
def completeness_grade
|
78
|
-
CompletenessFu.
|
79
|
-
return grading.first if grading.last.include?(self.percent_complete)
|
67
|
+
CompletenessFu.default_gradings.each do |grading|
|
68
|
+
return grading.first if grading.last.include?(self.percent_complete.round)
|
80
69
|
end
|
70
|
+
raise CompletenessFuError, "grade could not be determined with percent complete #{self.percent_complete.round}"
|
81
71
|
end
|
82
72
|
|
83
73
|
|
84
74
|
private
|
85
75
|
|
76
|
+
def all_checks_which_pass(should_pass = true)
|
77
|
+
self.completeness_checks.inject([]) do |results, check|
|
78
|
+
check_result = run_check(check[:check])
|
79
|
+
results << translate_check_details(check) if (should_pass ? check_result : !check_result)
|
80
|
+
results
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def run_check(check)
|
85
|
+
case check
|
86
|
+
when Proc
|
87
|
+
return check.call(self)
|
88
|
+
when Symbol
|
89
|
+
return self.send check
|
90
|
+
else
|
91
|
+
raise CompletenessFuError, "check of type #{check.class} not acceptable"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
86
95
|
def translate_check_details(full_check)
|
87
96
|
namespace = CompletenessFu.default_i18n_namespace + [self.class.name.downcase.to_sym, full_check[:name]]
|
88
97
|
|
@@ -9,7 +9,7 @@ module CompletenessFu
|
|
9
9
|
sb = ScoringBuilder.new
|
10
10
|
|
11
11
|
sb.completeness_checks = []
|
12
|
-
sb.default_weighting = CompletenessFu.
|
12
|
+
sb.default_weighting = CompletenessFu.default_weighting
|
13
13
|
sb.model_weightings = CompletenessFu.common_weightings
|
14
14
|
|
15
15
|
sb.instance_eval(&block)
|
data/test/scoring_test.rb
CHANGED
@@ -134,21 +134,35 @@ class ScoringTest < Test::Unit::TestCase
|
|
134
134
|
ScoringTest.class_eval do
|
135
135
|
define_completeness_scoring do
|
136
136
|
check :title, :title_present?, :high
|
137
|
+
check :name, :name_present?, :high
|
137
138
|
end
|
138
|
-
|
139
|
+
|
139
140
|
private
|
140
141
|
def title_present?
|
141
142
|
self.title.present?
|
142
143
|
end
|
144
|
+
|
145
|
+
def name_present?
|
146
|
+
false
|
147
|
+
end
|
148
|
+
|
143
149
|
end
|
144
150
|
@st = ScoringTest.new
|
145
151
|
@st.title = 'I have a title'
|
146
152
|
end
|
147
|
-
|
153
|
+
|
154
|
+
should "have the correct failing checks" do
|
155
|
+
assert_equal 1, @st.passed_checks.size
|
156
|
+
assert_equal 1, @st.failed_checks.size
|
157
|
+
assert_equal 60, @st.completeness_score
|
158
|
+
assert_equal 50.0, @st.percent_complete
|
159
|
+
end
|
160
|
+
|
148
161
|
should "have a scoring from the common_weightings hash used used" do
|
149
162
|
assert_equal 1, @st.passed_checks.size
|
150
163
|
assert_equal 60, @st.completeness_score
|
151
164
|
end
|
165
|
+
|
152
166
|
end
|
153
167
|
|
154
168
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: completeness-fu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Kalderimis
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-15 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|