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:
@@ -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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user