danmayer-metric_fu 2.1.2

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 (120) hide show
  1. data/HISTORY +237 -0
  2. data/MIT-LICENSE +22 -0
  3. data/README +29 -0
  4. data/Rakefile +18 -0
  5. data/TODO +6 -0
  6. data/lib/base/base_template.rb +172 -0
  7. data/lib/base/churn_analyzer.rb +38 -0
  8. data/lib/base/code_issue.rb +97 -0
  9. data/lib/base/configuration.rb +199 -0
  10. data/lib/base/flay_analyzer.rb +50 -0
  11. data/lib/base/flog_analyzer.rb +43 -0
  12. data/lib/base/generator.rb +166 -0
  13. data/lib/base/graph.rb +44 -0
  14. data/lib/base/line_numbers.rb +74 -0
  15. data/lib/base/location.rb +85 -0
  16. data/lib/base/md5_tracker.rb +52 -0
  17. data/lib/base/metric_analyzer.rb +404 -0
  18. data/lib/base/ranking.rb +34 -0
  19. data/lib/base/rcov_analyzer.rb +43 -0
  20. data/lib/base/reek_analyzer.rb +163 -0
  21. data/lib/base/report.rb +108 -0
  22. data/lib/base/roodi_analyzer.rb +37 -0
  23. data/lib/base/saikuro_analyzer.rb +48 -0
  24. data/lib/base/scoring_strategies.rb +29 -0
  25. data/lib/base/stats_analyzer.rb +37 -0
  26. data/lib/base/table.rb +102 -0
  27. data/lib/generators/churn.rb +28 -0
  28. data/lib/generators/flay.rb +31 -0
  29. data/lib/generators/flog.rb +111 -0
  30. data/lib/generators/hotspots.rb +52 -0
  31. data/lib/generators/rails_best_practices.rb +53 -0
  32. data/lib/generators/rcov.rb +122 -0
  33. data/lib/generators/reek.rb +81 -0
  34. data/lib/generators/roodi.rb +35 -0
  35. data/lib/generators/saikuro.rb +256 -0
  36. data/lib/generators/stats.rb +58 -0
  37. data/lib/graphs/engines/bluff.rb +113 -0
  38. data/lib/graphs/engines/gchart.rb +157 -0
  39. data/lib/graphs/flay_grapher.rb +18 -0
  40. data/lib/graphs/flog_grapher.rb +57 -0
  41. data/lib/graphs/grapher.rb +11 -0
  42. data/lib/graphs/rails_best_practices_grapher.rb +19 -0
  43. data/lib/graphs/rcov_grapher.rb +18 -0
  44. data/lib/graphs/reek_grapher.rb +30 -0
  45. data/lib/graphs/roodi_grapher.rb +18 -0
  46. data/lib/graphs/stats_grapher.rb +20 -0
  47. data/lib/metric_fu.rb +40 -0
  48. data/lib/templates/awesome/awesome_template.rb +73 -0
  49. data/lib/templates/awesome/churn.html.erb +58 -0
  50. data/lib/templates/awesome/css/buttons.css +82 -0
  51. data/lib/templates/awesome/css/default.css +91 -0
  52. data/lib/templates/awesome/css/integrity.css +334 -0
  53. data/lib/templates/awesome/css/reset.css +7 -0
  54. data/lib/templates/awesome/css/syntax.css +19 -0
  55. data/lib/templates/awesome/flay.html.erb +34 -0
  56. data/lib/templates/awesome/flog.html.erb +55 -0
  57. data/lib/templates/awesome/hotspots.html.erb +62 -0
  58. data/lib/templates/awesome/index.html.erb +34 -0
  59. data/lib/templates/awesome/layout.html.erb +30 -0
  60. data/lib/templates/awesome/rails_best_practices.html.erb +27 -0
  61. data/lib/templates/awesome/rcov.html.erb +42 -0
  62. data/lib/templates/awesome/reek.html.erb +40 -0
  63. data/lib/templates/awesome/roodi.html.erb +27 -0
  64. data/lib/templates/awesome/saikuro.html.erb +71 -0
  65. data/lib/templates/awesome/stats.html.erb +51 -0
  66. data/lib/templates/javascripts/bluff-min.js +1 -0
  67. data/lib/templates/javascripts/excanvas.js +35 -0
  68. data/lib/templates/javascripts/js-class.js +1 -0
  69. data/lib/templates/standard/churn.html.erb +31 -0
  70. data/lib/templates/standard/default.css +64 -0
  71. data/lib/templates/standard/flay.html.erb +34 -0
  72. data/lib/templates/standard/flog.html.erb +57 -0
  73. data/lib/templates/standard/hotspots.html.erb +54 -0
  74. data/lib/templates/standard/index.html.erb +41 -0
  75. data/lib/templates/standard/rails_best_practices.html.erb +29 -0
  76. data/lib/templates/standard/rcov.html.erb +43 -0
  77. data/lib/templates/standard/reek.html.erb +42 -0
  78. data/lib/templates/standard/roodi.html.erb +29 -0
  79. data/lib/templates/standard/saikuro.html.erb +84 -0
  80. data/lib/templates/standard/standard_template.rb +26 -0
  81. data/lib/templates/standard/stats.html.erb +55 -0
  82. data/spec/base/base_template_spec.rb +177 -0
  83. data/spec/base/configuration_spec.rb +276 -0
  84. data/spec/base/generator_spec.rb +223 -0
  85. data/spec/base/graph_spec.rb +61 -0
  86. data/spec/base/line_numbers_spec.rb +62 -0
  87. data/spec/base/md5_tracker_spec.rb +57 -0
  88. data/spec/base/report_spec.rb +146 -0
  89. data/spec/generators/churn_spec.rb +41 -0
  90. data/spec/generators/flay_spec.rb +105 -0
  91. data/spec/generators/flog_spec.rb +70 -0
  92. data/spec/generators/rails_best_practices_spec.rb +52 -0
  93. data/spec/generators/rcov_spec.rb +180 -0
  94. data/spec/generators/reek_spec.rb +134 -0
  95. data/spec/generators/roodi_spec.rb +24 -0
  96. data/spec/generators/saikuro_spec.rb +74 -0
  97. data/spec/generators/stats_spec.rb +74 -0
  98. data/spec/graphs/engines/bluff_spec.rb +19 -0
  99. data/spec/graphs/engines/gchart_spec.rb +156 -0
  100. data/spec/graphs/flay_grapher_spec.rb +56 -0
  101. data/spec/graphs/flog_grapher_spec.rb +108 -0
  102. data/spec/graphs/rails_best_practices_grapher_spec.rb +61 -0
  103. data/spec/graphs/rcov_grapher_spec.rb +56 -0
  104. data/spec/graphs/reek_grapher_spec.rb +65 -0
  105. data/spec/graphs/roodi_grapher_spec.rb +56 -0
  106. data/spec/graphs/stats_grapher_spec.rb +68 -0
  107. data/spec/resources/line_numbers/foo.rb +33 -0
  108. data/spec/resources/line_numbers/module.rb +11 -0
  109. data/spec/resources/line_numbers/module_surrounds_class.rb +15 -0
  110. data/spec/resources/line_numbers/two_classes.rb +11 -0
  111. data/spec/resources/saikuro/app/controllers/sessions_controller.rb_cyclo.html +10 -0
  112. data/spec/resources/saikuro/app/controllers/users_controller.rb_cyclo.html +16 -0
  113. data/spec/resources/saikuro/index_cyclo.html +155 -0
  114. data/spec/resources/saikuro_sfiles/thing.rb_cyclo.html +11 -0
  115. data/spec/resources/yml/20090630.yml +7922 -0
  116. data/spec/resources/yml/metric_missing.yml +1 -0
  117. data/spec/spec.opts +6 -0
  118. data/spec/spec_helper.rb +7 -0
  119. data/tasks/metric_fu.rake +22 -0
  120. metadata +462 -0
