Skip to content

Commit 8e8ab49

Browse files
committed
stub internal test
1 parent cf4609d commit 8e8ab49

File tree

2 files changed

+44
-6
lines changed

2 files changed

+44
-6
lines changed

coderd/notifications/reports/generator.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const (
2828
delay = 15 * time.Minute
2929
)
3030

31-
func NewReportGenerator(ctx context.Context, logger slog.Logger, db database.Store, enqueur notifications.Enqueuer, clk quartz.Clock) io.Closer {
31+
func NewReportGenerator(ctx context.Context, logger slog.Logger, db database.Store, enqueuer notifications.Enqueuer, clk quartz.Clock) io.Closer {
3232
closed := make(chan struct{})
3333

3434
ctx, cancelFunc := context.WithCancel(ctx)
@@ -51,7 +51,7 @@ func NewReportGenerator(ctx context.Context, logger slog.Logger, db database.Sto
5151
return nil
5252
}
5353

54-
err = reportFailedWorkspaceBuilds(ctx, logger, db, enqueur, clk)
54+
err = reportFailedWorkspaceBuilds(ctx, logger, db, enqueuer, clk)
5555
if err != nil {
5656
logger.Debug(ctx, "unable to report failed workspace builds")
5757
return err
@@ -98,8 +98,9 @@ func (i *reportGenerator) Close() error {
9898
return nil
9999
}
100100

101+
const failedWorkspaceBuildsReportFrequencyDays = 7
102+
101103
func reportFailedWorkspaceBuilds(ctx context.Context, logger slog.Logger, db database.Store, enqueuer notifications.Enqueuer, clk quartz.Clock) error {
102-
const frequencyDays = 7
103104

104105
statsRows, err := db.GetWorkspaceBuildStatsByTemplates(ctx, dbtime.Time(clk.Now()).UTC())
105106
if err != nil {
@@ -121,7 +122,7 @@ func reportFailedWorkspaceBuilds(ctx context.Context, logger slog.Logger, db dat
121122
}
122123

123124
// There are some failed builds, so we have to prepare input data for the report.
124-
reportData = buildDataForReportFailedWorkspaceBuilds(frequencyDays, stats, failedBuilds)
125+
reportData = buildDataForReportFailedWorkspaceBuilds(failedWorkspaceBuildsReportFrequencyDays, stats, failedBuilds)
125126
}
126127

127128
templateAdmins, err := findTemplateAdmins(ctx, db, stats)
@@ -139,7 +140,7 @@ func reportFailedWorkspaceBuilds(ctx context.Context, logger slog.Logger, db dat
139140
return xerrors.Errorf("unable to get recent report generator log for user: %w", err)
140141
}
141142

142-
if !reportLog.LastGeneratedAt.IsZero() && reportLog.LastGeneratedAt.Add(frequencyDays*24*time.Hour).After(clk.Now()) {
143+
if !reportLog.LastGeneratedAt.IsZero() && reportLog.LastGeneratedAt.Add(failedWorkspaceBuildsReportFrequencyDays*24*time.Hour).After(clk.Now()) {
143144
// report generated recently, no need to send it now
144145
err = db.UpsertReportGeneratorLog(ctx, database.UpsertReportGeneratorLogParams{
145146
UserID: templateAdmin.ID,
@@ -196,7 +197,7 @@ func reportFailedWorkspaceBuilds(ctx context.Context, logger slog.Logger, db dat
196197

197198
err = db.DeleteOldReportGeneratorLogs(ctx, database.DeleteOldReportGeneratorLogsParams{
198199
NotificationTemplateID: notifications.TemplateWorkspaceBuildsFailedReport,
199-
FrequencyDays: frequencyDays,
200+
FrequencyDays: failedWorkspaceBuildsReportFrequencyDays,
200201
})
201202
if err != nil {
202203
return xerrors.Errorf("unable to delete old report generator logs: %w", err)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package reports
2+
3+
import "testing"
4+
5+
func TestReportFailedWorkspaceBuilds(t *testing.T) {
6+
t.Parallel()
7+
8+
t.Run("FailedBuilds_TemplateAdminOptIn_FirstRun_Report", func(t *testing.T) {
9+
t.Parallel()
10+
// TODO
11+
})
12+
13+
t.Run("FailedBuilds_TemplateAdminOptIn_SecondRunTooEarly_NoReport", func(t *testing.T) {
14+
t.Parallel()
15+
// TODO
16+
})
17+
18+
t.Run("FailedBuilds_TemplateAdminOptIn_SecondRun_Report", func(t *testing.T) {
19+
t.Parallel()
20+
// TODO
21+
})
22+
23+
t.Run("NoFailedBuilds_TemplateAdminIn_NoReport", func(t *testing.T) {
24+
t.Parallel()
25+
// TODO
26+
})
27+
28+
t.Run("FailedBuilds_TemplateAdminOptOut_NoReport", func(t *testing.T) {
29+
t.Parallel()
30+
// TODO
31+
})
32+
33+
t.Run("StaleFailedBuilds_TemplateAdminOptIn_NoReport_Cleanup", func(t *testing.T) {
34+
t.Parallel()
35+
// TODO
36+
})
37+
}

0 commit comments

Comments
 (0)