From fd91ab84afdb5662b443137d62c974f22bcb5dc9 Mon Sep 17 00:00:00 2001 From: Tanmay Deep Sharma Date: Wed, 15 Jul 2026 14:59:23 +0530 Subject: [PATCH] test(automations): status episode keys use microsecond stamp and survive DB reload --- spec/models/automation_rule_pending_execution_spec.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/spec/models/automation_rule_pending_execution_spec.rb b/spec/models/automation_rule_pending_execution_spec.rb index d76296e65..3e1f1b0bd 100644 --- a/spec/models/automation_rule_pending_execution_spec.rb +++ b/spec/models/automation_rule_pending_execution_spec.rb @@ -10,12 +10,19 @@ RSpec.describe AutomationRulePendingExecution do describe '.episode_key_for' do it 'derives status episodes from status_changed_at' do - expect(described_class.episode_key_for(conversation, nil)).to eq("status:#{conversation.status_changed_at.to_f}") + expect(described_class.episode_key_for(conversation, nil)).to eq("status:#{conversation.status_changed_at.strftime('%s%6N')}") + end + + it 'matches between an in-memory arm and a DB-reloaded fire (no float rounding drift)' do + conversation.status_changed_at = Time.zone.at(1_784_102_080.844761923r) + arm_key = described_class.episode_key_for(conversation, nil) + conversation.save! + expect(arm_key).to eq(described_class.episode_key_for(conversation.reload, nil)) end it 'falls back to created_at when status_changed_at is blank' do conversation.update!(status_changed_at: nil) - expect(described_class.episode_key_for(conversation.reload, nil)).to eq("status:#{conversation.created_at.to_f}") + expect(described_class.episode_key_for(conversation.reload, nil)).to eq("status:#{conversation.created_at.strftime('%s%6N')}") end it 'derives awaiting_agent episodes from waiting_since (sub-second) for incoming messages' do