package testutils import ( "encoding/json" "time" "gorm.io/datatypes" "bugulma/backend/internal/domain" ) // NewSampleResourceFlow creates a sample resource flow for testing func NewSampleResourceFlow() *domain.ResourceFlow { temp := 100.0 purity := 95.0 quality := domain.Quality{ TemperatureCelsius: &temp, PurityPct: &purity, } qualityJSON, _ := json.Marshal(quality) quantity := domain.Quantity{ Amount: 1000, Unit: "kWh", TemporalUnit: "hour", Variability: 0.1, } quantityJSON, _ := json.Marshal(quantity) timeProfile := domain.TimeProfile{ Availability: map[string]domain.TimeRange{ "monday": {Start: "09:00", End: "17:00"}, "tuesday": {Start: "09:00", End: "17:00"}, "wednesday": {Start: "09:00", End: "17:00"}, "thursday": {Start: "09:00", End: "17:00"}, "friday": {Start: "09:00", End: "17:00"}, "saturday": {Start: "09:00", End: "17:00"}, "sunday": {Start: "09:00", End: "17:00"}, }, SupplyPattern: "continuous", } timeProfileJSON, _ := json.Marshal(timeProfile) economicData := domain.EconomicData{ CostOut: 0.1, TransportationCost: 0.05, } economicDataJSON, _ := json.Marshal(economicData) constraints := domain.Constraints{ MaxDistanceKm: 50, } constraintsJSON, _ := json.Marshal(constraints) return &domain.ResourceFlow{ ID: "rf-1", OrganizationID: "org-1", SiteID: "site-1", Direction: domain.DirectionOutput, Type: domain.TypeHeat, Quality: datatypes.JSON(qualityJSON), Quantity: datatypes.JSON(quantityJSON), TimeProfile: datatypes.JSON(timeProfileJSON), EconomicData: datatypes.JSON(economicDataJSON), Constraints: datatypes.JSON(constraintsJSON), PrecisionLevel: domain.PrecisionMeasured, SourceType: domain.SourceDevice, DeviceSignature: "device-123", CreatedAt: time.Now().Add(-24 * time.Hour), UpdatedAt: time.Now(), } }