Merged in feature/fix_test_timeouts (pull request #194)

text extractions tests

* increase timeout

for slow ci/cd systems

* add tests
This commit is contained in:
Jay Brown
2025-12-04 22:45:15 +00:00
parent 3bdc27f4de
commit a94637ab13
14 changed files with 2071 additions and 270 deletions
+129 -2
View File
@@ -495,7 +495,8 @@ func TestListClientFolders_Success(t *testing.T) {
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
err = ctrl.ListClientFolders(c, queryapi.ClientID(clientID))
// Call with empty params (metrics=false by default)
err = ctrl.ListClientFolders(c, queryapi.ClientID(clientID), queryapi.ListClientFoldersParams{})
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
@@ -510,6 +511,11 @@ func TestListClientFolders_Success(t *testing.T) {
assert.Equal(t, "/folder1", resp.Folders[0].Path)
assert.Equal(t, "/folder1/subfolder", resp.Folders[1].Path)
assert.Equal(t, "/folder2", resp.Folders[2].Path)
// Metrics should not be specified when metrics=false
for _, f := range resp.Folders {
assert.False(t, f.Metrics.IsSpecified(), "metrics should not be specified when metrics param is false/omitted")
}
}
func TestListClientFolders_EmptyResult(t *testing.T) {
@@ -520,7 +526,7 @@ func TestListClientFolders_EmptyResult(t *testing.T) {
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
err := ctrl.ListClientFolders(c, queryapi.ClientID(clientID))
err := ctrl.ListClientFolders(c, queryapi.ClientID(clientID), queryapi.ListClientFoldersParams{})
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
@@ -531,3 +537,124 @@ func TestListClientFolders_EmptyResult(t *testing.T) {
// Should have empty folders array
assert.Len(t, resp.Folders, 0)
}
func TestListClientFolders_WithMetrics(t *testing.T) {
ctrl, cfg, clientID := setupFoldersTestController(t)
ctx := t.Context()
// Create a folder
folderRec, err := cfg.GetDBQueries().CreateFolder(ctx, &repository.CreateFolderParams{
Path: "/metrics-folder",
Clientid: clientID,
Createdby: "admin@example.com",
})
require.NoError(t, err)
// Create documents in the folder
filename1 := "doc1.pdf"
docID1, err := cfg.GetDBQueries().CreateDocument(ctx, &repository.CreateDocumentParams{
Clientid: clientID,
Hash: fmt.Sprintf("listmetricshash1-%s", uuid.New().String()[:8]),
Filename: &filename1,
Folderid: &folderRec.ID,
})
require.NoError(t, err)
filename2 := "doc2.pdf"
docID2, err := cfg.GetDBQueries().CreateDocument(ctx, &repository.CreateDocumentParams{
Clientid: clientID,
Hash: fmt.Sprintf("listmetricshash2-%s", uuid.New().String()[:8]),
Filename: &filename2,
Folderid: &folderRec.ID,
})
require.NoError(t, err)
// Apply labels
_, err = cfg.GetDBQueries().ApplyLabel(ctx, &repository.ApplyLabelParams{
Documentid: docID1,
Label: "Ingested",
Appliedby: "user@example.com",
})
require.NoError(t, err)
_, err = cfg.GetDBQueries().ApplyLabel(ctx, &repository.ApplyLabelParams{
Documentid: docID2,
Label: "Ingested",
Appliedby: "user@example.com",
})
require.NoError(t, err)
_, err = cfg.GetDBQueries().ApplyLabel(ctx, &repository.ApplyLabelParams{
Documentid: docID2,
Label: "OCR_Processed",
Appliedby: "user@example.com",
})
require.NoError(t, err)
e := echo.New()
req := httptest.NewRequest(http.MethodGet, fmt.Sprintf("/client/%s/folders?metrics=true", clientID), nil)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
// Call with metrics=true
metricsTrue := true
err = ctrl.ListClientFolders(c, queryapi.ClientID(clientID), queryapi.ListClientFoldersParams{
Metrics: &metricsTrue,
})
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
var resp queryapi.FolderList
err = json.Unmarshal(rec.Body.Bytes(), &resp)
require.NoError(t, err)
// Should have 1 folder
require.Len(t, resp.Folders, 1)
// Metrics should be populated
folder := resp.Folders[0]
assert.True(t, folder.Metrics.IsSpecified(), "metrics should be specified when metrics=true")
metricsVal, err := folder.Metrics.Get()
require.NoError(t, err)
assert.Equal(t, int32(2), metricsVal.TotalDocuments)
assert.Equal(t, int32(2), metricsVal.ByLabel["Ingested"])
assert.Equal(t, int32(1), metricsVal.ByLabel["OCR_Processed"])
}
func TestListClientFolders_MetricsFalseExplicit(t *testing.T) {
ctrl, cfg, clientID := setupFoldersTestController(t)
ctx := t.Context()
// Create a folder
_, err := cfg.GetDBQueries().CreateFolder(ctx, &repository.CreateFolderParams{
Path: "/no-metrics-folder",
Clientid: clientID,
Createdby: "admin@example.com",
})
require.NoError(t, err)
e := echo.New()
req := httptest.NewRequest(http.MethodGet, fmt.Sprintf("/client/%s/folders?metrics=false", clientID), nil)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
// Call with metrics=false explicitly
metricsFalse := false
err = ctrl.ListClientFolders(c, queryapi.ClientID(clientID), queryapi.ListClientFoldersParams{
Metrics: &metricsFalse,
})
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
var resp queryapi.FolderList
err = json.Unmarshal(rec.Body.Bytes(), &resp)
require.NoError(t, err)
// Should have 1 folder
require.Len(t, resp.Folders, 1)
// Metrics should NOT be specified
folder := resp.Folders[0]
assert.False(t, folder.Metrics.IsSpecified(), "metrics should not be specified when metrics=false")
}