44
55import json
66import tempfile
7+ from datetime import datetime , timezone
78from pathlib import Path
89
910import pytest
2223# ---------------------------------------------------------------------------
2324
2425
26+ def _recent_generated_at () -> str :
27+ return datetime .now (timezone .utc ).isoformat ()
28+
29+
2530def _make_packet (
2631 goal : str = "add CI to all repos" ,
2732 * ,
2833 num_actions : int = 2 ,
29- generated_at : str = "2026-05-12T00:00:00+00:00" ,
34+ generated_at : str | None = None ,
3035) -> CampaignPlanPacket :
36+ generated_at = generated_at or _recent_generated_at ()
3137 actions = [
3238 CampaignAction (
3339 repo_name = f"repo-{ i } " ,
@@ -215,6 +221,7 @@ def test_load_approved_campaign_plans_defaults_missing_state_to_pending(self) ->
215221
216222 with tempfile .TemporaryDirectory () as tmp :
217223 output_dir = Path (tmp )
224+ generated_at = _recent_generated_at ()
218225 # Write a record whose actions have NO 'state' field
219226 save_approval_record (
220227 output_dir ,
@@ -224,7 +231,7 @@ def test_load_approved_campaign_plans_defaults_missing_state_to_pending(self) ->
224231 "approval_subject_type" : "campaign-plan" ,
225232 "subject_key" : "legacykey001" ,
226233 "source_run_id" : "" ,
227- "approved_at" : "2026-05-12T00:00:00+00:00" ,
234+ "approved_at" : generated_at ,
228235 "approved_by" : "tester" ,
229236 "approval_note" : "legacy" ,
230237 "action_type" : "campaign-plan" ,
@@ -235,7 +242,7 @@ def test_load_approved_campaign_plans_defaults_missing_state_to_pending(self) ->
235242 "llm_provider" : "fake" ,
236243 "llm_model" : "m" ,
237244 "llm_cost_usd" : 0.0 ,
238- "generated_at" : "2026-05-12T00:00:00+00:00" ,
245+ "generated_at" : generated_at ,
239246 "status" : "approved-manual" ,
240247 "actions" : [
241248 {
@@ -260,6 +267,7 @@ def test_load_approved_campaign_plans_preserves_existing_state(self) -> None:
260267
261268 with tempfile .TemporaryDirectory () as tmp :
262269 output_dir = Path (tmp )
270+ generated_at = _recent_generated_at ()
263271 save_approval_record (
264272 output_dir ,
265273 {
@@ -268,7 +276,7 @@ def test_load_approved_campaign_plans_preserves_existing_state(self) -> None:
268276 "approval_subject_type" : "campaign-plan" ,
269277 "subject_key" : "statekey002" ,
270278 "source_run_id" : "" ,
271- "approved_at" : "2026-05-12T00:00:00+00:00" ,
279+ "approved_at" : generated_at ,
272280 "approved_by" : "tester" ,
273281 "approval_note" : "state test" ,
274282 "action_type" : "campaign-plan" ,
@@ -279,7 +287,7 @@ def test_load_approved_campaign_plans_preserves_existing_state(self) -> None:
279287 "llm_provider" : "fake" ,
280288 "llm_model" : "m" ,
281289 "llm_cost_usd" : 0.0 ,
282- "generated_at" : "2026-05-12T00:00:00+00:00" ,
290+ "generated_at" : generated_at ,
283291 "status" : "approved-manual" ,
284292 "actions" : [
285293 {
@@ -319,6 +327,7 @@ def _make_approved_manual_packet(
319327 from src .plan_campaign import _goal_subject_key , _packet_record_id
320328 from src .warehouse import save_approval_record
321329
330+ generated_at = _recent_generated_at ()
322331 packet = CampaignPlanPacket (
323332 goal = goal ,
324333 actions = actions ,
@@ -327,7 +336,7 @@ def _make_approved_manual_packet(
327336 llm_provider = "fake" ,
328337 llm_model = "m" ,
329338 llm_cost_usd = 0.0 ,
330- generated_at = "2026-05-12T00:00:00+00:00" ,
339+ generated_at = generated_at ,
331340 )
332341 record_id = _packet_record_id (packet )
333342 actions_dicts = [
@@ -351,7 +360,7 @@ def _make_approved_manual_packet(
351360 "approval_subject_type" : "campaign-plan" ,
352361 "subject_key" : _goal_subject_key (goal ),
353362 "source_run_id" : "" ,
354- "approved_at" : "2026-05-12T00:00:00+00:00" ,
363+ "approved_at" : generated_at ,
355364 "approved_by" : "tester" ,
356365 "approval_note" : goal ,
357366 "action_type" : "campaign-plan" ,
@@ -362,7 +371,7 @@ def _make_approved_manual_packet(
362371 "llm_provider" : "fake" ,
363372 "llm_model" : "m" ,
364373 "llm_cost_usd" : 0.0 ,
365- "generated_at" : "2026-05-12T00:00:00+00:00" ,
374+ "generated_at" : generated_at ,
366375 "status" : "approved-manual" ,
367376 "actions" : actions_dicts ,
368377 },
0 commit comments