1
Fork 0
photoview/api/scanner/scanner_queue/queue_test.go

110 lines
2.8 KiB
Go
Raw Normal View History

2022-02-14 23:57:45 +01:00
package scanner_queue
2020-06-23 14:10:03 +02:00
import (
2022-03-28 18:43:00 +02:00
"context"
2022-07-08 17:44:03 +02:00
"flag"
2020-06-23 14:10:03 +02:00
"testing"
2020-12-17 22:51:43 +01:00
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/scanner_cache"
2022-03-28 18:43:00 +02:00
"github.com/photoview/photoview/api/scanner/scanner_task"
2020-06-23 14:10:03 +02:00
)
2022-07-08 17:44:03 +02:00
var _ = flag.Bool("database", false, "run database integration tests")
var _ = flag.Bool("filesystem", false, "run filesystem integration tests")
2020-12-06 15:24:15 +01:00
func makeAlbumWithID(id int) *models.Album {
var album models.Album
album.ID = id
return &album
}
2022-03-28 18:43:00 +02:00
func makeScannerJob(albumID int) ScannerJob {
return NewScannerJob(scanner_task.NewTaskContext(context.Background(), nil, makeAlbumWithID(albumID), scanner_cache.MakeAlbumCache()))
}
2020-06-23 14:10:03 +02:00
func TestScannerQueue_AddJob(t *testing.T) {
scannerJobs := []ScannerJob{
2022-03-28 18:43:00 +02:00
makeScannerJob(100),
makeScannerJob(20),
2020-06-23 14:10:03 +02:00
}
mockScannerQueue := ScannerQueue{
idle_chan: make(chan bool, 1),
in_progress: make([]ScannerJob, 0),
up_next: scannerJobs,
db: nil,
}
t.Run("add new job to scanner queue", func(t *testing.T) {
2022-03-28 18:43:00 +02:00
newJob := makeScannerJob(42)
2020-06-23 14:10:03 +02:00
startingJobs := len(mockScannerQueue.up_next)
err := mockScannerQueue.addJob(&newJob)
if err != nil {
t.Errorf(".AddJob() returned an unexpected error: %s", err)
}
if len(mockScannerQueue.up_next) != startingJobs+1 {
t.Errorf("Expected scanner queue length to be %d but got %d", startingJobs+1, len(mockScannerQueue.up_next))
} else if mockScannerQueue.up_next[len(mockScannerQueue.up_next)-1] != newJob {
t.Errorf("Expected scanner queue to contain the job that was added: %+v", newJob)
}
})
t.Run("add existing job to scanner queue", func(t *testing.T) {
startingJobs := len(mockScannerQueue.up_next)
2022-03-28 18:43:00 +02:00
job := makeScannerJob(20)
err := mockScannerQueue.addJob(&job)
2020-06-23 14:10:03 +02:00
if err != nil {
t.Errorf(".AddJob() returned an unexpected error: %s", err)
}
if len(mockScannerQueue.up_next) != startingJobs {
t.Errorf("Expected scanner queue length not to change: start length %d, new length %d", startingJobs, len(mockScannerQueue.up_next))
}
})
}
func TestScannerQueue_JobOnQueue(t *testing.T) {
scannerJobs := []ScannerJob{
2022-03-28 18:43:00 +02:00
makeScannerJob(100),
makeScannerJob(20),
2020-06-23 14:10:03 +02:00
}
mockScannerQueue := ScannerQueue{
idle_chan: make(chan bool, 1),
in_progress: make([]ScannerJob, 0),
up_next: scannerJobs,
db: nil,
}
onQueueTests := []struct {
string
bool
ScannerJob
}{
2022-03-28 18:43:00 +02:00
{"album which owner is already on the queue", true, makeScannerJob(100)},
{"album that is not on the queue", false, makeScannerJob(321)},
2020-06-23 14:10:03 +02:00
}
for _, test := range onQueueTests {
t.Run(test.string, func(t *testing.T) {
onQueue, err := mockScannerQueue.jobOnQueue(&test.ScannerJob)
if err != nil {
t.Error("Expected jobOnQueue not to return an error")
} else if onQueue != test.bool {
t.Fail()
}
})
}
}