Merged in feature/track-filesize (pull request #200)
track file sizes for all documents in system * feature complete needs dev testing
This commit is contained in:
@@ -627,6 +627,86 @@ func TestUploadDocumentBatch_Part1_TooLarge(t *testing.T) {
|
||||
assert.Contains(t, httpErr.Message, "file too large")
|
||||
}
|
||||
|
||||
// TestGetDocument_IncludesFileSize verifies that file sizes are returned
|
||||
// in the document response when documents have file_size_bytes set.
|
||||
func TestGetDocument_IncludesFileSize(t *testing.T) {
|
||||
cfg := &ControllerConfig{}
|
||||
test.CreateDB(t, cfg)
|
||||
initializeTestConfig(t, cfg)
|
||||
|
||||
svc := createControllerServices(cfg)
|
||||
cons := queryapi.NewControllers(svc, cfg)
|
||||
|
||||
// Create test client with root folder (unique ID to avoid conflicts)
|
||||
clientID := fmt.Sprintf("filesize_client_%s", uuid.New().String()[:8])
|
||||
test.CreateTestClient(t, cfg, clientID, "FileSize Client")
|
||||
|
||||
// Create document with file size
|
||||
filename := "measured-doc.pdf"
|
||||
fileSize := int64(1048576) // 1MB
|
||||
docId, err := cfg.GetDBQueries().CreateDocument(t.Context(), &repository.CreateDocumentParams{
|
||||
Clientid: clientID,
|
||||
Hash: fmt.Sprintf("filesizehash-%s", uuid.New().String()[:8]),
|
||||
Filename: &filename,
|
||||
FileSizeBytes: &fileSize,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
ctx, rec := createContext(t)
|
||||
|
||||
err = cons.GetDocument(ctx, docId, queryapi.GetDocumentParams{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, http.StatusOK, rec.Code)
|
||||
|
||||
var result queryapi.DocumentEnriched
|
||||
err = json.Unmarshal(rec.Body.Bytes(), &result)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Verify file size is present and correct
|
||||
assert.Equal(t, docId, result.Id)
|
||||
require.NotNil(t, result.FileSizeBytes, "document should have file size")
|
||||
assert.Equal(t, fileSize, *result.FileSizeBytes, "file size should be 1048576 (1MB)")
|
||||
}
|
||||
|
||||
// TestGetDocument_NilFileSize verifies that documents without file sizes
|
||||
// (legacy documents) return nil for fileSizeBytes.
|
||||
func TestGetDocument_NilFileSize(t *testing.T) {
|
||||
cfg := &ControllerConfig{}
|
||||
test.CreateDB(t, cfg)
|
||||
initializeTestConfig(t, cfg)
|
||||
|
||||
svc := createControllerServices(cfg)
|
||||
cons := queryapi.NewControllers(svc, cfg)
|
||||
|
||||
// Create test client with root folder (unique ID to avoid conflicts)
|
||||
clientID := fmt.Sprintf("legacy_client_%s", uuid.New().String()[:8])
|
||||
test.CreateTestClient(t, cfg, clientID, "Legacy Client")
|
||||
|
||||
// Create document WITHOUT file size (simulating legacy document)
|
||||
filename := "legacy-document.pdf"
|
||||
docId, err := cfg.GetDBQueries().CreateDocument(t.Context(), &repository.CreateDocumentParams{
|
||||
Clientid: clientID,
|
||||
Hash: fmt.Sprintf("legacyhash-%s", uuid.New().String()[:8]),
|
||||
Filename: &filename,
|
||||
FileSizeBytes: nil, // No file size
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
ctx, rec := createContext(t)
|
||||
|
||||
err = cons.GetDocument(ctx, docId, queryapi.GetDocumentParams{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, http.StatusOK, rec.Code)
|
||||
|
||||
var result queryapi.DocumentEnriched
|
||||
err = json.Unmarshal(rec.Body.Bytes(), &result)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Verify file size is nil for the legacy document
|
||||
assert.Equal(t, docId, result.Id)
|
||||
assert.Nil(t, result.FileSizeBytes, "legacy document should have nil file size")
|
||||
}
|
||||
|
||||
// Helper function to create test ZIP with multiple PDFs
|
||||
func createTestZIPFile(t *testing.T, pdfCount int) *bytes.Reader {
|
||||
var buf bytes.Buffer
|
||||
|
||||
Reference in New Issue
Block a user