diff --git a/lib/evaluation_details.rb b/lib/evaluation_details.rb index c6a1580..8141c5f 100644 --- a/lib/evaluation_details.rb +++ b/lib/evaluation_details.rb @@ -21,7 +21,7 @@ def initialize(config_sync_time, init_time, reason) @config_sync_time = config_sync_time @init_time = init_time @reason = reason - @server_time = (Time.now.to_i * 1000).to_s + @server_time = (Time.now.to_f * 1000).to_i.to_s end def self.unsupported(config_sync_time, init_time) diff --git a/test/evaluation_details_precision_test.rb b/test/evaluation_details_precision_test.rb new file mode 100644 index 0000000..047065d --- /dev/null +++ b/test/evaluation_details_precision_test.rb @@ -0,0 +1,19 @@ +require 'minitest/autorun' +require 'minitest/mock' +require_relative '../lib/evaluation_details' + +class EvaluationDetailsPrecisionTest < Minitest::Test + def test_server_time_preserves_milliseconds_as_a_string + [ + [0, '1631638014000'], + [811_999, '1631638014811'], + [999_999, '1631638014999'], + ].each do |microseconds, expected| + Time.stub(:now, Time.at(1_631_638_014, microseconds)) do + details = Statsig::EvaluationDetails.new(1, 2, Statsig::EvaluationReason::NETWORK) + + assert_equal(expected, details.server_time) + end + end + end +end