Skip to content

Commit 32eee90

Browse files
authored
Merge pull request #717 from splitrb/fix-extra-info-that-may-be-nil
Do not persist invalid extra_info on ab_record_extra_info.
2 parents b401721 + 9d4c9b5 commit 32eee90

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

lib/split/dashboard/views/_experiment.erb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
summary_texts = {}
1717
extra_columns.each do |column|
1818
extra_infos = experiment.alternatives.map(&:extra_info).select{|extra_info| extra_info && extra_info[column] }
19-
if extra_infos[0][column].kind_of?(Numeric)
19+
20+
if extra_infos.length > 0 && extra_infos.all? { |extra_info| extra_info[column].kind_of?(Numeric) }
2021
summary_texts[column] = extra_infos.inject(0){|sum, extra_info| sum += extra_info[column]}
2122
else
2223
summary_texts[column] = "N/A"

lib/split/helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def ab_finished(metric_descriptor, options = { reset: true })
8686
end
8787

8888
def ab_record_extra_info(metric_descriptor, key, value = 1)
89-
return if exclude_visitor? || Split.configuration.disabled?
89+
return if exclude_visitor? || Split.configuration.disabled? || value.nil?
9090
metric_descriptor, _ = normalize_metric(metric_descriptor)
9191
experiments = Metric.possible_experiments(metric_descriptor)
9292

spec/helper_spec.rb

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,42 @@ def should_finish_experiment(experiment_name, should_finish = true)
558558
end
559559
end
560560

561+
562+
describe "ab_record_extra_info" do
563+
context "for an experiment that the user participates in" do
564+
before(:each) do
565+
@experiment_name = "link_color"
566+
@alternatives = ["blue", "red"]
567+
@experiment = Split::ExperimentCatalog.find_or_create(@experiment_name, *@alternatives)
568+
@alternative_name = ab_test(@experiment_name, *@alternatives)
569+
end
570+
571+
it "records extra data for a given experiment" do
572+
alternative = Split::Alternative.new(@alternative_name, "link_color")
573+
574+
ab_record_extra_info(@experiment_name, "some_data", 10)
575+
576+
expect(alternative.extra_info).to eql({ "some_data" => 10 })
577+
end
578+
579+
it "records extra data for a given experiment" do
580+
alternative = Split::Alternative.new(@alternative_name, "link_color")
581+
582+
ab_record_extra_info(@experiment_name, "some_data")
583+
584+
expect(alternative.extra_info).to eql({ "some_data" => 1 })
585+
end
586+
587+
it "records extra data for a given experiment" do
588+
alternative = Split::Alternative.new(@alternative_name, "link_color")
589+
590+
ab_record_extra_info(@experiment_name, "some_data", nil)
591+
592+
expect(alternative.extra_info).to eql({})
593+
end
594+
end
595+
end
596+
561597
describe "conversions" do
562598
it "should return a conversion rate for an alternative" do
563599
alternative_name = ab_test("link_color", "blue", "red")

0 commit comments

Comments
 (0)