forked from sourcegraph/sourcegraph-public-snapshot
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcode_monitor_test.go
More file actions
90 lines (78 loc) · 2.42 KB
/
code_monitor_test.go
File metadata and controls
90 lines (78 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package database
import (
"context"
"testing"
"github.com/stretchr/testify/require"
"github.com/sourcegraph/sourcegraph/internal/actor"
"github.com/sourcegraph/sourcegraph/internal/types"
)
type testFixtures struct {
monitor *Monitor
query *QueryTrigger
emails [2]*EmailAction
recipients [2]*Recipient
}
func (s *codeMonitorStore) insertTestMonitor(ctx context.Context, t *testing.T) *testFixtures {
t.Helper()
fixtures := testFixtures{}
actions := []*EmailActionArgs{
{
Enabled: true,
IncludeResults: false,
Priority: "NORMAL",
Header: "test header 1",
},
{
Enabled: true,
IncludeResults: false,
Priority: "CRITICAL",
Header: "test header 2",
},
}
// Create monitor.
uid := actor.FromContext(ctx).UID
var err error
fixtures.monitor, err = s.CreateMonitor(ctx, MonitorArgs{
Description: testDescription,
Enabled: true,
NamespaceUserID: &uid,
})
require.NoError(t, err)
// Create trigger.
fixtures.query, err = s.CreateQueryTrigger(ctx, fixtures.monitor.ID, testQuery)
require.NoError(t, err)
for i, a := range actions {
fixtures.emails[i], err = s.CreateEmailAction(ctx, fixtures.monitor.ID, &EmailActionArgs{
Enabled: a.Enabled,
IncludeResults: a.IncludeResults,
Priority: a.Priority,
Header: a.Header,
})
require.NoError(t, err)
fixtures.recipients[i], err = s.CreateRecipient(ctx, fixtures.emails[i].ID, &uid, nil)
require.NoError(t, err)
// TODO(camdencheek): add other action types (webhooks) here
}
return &fixtures
}
type codeMonitorTestFixtures struct {
User *types.User
Monitor *Monitor
Query *QueryTrigger
Repo *types.Repo
}
func populateCodeMonitorFixtures(t *testing.T, db DB) codeMonitorTestFixtures {
ctx := context.Background()
u, err := db.Users().Create(ctx, NewUser{Email: "test", Username: "test", EmailVerificationCode: "test"})
require.NoError(t, err)
err = db.Repos().Create(ctx, &types.Repo{Name: "test"})
require.NoError(t, err)
r, err := db.Repos().GetByName(ctx, "test")
require.NoError(t, err)
ctx = actor.WithActor(ctx, actor.FromUser(u.ID))
m, err := db.CodeMonitors().CreateMonitor(ctx, MonitorArgs{NamespaceUserID: &u.ID, Enabled: true})
require.NoError(t, err)
q, err := db.CodeMonitors().CreateQueryTrigger(ctx, m.ID, "type:commit repo:.")
require.NoError(t, err)
return codeMonitorTestFixtures{User: u, Monitor: m, Query: q, Repo: r}
}