diff --git a/lib/scientist/observation.rb b/lib/scientist/observation.rb index 9082a2b..da23708 100644 --- a/lib/scientist/observation.rb +++ b/lib/scientist/observation.rb @@ -38,9 +38,7 @@ def initialize(name, experiment, &block) # Return a cleaned value suitable for publishing. Uses the experiment's # defined cleaner block to clean the observed value. def cleaned_value - if value - experiment.clean_value value - end + experiment.clean_value value unless value.nil? end # Is this observation equivalent to another? diff --git a/test/scientist/observation_test.rb b/test/scientist/observation_test.rb index 0fbbd7d..dce4327 100644 --- a/test/scientist/observation_test.rb +++ b/test/scientist/observation_test.rb @@ -88,6 +88,18 @@ a = Scientist::Observation.new("test", @experiment) { "test" } assert_equal "TEST", a.cleaned_value end + + it "doesn't clean nil values" do + @experiment.clean { |value| "foo" } + a = Scientist::Observation.new("test", @experiment) { nil } + assert_nil a.cleaned_value + end + + it "cleans false values" do + @experiment.clean { |value| value.to_s.upcase } + a = Scientist::Observation.new("test", @experiment) { false } + assert_equal "FALSE", a.cleaned_value + end end end