package processor import ( "context" "testing" "time" "apskel-pos-be/internal/entities" "apskel-pos-be/internal/models" "github.com/google/uuid" "github.com/stretchr/testify/require" ) type analyticsRepositoryStub struct { purchasingResult *entities.PurchasingAnalytics } func (analyticsRepositoryStub) GetPaymentMethodAnalytics(context.Context, uuid.UUID, *uuid.UUID, time.Time, time.Time) ([]*entities.PaymentMethodAnalytics, error) { return nil, nil } func (analyticsRepositoryStub) GetSalesAnalytics(context.Context, uuid.UUID, *uuid.UUID, time.Time, time.Time, string) ([]*entities.SalesAnalytics, error) { return nil, nil } func (s analyticsRepositoryStub) GetPurchasingAnalytics(context.Context, uuid.UUID, *uuid.UUID, time.Time, time.Time, string) (*entities.PurchasingAnalytics, error) { return s.purchasingResult, nil } func (analyticsRepositoryStub) GetProductAnalytics(context.Context, uuid.UUID, *uuid.UUID, time.Time, time.Time, int) ([]*entities.ProductAnalytics, error) { return nil, nil } func (analyticsRepositoryStub) GetProductAnalyticsPerCategory(context.Context, uuid.UUID, *uuid.UUID, time.Time, time.Time) ([]*entities.ProductAnalyticsPerCategory, error) { return nil, nil } func (analyticsRepositoryStub) GetDashboardOverview(context.Context, uuid.UUID, *uuid.UUID, time.Time, time.Time) (*entities.DashboardOverview, error) { return nil, nil } func (analyticsRepositoryStub) GetProfitLossAnalytics(context.Context, uuid.UUID, *uuid.UUID, time.Time, time.Time, string) (*entities.ProfitLossAnalytics, error) { return nil, nil } func TestAnalyticsProcessorGetPurchasingAnalyticsPassesOutletName(t *testing.T) { outletID := uuid.New() outletName := "Main Outlet" now := time.Date(2026, 5, 1, 0, 0, 0, 0, time.UTC) processor := NewAnalyticsProcessorImpl(analyticsRepositoryStub{ purchasingResult: &entities.PurchasingAnalytics{ OutletName: &outletName, Summary: entities.PurchasingSummary{ TotalPurchases: 125, }, }, }) result, err := processor.GetPurchasingAnalytics(context.Background(), &models.PurchasingAnalyticsRequest{ OrganizationID: uuid.New(), OutletID: &outletID, DateFrom: now, DateTo: now, }) require.NoError(t, err) require.NotNil(t, result) require.Equal(t, &outletID, result.OutletID) require.NotNil(t, result.OutletName) require.Equal(t, outletName, *result.OutletName) require.Equal(t, float64(125), result.Summary.TotalPurchases) }