Files
photoview/api/scanner/scanner_tasks/cleanup_tasks/cleanup_media_test.go
Googol Lee e045e0f7ae Fix sqlite fk configuration and enable all tests for sqlite. Enable detail SQL log in tests (#1151)
* Fix sqlite fk configuration and enable all tests for sqlite.

* Add default severity to golangci-lint config.
2025-01-02 23:02:19 +01:00

106 lines
2.7 KiB
Go

package cleanup_tasks_test
import (
"os"
"path"
"testing"
"github.com/otiai10/copy"
"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 TestCleanupMedia(t *testing.T) {
test_utils.FilesystemTest(t)
db := test_utils.DatabaseTest(t)
if !assert.NoError(t, face_detection.InitializeFaceDetector(db)) {
return
}
testDir := t.TempDir()
assert.NoError(t, copy.Copy("../../test_media/library", testDir))
countAllMedia := func() int {
var allMedia []*models.Media
if !assert.NoError(t, db.Find(&allMedia).Error) {
return -1
}
return len(allMedia)
}
countAllMediaURLs := func() int {
var allMediaURLs []*models.MediaURL
if !assert.NoError(t, db.Find(&allMediaURLs).Error) {
return -1
}
return len(allMediaURLs)
}
pass := "1234"
user1, err := models.RegisterUser(db, "user1", &pass, true)
if !assert.NoError(t, err) {
return
}
user2, err := models.RegisterUser(db, "user2", &pass, true)
if !assert.NoError(t, err) {
return
}
rootAlbum := models.Album{
Title: "root album",
Path: testDir,
}
if !assert.NoError(t, db.Save(&rootAlbum).Error) {
return
}
err = db.Model(user1).Association("Albums").Append(&rootAlbum)
if !assert.NoError(t, err) {
return
}
err = db.Model(user2).Association("Albums").Append(&rootAlbum)
if !assert.NoError(t, err) {
return
}
t.Run("Modify albums", func(t *testing.T) {
scanner_utils.RunScannerOnUser(t, db, user1)
assert.Equal(t, 9, countAllMedia())
assert.Equal(t, 18, countAllMediaURLs())
// move faces directory
assert.NoError(t, os.Rename(path.Join(testDir, "faces"), path.Join(testDir, "faces_moved")))
scanner_utils.RunScannerAll(t, db)
assert.Equal(t, 9, countAllMedia())
assert.Equal(t, 18, countAllMediaURLs())
// remove faces_moved directory
assert.NoError(t, os.RemoveAll(path.Join(testDir, "faces_moved")))
scanner_utils.RunScannerAll(t, db)
assert.Equal(t, 3, countAllMedia())
assert.Equal(t, 6, countAllMediaURLs())
})
t.Run("Modify images", func(t *testing.T) {
assert.NoError(t, os.Rename(path.Join(testDir, "buttercup_close_summer_yellow.jpg"), path.Join(testDir, "yellow-flower.jpg")))
scanner_utils.RunScannerAll(t, db)
assert.Equal(t, 3, countAllMedia())
assert.Equal(t, 6, countAllMediaURLs())
assert.NoError(t, os.Remove(path.Join(testDir, "lilac_lilac_bush_lilac.jpg")))
scanner_utils.RunScannerAll(t, db)
assert.Equal(t, 2, countAllMedia())
assert.Equal(t, 4, countAllMediaURLs())
})
}