@@ -0,0 +1,56 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe FlayGrapher do
4
+ before :each do
5
+ @flay_grapher = MetricFu::FlayGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to flay_score and labels" do
10
+ @flay_grapher.should respond_to(:flay_score)
11
+ @flay_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise flay_score and labels" do
16
+ @flay_grapher.flay_score.should == []
17
+ @flay_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "1/2"
26
+ end
27
+
28
+ it "should not push to flay_score" do
29
+ @flay_grapher.flay_score.should_not_receive(:push)
30
+ @flay_grapher.get_metrics(@metrics, @date)
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @flay_grapher.labels.should_not_receive(:update)
35
+ @flay_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "1/2"
43
+ end
44
+
45
+ it "should push to flay_score" do
46
+ @flay_grapher.flay_score.should_receive(:push).with(476)
47
+ @flay_grapher.get_metrics(@metrics, @date)
48
+ end
49
+
50
+ it "should update labels with the date" do
51
+ @flay_grapher.labels.should_receive(:update).with({ 0 => "1/2" })
52
+ @flay_grapher.get_metrics(@metrics, @date)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,108 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe MetricFu::FlogGrapher do
4
+ before :each do
5
+ MetricFu.configuration
6
+ @flog_grapher = MetricFu::FlogGrapher.new
7
+
8
+ end
9
+
10
+ it "should respond to flog_total, flog_average and labels" do
11
+ @flog_grapher.should respond_to(:flog_average)
12
+ @flog_grapher.should respond_to(:labels)
13
+ @flog_grapher.should respond_to(:top_five_percent_average)
14
+ end
15
+
16
+ describe "responding to #initialize" do
17
+ it "should initialize top_five_percent_average, flog_average and labels" do
18
+ @flog_grapher.flog_average.should == []
19
+ @flog_grapher.labels.should == {}
20
+ @flog_grapher.top_five_percent_average.should == []
21
+ end
22
+ end
23
+
24
+ describe "responding to #get_metrics" do
25
+ before(:each) do
26
+ methods = {}
27
+ 100.times do |i|
28
+ methods["method_name_#{i}"] = {:score => i.to_f}
29
+ end
30
+
31
+ @metrics = {:flog => {:total => 111.1,
32
+ :average => 7.7,
33
+ :method_containers => [ {:methods => methods } ] } }
34
+ @date = "1/2"
35
+ end
36
+
37
+ it "should push to top_five_percent_average" do
38
+ average = (99.0 + 98.0 + 97.0 + 96.0 + 95.0) / 5.0
39
+ @flog_grapher.top_five_percent_average.should_receive(:push).with(average)
40
+ @flog_grapher.get_metrics(@metrics, @date)
41
+ end
42
+
43
+ it "should push 9.9 to flog_average" do
44
+ @flog_grapher.flog_average.should_receive(:push).with(7.7)
45
+ @flog_grapher.get_metrics(@metrics, @date)
46
+ end
47
+
48
+ context "when metrics were not generated" do
49
+ before(:each) do
50
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
51
+ @date = "1/2"
52
+ end
53
+
54
+ it "should not push to top_five_percent_average" do
55
+ @flog_grapher.top_five_percent_average.should_not_receive(:push)
56
+ @flog_grapher.get_metrics(@metrics, @date)
57
+ end
58
+
59
+ it "should not push to flog_average" do
60
+ @flog_grapher.flog_average.should_not_receive(:push)
61
+ @flog_grapher.get_metrics(@metrics, @date)
62
+ end
63
+
64
+ it "should not update labels with the date" do
65
+ @flog_grapher.labels.should_not_receive(:update)
66
+ @flog_grapher.get_metrics(@metrics, @date)
67
+ end
68
+ end
69
+
70
+ context "when metrics have been generated" do
71
+ before(:each) do
72
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
73
+ @date = "1/2"
74
+ end
75
+
76
+ it "should push to top_five_percent_average" do
77
+ average = (73.6 + 68.5 + 66.1 + 46.6 + 44.8 + 44.1 + 41.2 + 36.0) / 8.0
78
+ @flog_grapher.top_five_percent_average.should_receive(:push).with(average)
79
+ @flog_grapher.get_metrics(@metrics, @date)
80
+ end
81
+
82
+ it "should push to flog_average" do
83
+ @flog_grapher.flog_average.should_receive(:push).with(9.9)
84
+ @flog_grapher.get_metrics(@metrics, @date)
85
+ end
86
+
87
+ it "should update labels with the date" do
88
+ @flog_grapher.labels.should_receive(:update).with({ 0 => "1/2" })
89
+ @flog_grapher.get_metrics(@metrics, @date)
90
+ end
91
+ end
92
+ end
93
+
94
+ describe "responding to #get_metrics with legacy data" do
95
+ before(:each) do
96
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
97
+
98
+ @date = "1/2"
99
+ end
100
+
101
+ it "should push to top_five_percent_average" do
102
+ average = (73.6 + 68.5 + 66.1 + 46.6 + 44.8 + 44.1 + 41.2 + 36.0) / 8.0
103
+ @flog_grapher.top_five_percent_average.should_receive(:push).with(average)
104
+ @flog_grapher.get_metrics(@metrics, @date)
105
+ end
106
+ end
107
+
108
+ end
@@ -0,0 +1,61 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe RailsBestPracticesGrapher do
4
+ before :each do
5
+ @stats_grapher = MetricFu::RailsBestPracticesGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to rails_best_practices_count and labels" do
10
+ @stats_grapher.should respond_to(:rails_best_practices_count)
11
+ @stats_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise rails_best_practices_count and labels" do
16
+ @stats_grapher.rails_best_practices_count.should == []
17
+ @stats_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "01022003"
26
+ end
27
+
28
+ it "should not push to rails_best_practices_count" do
29
+ @stats_grapher.rails_best_practices_count.should_not_receive(:push)
30
+ @stats_grapher.get_metrics(@metrics, @date)
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @stats_grapher.labels.should_not_receive(:update)
35
+ @stats_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "01022003"
43
+ end
44
+
45
+ it "should push to rails_best_practices_count" do
46
+ @stats_grapher.rails_best_practices_count.should_receive(:push).with(2)
47
+ @stats_grapher.get_metrics(@metrics, @date)
48
+ end
49
+
50
+ it "should push 0 to rails_best_practices_count when no problems were found" do
51
+ @stats_grapher.rails_best_practices_count.should_receive(:push).with(0)
52
+ @stats_grapher.get_metrics({ :rails_best_practices => {} }, @date)
53
+ end
54
+
55
+ it "should update labels with the date" do
56
+ @stats_grapher.labels.should_receive(:update).with({ 0 => "01022003" })
57
+ @stats_grapher.get_metrics(@metrics, @date)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe RcovGrapher do
4
+ before :each do
5
+ @rcov_grapher = MetricFu::RcovGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to rcov_percent and labels" do
10
+ @rcov_grapher.should respond_to(:rcov_percent)
11
+ @rcov_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise rcov_percent and labels" do
16
+ @rcov_grapher.rcov_percent.should == []
17
+ @rcov_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "1/2"
26
+ end
27
+
28
+ it "should not push to rcov_percent" do
29
+ @rcov_grapher.rcov_percent.should_not_receive(:push)
30
+ @rcov_grapher.get_metrics(@metrics, @date)
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @rcov_grapher.labels.should_not_receive(:update)
35
+ @rcov_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "1/2"
43
+ end
44
+
45
+ it "should push to rcov_percent" do
46
+ @rcov_grapher.rcov_percent.should_receive(:push).with(49.6)
47
+ @rcov_grapher.get_metrics(@metrics, @date)
48
+ end
49
+
50
+ it "should update labels with the date" do
51
+ @rcov_grapher.labels.should_receive(:update).with({ 0 => "1/2" })
52
+ @rcov_grapher.get_metrics(@metrics, @date)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,65 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe ReekGrapher do
4
+ before :each do
5
+ @reek_grapher = MetricFu::ReekGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to reek_count and labels" do
10
+ @reek_grapher.should respond_to(:reek_count)
11
+ @reek_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise reek_count and labels" do
16
+ @reek_grapher.reek_count.should == {}
17
+ @reek_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "1/2"
26
+ end
27
+
28
+ it "should not set a hash of code smells to reek_count" do
29
+ @reek_grapher.get_metrics(@metrics, @date)
30
+ @reek_grapher.reek_count.should == {}
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @reek_grapher.labels.should_not_receive(:update)
35
+ @reek_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "1/2"
43
+ end
44
+
45
+ it "should set a hash of code smells to reek_count" do
46
+ @reek_grapher.get_metrics(@metrics, @date)
47
+ @reek_grapher.reek_count.should == {
48
+ "Uncommunicative Name" => [27],
49
+ "Feature Envy" => [20],
50
+ "Utility Function" => [15],
51
+ "Long Method" => [26],
52
+ "Nested Iterators" => [12],
53
+ "Control Couple" => [4],
54
+ "Duplication" => [48],
55
+ "Large Class" => [1]
56
+ }
57
+ end
58
+
59
+ it "should update labels with the date" do
60
+ @reek_grapher.labels.should_receive(:update).with({ 0 => "1/2" })
61
+ @reek_grapher.get_metrics(@metrics, @date)
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe RoodiGrapher do
4
+ before :each do
5
+ @roodi_grapher = MetricFu::RoodiGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to roodi_count and labels" do
10
+ @roodi_grapher.should respond_to(:roodi_count)
11
+ @roodi_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise roodi_count and labels" do
16
+ @roodi_grapher.roodi_count.should == []
17
+ @roodi_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "1/2"
26
+ end
27
+
28
+ it "should not push to roodi_count" do
29
+ @roodi_grapher.roodi_count.should_not_receive(:push)
30
+ @roodi_grapher.get_metrics(@metrics, @date)
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @roodi_grapher.labels.should_not_receive(:update)
35
+ @roodi_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "1/2"
43
+ end
44
+
45
+ it "should push to roodi_count" do
46
+ @roodi_grapher.roodi_count.should_receive(:push).with(13)
47
+ @roodi_grapher.get_metrics(@metrics, @date)
48
+ end
49
+
50
+ it "should update labels with the date" do
51
+ @roodi_grapher.labels.should_receive(:update).with({ 0 => "1/2" })
52
+ @roodi_grapher.get_metrics(@metrics, @date)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,68 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe StatsGrapher do
4
+ before :each do
5
+ @stats_grapher = MetricFu::StatsGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to loc_counts and lot_counts and labels" do
10
+ @stats_grapher.should respond_to(:loc_counts)
11
+ @stats_grapher.should respond_to(:lot_counts)
12
+ @stats_grapher.should respond_to(:labels)
13
+ end
14
+
15
+ describe "responding to #initialize" do
16
+ it "should initialise loc_counts and lot_counts and labels" do
17
+ @stats_grapher.loc_counts.should == []
18
+ @stats_grapher.lot_counts.should == []
19
+ @stats_grapher.labels.should == {}
20
+ end
21
+ end
22
+
23
+ describe "responding to #get_metrics" do
24
+ context "when metrics were not generated" do
25
+ before(:each) do
26
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
27
+ @date = "01022003"
28
+ end
29
+
30
+ it "should not push to loc_counts" do
31
+ @stats_grapher.loc_counts.should_not_receive(:push)
32
+ @stats_grapher.get_metrics(@metrics, @date)
33
+ end
34
+
35
+ it "should not push to lot_counts" do
36
+ @stats_grapher.lot_counts.should_not_receive(:push)
37
+ @stats_grapher.get_metrics(@metrics, @date)
38
+ end
39
+
40
+ it "should not update labels with the date" do
41
+ @stats_grapher.labels.should_not_receive(:update)
42
+ @stats_grapher.get_metrics(@metrics, @date)
43
+ end
44
+ end
45
+
46
+ context "when metrics have been generated" do
47
+ before(:each) do
48
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
49
+ @date = "01022003"
50
+ end
51
+
52
+ it "should push to loc_counts" do
53
+ @stats_grapher.loc_counts.should_receive(:push).with(15935)
54
+ @stats_grapher.get_metrics(@metrics, @date)
55
+ end
56
+
57
+ it "should push to lot_counts" do
58
+ @stats_grapher.lot_counts.should_receive(:push).with(7438)
59
+ @stats_grapher.get_metrics(@metrics, @date)
60
+ end
61
+
62
+ it "should update labels with the date" do
63
+ @stats_grapher.labels.should_receive(:update).with({ 0 => "01022003" })
64
+ @stats_grapher.get_metrics(@metrics, @date)
65
+ end
66
+ end
67
+ end
68
+ end