Merged in feature/testquery (pull request #39)

Test Query

* depstextandclean

* startedcleaningresult

* resulttidyup

* roundone

* cleaning

* unsyncedquery

* startedtestsandsimplification

* api

* querytests

* resultprocessortests

* unittests

* cleanup
This commit is contained in:
Michael McGuinness
2025-01-29 11:52:37 +00:00
parent c36b0cdcf8
commit 0ac5ff9e15
109 changed files with 2804 additions and 2100 deletions
+307 -20
View File
@@ -55,29 +55,316 @@ func TestResults(t *testing.T) {
assert.Nil(t, err)
assert.True(t, jsonResultID.Valid)
resultsByDoc, err := queries.ListResultsByDocumentID(ctx, &repository.ListResultsByDocumentIDParams{
res, err := queries.GetResultValueWithVersion(ctx, &repository.GetResultValueWithVersionParams{
Queryid: jsonQueryID,
Queryversion: jsonQuery.Activeversion,
Documentid: documentID,
Cleanversion: cleanVersion,
Textversion: textVersion,
})
assert.Nil(t, err)
assert.Len(t, resultsByDoc, 1)
assert.ElementsMatch(t, []*repository.ListResultsByDocumentIDRow{
{
ID: jsonResultID,
Queryid: jsonQueryID,
Queryversion: jsonQuery.Activeversion,
},
}, resultsByDoc)
results, err := queries.ListResultValuesByID(ctx, []pgtype.UUID{jsonResultID})
assert.Nil(t, err)
assert.Len(t, results, 1)
assert.ElementsMatch(t, []*repository.ListResultValuesByIDRow{
{
ID: jsonResultID,
Queryid: jsonQueryID,
Value: jsonResultValue,
},
}, results)
assert.EqualExportedValues(t, &repository.GetResultValueWithVersionRow{
ID: jsonResultID,
Value: jsonResultValue,
}, res)
}
func TestResultValues(t *testing.T) {
ctx := context.Background()
db, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{
Migrations: &database.MigrationConfig{
BasePath: path.Join(os.Getenv("PWD"), "../../.."),
}})
defer cleanup()
queries := repository.New(db.Pool)
jsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor))
assert.Nil(t, err)
clientId, err := queries.CreateClient(ctx, "example_client")
assert.Nil(t, err)
jobId, err := queries.CreateJob(ctx, clientId)
assert.Nil(t, err)
documentID, err := queries.CreateDocument(ctx, &repository.CreateDocumentParams{
Jobid: jobId,
Hash: "example_hash",
})
assert.Nil(t, err)
contextQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull))
assert.Nil(t, err)
err = queries.AddRequiredQuery(ctx, &repository.AddRequiredQueryParams{
Queryid: jsonQueryID,
Requiredqueryid: contextQueryID,
Addedversion: 1,
})
assert.Nil(t, err)
contextQuery, err := queries.GetQuery(ctx, contextQueryID)
assert.Nil(t, err)
result := repository.SetResultParams{
Queryid: contextQueryID,
Documentid: documentID,
Value: "context_value",
Cleanversion: 1,
Textversion: 2,
Queryversion: contextQuery.Activeversion,
}
_, err = queries.SetResult(ctx, &result)
assert.Nil(t, err)
_, err = queries.SetResult(ctx, &repository.SetResultParams{
Queryid: contextQueryID,
Documentid: documentID,
Value: "context_value",
Cleanversion: 1,
Textversion: 2,
Queryversion: contextQuery.Activeversion - 1,
})
assert.Nil(t, err)
_, err = queries.SetResult(ctx, &repository.SetResultParams{
Queryid: contextQueryID,
Documentid: documentID,
Value: "context_value",
Cleanversion: 2,
Textversion: 2,
Queryversion: contextQuery.Activeversion,
})
assert.Nil(t, err)
_, err = queries.SetResult(ctx, &repository.SetResultParams{
Queryid: jsonQueryID,
Documentid: documentID,
Value: "context_value",
Cleanversion: 1,
Textversion: 2,
Queryversion: contextQuery.Activeversion,
})
assert.Nil(t, err)
qResults, err := queries.ListQueryRequirementValues(ctx, &repository.ListQueryRequirementValuesParams{
Queryid: jsonQueryID,
Documentid: documentID,
Addedversion: 1,
Cleanversion: result.Cleanversion,
Textversion: result.Textversion,
})
assert.Nil(t, err)
assert.EqualExportedValues(t, []*repository.ListQueryRequirementValuesRow{
{
Queryid: contextQueryID,
Type: repository.QuerytypeContextFull,
Value: result.Value,
},
}, qResults)
}
func TestUnsyncedQueries(t *testing.T) {
ctx := context.Background()
db, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{
Migrations: &database.MigrationConfig{
BasePath: path.Join(os.Getenv("PWD"), "../../.."),
}})
defer cleanup()
queries := repository.New(db.Pool)
clientId, err := queries.CreateClient(ctx, "example_client")
assert.Nil(t, err)
jobId, err := queries.CreateJob(ctx, clientId)
assert.Nil(t, err)
collectorId, err := queries.CreateCollector(ctx, jobId)
assert.Nil(t, err)
documentID, err := queries.CreateDocument(ctx, &repository.CreateDocumentParams{
Jobid: jobId,
Hash: "example_hash",
})
assert.Nil(t, err)
contextQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull))
assert.Nil(t, err)
jsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor))
assert.Nil(t, err)
err = queries.AddRequiredQuery(ctx, &repository.AddRequiredQueryParams{
Queryid: jsonQueryID,
Requiredqueryid: contextQueryID,
Addedversion: 1,
})
assert.Nil(t, err)
err = queries.AddCollectorQuery(ctx, &repository.AddCollectorQueryParams{
Collectorid: collectorId,
Name: "example_name",
Queryid: jsonQueryID,
Addedversion: 1,
})
assert.Nil(t, err)
qs, err := queries.ListUnsyncedQueriesByDocId(ctx, documentID)
assert.Nil(t, err)
assert.Len(t, qs, 2)
assert.ElementsMatch(t, []*repository.Fullactivequery{
{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 1,
Latestversion: 1,
Config: nil,
Requiredids: []pgtype.UUID{contextQueryID},
},
{
ID: contextQueryID,
Type: repository.QuerytypeContextFull,
Activeversion: 1,
Latestversion: 1,
Config: nil,
Requiredids: []pgtype.UUID{},
},
}, qs)
_, err = queries.SetResult(ctx, &repository.SetResultParams{
Queryid: contextQueryID,
Documentid: documentID,
Value: "context_value",
Cleanversion: 1,
Textversion: 2,
Queryversion: 1,
})
assert.Nil(t, err)
qs, err = queries.ListUnsyncedQueriesByDocId(ctx, documentID)
assert.Nil(t, err)
assert.Len(t, qs, 1)
assert.ElementsMatch(t, []*repository.Fullactivequery{
{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 1,
Latestversion: 1,
Config: nil,
Requiredids: []pgtype.UUID{contextQueryID},
},
}, qs)
err = queries.UpdateQuery(ctx, &repository.UpdateQueryParams{
Latestversion: 2,
Activeversion: 2,
ID: contextQueryID,
})
assert.Nil(t, err)
qs, err = queries.ListUnsyncedQueriesByDocId(ctx, documentID)
assert.Nil(t, err)
assert.Len(t, qs, 2)
assert.ElementsMatch(t, []*repository.Fullactivequery{
{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 1,
Latestversion: 1,
Config: nil,
Requiredids: []pgtype.UUID{contextQueryID},
},
{
ID: contextQueryID,
Type: repository.QuerytypeContextFull,
Activeversion: 2,
Latestversion: 2,
Config: nil,
Requiredids: []pgtype.UUID{},
},
}, qs)
_, err = queries.SetResult(ctx, &repository.SetResultParams{
Queryid: contextQueryID,
Documentid: documentID,
Value: "context_value",
Cleanversion: 1,
Textversion: 2,
Queryversion: 2,
})
assert.Nil(t, err)
_, err = queries.SetResult(ctx, &repository.SetResultParams{
Queryid: jsonQueryID,
Documentid: documentID,
Value: "context_value",
Cleanversion: 1,
Textversion: 2,
Queryversion: 1,
})
assert.Nil(t, err)
qs, err = queries.ListUnsyncedQueriesByDocId(ctx, documentID)
assert.Nil(t, err)
assert.Len(t, qs, 0)
err = queries.UpdateQuery(ctx, &repository.UpdateQueryParams{
Latestversion: 2,
Activeversion: 2,
ID: jsonQueryID,
})
assert.Nil(t, err)
qs, err = queries.ListUnsyncedQueriesByDocId(ctx, documentID)
assert.Nil(t, err)
assert.Len(t, qs, 1)
assert.ElementsMatch(t, []*repository.Fullactivequery{
{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 2,
Latestversion: 2,
Config: nil,
Requiredids: []pgtype.UUID{contextQueryID},
},
}, qs)
_, err = queries.SetResult(ctx, &repository.SetResultParams{
Queryid: jsonQueryID,
Documentid: documentID,
Value: "context_value",
Cleanversion: 1,
Textversion: 2,
Queryversion: 2,
})
assert.Nil(t, err)
qs, err = queries.ListUnsyncedQueriesByDocId(ctx, documentID)
assert.Nil(t, err)
assert.Len(t, qs, 0)
err = queries.UpdateQuery(ctx, &repository.UpdateQueryParams{
Latestversion: 3,
Activeversion: 3,
ID: contextQueryID,
})
assert.Nil(t, err)
qs, err = queries.ListUnsyncedQueriesByDocId(ctx, documentID)
assert.Nil(t, err)
assert.Len(t, qs, 2)
assert.ElementsMatch(t, []*repository.Fullactivequery{
{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 2,
Latestversion: 2,
Config: nil,
Requiredids: []pgtype.UUID{contextQueryID},
},
{
ID: contextQueryID,
Type: repository.QuerytypeContextFull,
Activeversion: 3,
Latestversion: 3,
Config: nil,
Requiredids: []pgtype.UUID{},
},
}, qs)
}