@@ -334,6 +334,36 @@ func (s *DetailedLineAdapterSuite) TestFetchDetailedLinesUsesPersistedDetailedLi
334334 s .False (fetchedCharge .Realizations [0 ].DetailedLines .IsPresent ())
335335}
336336
337+ func (s * DetailedLineAdapterSuite ) TestFetchDetailedLinesClearsStaleDetailedLinesWhenRunMetadataIsMissing () {
338+ ctx := s .T ().Context ()
339+ namespace := "usagebased-detailedline-adapter-fetch-missing-run-metadata"
340+ charge , runBase , servicePeriod := s .createChargeWithRun (namespace )
341+
342+ missingRunBase := runBase
343+ missingRunBase .ID .ID = ulid .Make ().String ()
344+
345+ staleCharge := charge
346+ staleCharge .Realizations = usagebased.RealizationRuns {
347+ {
348+ RealizationRunBase : missingRunBase ,
349+ DetailedLines : mo .Some (usagebased.DetailedLines {
350+ s .newDetailedLine (newDetailedLineInput {
351+ Charge : charge ,
352+ RunID : missingRunBase .ID ,
353+ ServicePeriod : servicePeriod ,
354+ ChildUniqueReferenceID : "stale@[2026-01-01T00:00:00Z..2026-02-01T00:00:00Z]" ,
355+ Quantity : 1 ,
356+ }),
357+ }),
358+ },
359+ }
360+
361+ fetchedCharge , err := s .adapter .FetchDetailedLines (ctx , staleCharge )
362+ s .Require ().NoError (err )
363+ s .Require ().Len (fetchedCharge .Realizations , 1 )
364+ s .False (fetchedCharge .Realizations [0 ].DetailedLines .IsPresent ())
365+ }
366+
337367func (s * DetailedLineAdapterSuite ) createChargeWithRun (namespace string ) (usagebased.Charge , usagebased.RealizationRunBase , timeutil.ClosedPeriod ) {
338368 s .T ().Helper ()
339369
0 commit comments