sourcegraph/internal/database/code_monitor_queries_test.go
Camden Cheek c836d6a333
Backend: remove EnterpriseDB (#54699)
This moves a bunch of stuff out of enterprise. Notably, the final result
is `EnterpriseDB` no longer exists. This is one of the biggest sticking
points for moving other stuff out of the `enterprise` directory, so this
should help speed up future cleanups.
2023-07-06 20:03:31 -06:00

108 lines
2.9 KiB
Go

package database
import (
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/sourcegraph/sourcegraph/internal/actor"
)
func TestQueryTriggerForJob(t *testing.T) {
ctx, db, s := newTestStore(t)
_, _, userCTX := newTestUser(ctx, t, db)
fixtures := s.insertTestMonitor(userCTX, t)
triggerJobs, err := s.EnqueueQueryTriggerJobs(ctx)
require.NoError(t, err)
require.Len(t, triggerJobs, 1)
triggerJobID := triggerJobs[0].ID
got, err := s.GetQueryTriggerForJob(ctx, triggerJobID)
require.NoError(t, err)
require.Equal(t, fixtures.query, got)
}
func TestSetQueryTriggerNextRun(t *testing.T) {
ctx, db, s := newTestStore(t)
_, id, userCTX := newTestUser(ctx, t, db)
fixtures := s.insertTestMonitor(userCTX, t)
triggerJobs, err := s.EnqueueQueryTriggerJobs(ctx)
require.NoError(t, err)
require.Len(t, triggerJobs, 1)
triggerJobID := triggerJobs[0].ID
wantLatestResult := s.Now().UTC().Add(time.Minute)
wantNextRun := s.Now().UTC().Add(time.Hour)
err = s.SetQueryTriggerNextRun(ctx, 1, wantNextRun, wantLatestResult)
require.NoError(t, err)
got, err := s.GetQueryTriggerForJob(ctx, triggerJobID)
require.NoError(t, err)
want := &QueryTrigger{
ID: fixtures.query.ID,
Monitor: fixtures.monitor.ID,
QueryString: fixtures.query.QueryString,
CreatedBy: fixtures.query.CreatedBy,
CreatedAt: fixtures.query.CreatedAt,
NextRun: wantNextRun,
LatestResult: &wantLatestResult,
ChangedBy: id,
ChangedAt: s.Now().UTC(),
}
require.Equal(t, want, got)
}
func TestUpdateTrigger(t *testing.T) {
ctx, db, s := newTestStore(t)
uid1 := insertTestUser(ctx, t, db, "u1", false)
ctx1 := actor.WithActor(ctx, actor.FromUser(uid1))
uid2 := insertTestUser(ctx, t, db, "u2", false)
ctx2 := actor.WithActor(ctx, actor.FromUser(uid2))
fixtures := s.insertTestMonitor(ctx1, t)
_ = s.insertTestMonitor(ctx2, t)
// User1 can update it
err := s.UpdateQueryTrigger(ctx1, fixtures.query.ID, "query1")
require.NoError(t, err)
// User2 cannot update it
err = s.UpdateQueryTrigger(ctx2, fixtures.query.ID, "query2")
require.Error(t, err)
qt, err := s.GetQueryTriggerForMonitor(ctx1, fixtures.query.ID)
require.NoError(t, err)
require.Equal(t, qt.QueryString, "query1")
}
func TestResetTriggerQueryTimestamps(t *testing.T) {
ctx, db, s := newTestStore(t)
_, _, userCTX := newTestUser(ctx, t, db)
fixtures := s.insertTestMonitor(userCTX, t)
err := s.ResetQueryTriggerTimestamps(ctx, fixtures.query.ID)
require.NoError(t, err)
got, err := s.GetQueryTriggerForMonitor(ctx, fixtures.monitor.ID)
require.NoError(t, err)
want := &QueryTrigger{
ID: fixtures.query.ID,
Monitor: fixtures.monitor.ID,
QueryString: fixtures.query.QueryString,
NextRun: s.Now().UTC(),
LatestResult: nil,
CreatedBy: fixtures.query.CreatedBy,
CreatedAt: fixtures.query.CreatedAt,
ChangedBy: fixtures.query.ChangedBy,
ChangedAt: fixtures.query.ChangedAt,
}
require.Equal(t, want, got)
}