package repository_test import ( "context" "os" "path" "queryorchestration/internal/database/repository" "queryorchestration/internal/serviceconfig" "queryorchestration/internal/test" "testing" "github.com/stretchr/testify/assert" ) func TestDocument(t *testing.T) { if testing.Short() { t.Skip("Skipping long test in short mode") } ctx := context.Background() cfg := &serviceconfig.BaseConfig{} test.SetCfgProvider(t, cfg) cfg.SetBasePath(path.Join(os.Getenv("PWD"), "../../..")) _, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{ Cfg: cfg, RunMigrations: true, }) defer cleanup() queries := cfg.GetDBQueries() clientId, err := queries.CreateClient(ctx, "example_client") assert.NoError(t, err) jobId, err := queries.CreateJob(ctx, clientId) assert.NoError(t, err) hash := "example_hash" id, err := queries.CreateDocument(ctx, &repository.CreateDocumentParams{ Jobid: jobId, Hash: hash, }) assert.NoError(t, err) assert.NotEmpty(t, id) documentTwoID, err := queries.CreateDocument(ctx, &repository.CreateDocumentParams{ Jobid: jobId, Hash: "example_hash_two", }) assert.NoError(t, err) assert.NotEmpty(t, documentTwoID) jobTwoId, err := queries.CreateJob(ctx, clientId) assert.NoError(t, err) _, err = queries.CreateDocument(ctx, &repository.CreateDocumentParams{ Jobid: jobTwoId, Hash: "example_hash", }) assert.NoError(t, err) doc, err := queries.GetDocument(ctx, id) assert.NoError(t, err) assert.EqualExportedValues(t, &repository.Document{ ID: id, Jobid: jobId, Hash: hash, }, doc) docid, err := queries.GetDocumentIDByHash(ctx, &repository.GetDocumentIDByHashParams{ Hash: hash, Jobid: jobId, }) assert.NoError(t, err) assert.EqualExportedValues(t, id, docid) err = queries.AddDocumentEntry(ctx, &repository.AddDocumentEntryParams{ Documentid: id, Bucket: "bucket_one", Key: "/i/am/here", }) assert.NoError(t, err) entry, err := queries.GetDocumentEntry(ctx, id) assert.NoError(t, err) assert.EqualExportedValues(t, &repository.GetDocumentEntryRow{ Documentid: id, Bucket: "bucket_one", Key: "/i/am/here", }, entry) err = queries.AddDocumentEntry(ctx, &repository.AddDocumentEntryParams{ Documentid: id, Bucket: "bucket_two", Key: "/you/is/there", }) assert.NoError(t, err) entry, err = queries.GetDocumentEntry(ctx, id) assert.NoError(t, err) assert.EqualExportedValues(t, &repository.GetDocumentEntryRow{ Documentid: id, Bucket: "bucket_two", Key: "/you/is/there", }, entry) err = queries.AddDocumentEntry(ctx, &repository.AddDocumentEntryParams{ Documentid: id, Bucket: "bucket_three", Key: "/who/is/where", }) assert.NoError(t, err) entry, err = queries.GetDocumentEntry(ctx, id) assert.NoError(t, err) assert.EqualExportedValues(t, &repository.GetDocumentEntryRow{ Documentid: id, Bucket: "bucket_three", Key: "/who/is/where", }, entry) }