package service import ( "database/sql" "testing" "time" "github.com/daniil/homelab-api/internal/model" ) func TestCalculateInterestForDeposit_NotDeposit(t *testing.T) { s := &InterestService{} deposit := &model.SavingsCategory{IsDeposit: false} result, err := s.CalculateInterestForDeposit(deposit) if err != nil { t.Fatalf("unexpected error: %v", err) } if result != "" { t.Errorf("expected empty result for non-deposit, got %q", result) } } func TestCalculateInterestForDeposit_ZeroRate(t *testing.T) { s := &InterestService{} deposit := &model.SavingsCategory{IsDeposit: true, InterestRate: 0} result, err := s.CalculateInterestForDeposit(deposit) if err != nil { t.Fatalf("unexpected error: %v", err) } if result != "" { t.Errorf("expected empty result for zero rate, got %q", result) } } func TestCalculateInterestForDeposit_NoStartDate(t *testing.T) { s := &InterestService{} deposit := &model.SavingsCategory{ IsDeposit: true, InterestRate: 10, DepositStartDate: sql.NullTime{Valid: false}, } _, err := s.CalculateInterestForDeposit(deposit) if err == nil { t.Error("expected error for missing start date") } } func TestCalculateInterestForDeposit_ExpiredDeposit(t *testing.T) { s := &InterestService{} deposit := &model.SavingsCategory{ IsDeposit: true, InterestRate: 10, DepositTerm: 3, // 3 months DepositStartDate: sql.NullTime{ Time: time.Now().AddDate(0, -6, 0), // 6 months ago Valid: true, }, } result, err := s.CalculateInterestForDeposit(deposit) if err != nil { t.Fatalf("unexpected error: %v", err) } if result != "" { t.Errorf("expected empty result for expired deposit, got %q", result) } }