Files
photoview/api/scanner/scanner_test.go
Googol Lee f1b523a27e Include a group of small but real media files for testing. (#1131)
* Move scanner/test_data/* to a stand-alone directory.

* Include real medias.

* Rename testdata to test_data

* Rename test_data/scanner -> test_data/library

* Clean tests to avoid depneding env.

* Rename: scanner/test_data -> scanner/test_media

* Rename: test_data/bin -> test_data/mock_bin

* Fix paths in tests.
2024-11-23 09:02:11 +01:00

83 lines
1.7 KiB
Go

package scanner_test
import (
"os"
"testing"
"time"
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/face_detection"
"github.com/photoview/photoview/api/test_utils"
scanner_utils "github.com/photoview/photoview/api/test_utils/scanner"
"github.com/stretchr/testify/assert"
)
func TestMain(m *testing.M) {
os.Exit(test_utils.IntegrationTestRun(m))
}
func TestFullScan(t *testing.T) {
test_utils.FilesystemTest(t)
db := test_utils.DatabaseTest(t)
pass := "1234"
user, err := models.RegisterUser(db, "test_user", &pass, true)
if !assert.NoError(t, err) {
return
}
rootAlbum := models.Album{
Title: "root album",
Path: "./test_media/library",
}
if !assert.NoError(t, db.Save(&rootAlbum).Error) {
return
}
err = db.Model(user).Association("Albums").Append(&rootAlbum)
if !assert.NoError(t, err) {
return
}
if !assert.NoError(t, face_detection.InitializeFaceDetector(db)) {
return
}
scanner_utils.RunScannerOnUser(t, db, user)
var allMedia []*models.Media
if !assert.NoError(t, db.Find(&allMedia).Error) {
return
}
assert.Equal(t, 9, len(allMedia))
var allMediaURL []*models.MediaURL
if !assert.NoError(t, db.Find(&allMediaURL).Error) {
return
}
assert.Equal(t, 18, len(allMediaURL))
// Verify that faces was recognized
assert.Eventually(t, func() bool {
var allFaceGroups []*models.FaceGroup
if !assert.NoError(t, db.Find(&allFaceGroups).Error) {
return false
}
return len(allFaceGroups) == 3
}, time.Second*5, time.Millisecond*500)
assert.Eventually(t, func() bool {
var allImageFaces []*models.ImageFace
if !assert.NoError(t, db.Find(&allImageFaces).Error) {
return false
}
return len(allImageFaces) == 6
}, time.Second*5, time.Millisecond*500)
}