@@ -624,14 +624,16 @@ func TestReconcileWithLedger(t *testing.T) {
624624require .NoError (t , err )
625625
626626t .Run ("no action with no instances and no drafts" , func (t * testing.T ) {
627- inserts , updates := reconcileUsageWithLedger (nil , nil , pricer , now )
627+ inserts , updates , err := reconcileUsageWithLedger (nil , nil , pricer , now )
628+ require .NoError (t , err )
628629require .Len (t , inserts , 0 )
629630require .Len (t , updates , 0 )
630631})
631632
632633t .Run ("no action with no instances but existing drafts" , func (t * testing.T ) {
633634drafts := []db.Usage {dbtest .NewUsage (t , db.Usage {})}
634- inserts , updates := reconcileUsageWithLedger (nil , drafts , pricer , now )
635+ inserts , updates , err := reconcileUsageWithLedger (nil , drafts , pricer , now )
636+ require .NoError (t , err )
635637require .Len (t , inserts , 0 )
636638require .Len (t , updates , 0 )
637639})
@@ -648,12 +650,14 @@ func TestReconcileWithLedger(t *testing.T) {
648650WorkspaceClass : db .WorkspaceClass_Default ,
649651Type : db .WorkspaceType_Regular ,
650652UsageAttributionID : db .NewTeamAttributionID (uuid .New ().String ()),
653+ StartedTime : db .NewVarcharTime (now .Add (1 * time .Minute )),
651654}
652655
653- inserts , updates := reconcileUsageWithLedger ([]db.WorkspaceInstanceForUsage {instance , instance }, nil , pricer , now )
656+ inserts , updates , err := reconcileUsageWithLedger ([]db.WorkspaceInstanceForUsage {instance , instance }, nil , pricer , now )
657+ require .NoError (t , err )
654658require .Len (t , inserts , 1 )
655659require .Len (t , updates , 0 )
656- require . Equal ( t , db.Usage {
660+ expectedUsage := db.Usage {
657661ID : inserts [0 ].ID ,
658662AttributionID : instance .UsageAttributionID ,
659663Description : usageDescriptionFromController ,
@@ -663,7 +667,18 @@ func TestReconcileWithLedger(t *testing.T) {
663667WorkspaceInstanceID : instance .ID ,
664668Draft : true ,
665669Metadata : nil ,
666- }, inserts [0 ])
670+ }
671+ require .NoError (t , expectedUsage .SetMetadataWithWorkspaceInstance (db.WorkspaceInstanceUsageData {
672+ WorkspaceId : instance .WorkspaceID ,
673+ WorkspaceType : instance .Type ,
674+ WorkspaceClass : instance .WorkspaceClass ,
675+ ContextURL : "" ,
676+ StartTime : db .TimeToISO8601 (instance .StartedTime .Time ()),
677+ EndTime : "" ,
678+ UserName : "" ,
679+ UserAvatarURL : "" ,
680+ }))
681+ require .EqualValues (t , expectedUsage , inserts [0 ])
667682})
668683
669684t .Run ("updates a usage record when a draft exists" , func (t * testing.T ) {
@@ -678,6 +693,7 @@ func TestReconcileWithLedger(t *testing.T) {
678693WorkspaceClass : db .WorkspaceClass_Default ,
679694Type : db .WorkspaceType_Regular ,
680695UsageAttributionID : db .NewTeamAttributionID (uuid .New ().String ()),
696+ StartedTime : db .NewVarcharTime (now .Add (1 * time .Minute )),
681697}
682698
683699// the fields in the usage record deliberately do not match the instance, except for the Instance ID.
@@ -694,10 +710,12 @@ func TestReconcileWithLedger(t *testing.T) {
694710Metadata : nil ,
695711})
696712
697- inserts , updates := reconcileUsageWithLedger ([]db.WorkspaceInstanceForUsage {instance }, []db.Usage {draft }, pricer , now )
713+ inserts , updates , err := reconcileUsageWithLedger ([]db.WorkspaceInstanceForUsage {instance }, []db.Usage {draft }, pricer , now )
714+ require .NoError (t , err )
698715require .Len (t , inserts , 0 )
699716require .Len (t , updates , 1 )
700- require .Equal (t , db.Usage {
717+
718+ expectedUsage := db.Usage {
701719ID : draft .ID ,
702720AttributionID : instance .UsageAttributionID ,
703721Description : usageDescriptionFromController ,
@@ -707,6 +725,17 @@ func TestReconcileWithLedger(t *testing.T) {
707725WorkspaceInstanceID : instance .ID ,
708726Draft : true ,
709727Metadata : nil ,
710- }, updates [0 ])
728+ }
729+ require .NoError (t , expectedUsage .SetMetadataWithWorkspaceInstance (db.WorkspaceInstanceUsageData {
730+ WorkspaceId : instance .WorkspaceID ,
731+ WorkspaceType : instance .Type ,
732+ WorkspaceClass : instance .WorkspaceClass ,
733+ ContextURL : "" ,
734+ StartTime : db .TimeToISO8601 (instance .StartedTime .Time ()),
735+ EndTime : "" ,
736+ UserName : "" ,
737+ UserAvatarURL : "" ,
738+ }))
739+ require .EqualValues (t , expectedUsage , updates [0 ])
711740})
712741}
0 commit comments