- Score candidate metadata completeness and auto-match the richer duplicate when title/year/type tie - Enrich near-duplicate candidates via the provider chain before initial match selection - Seed both movie and series match queues for mixed-type libraries and wait for TV queue settle - Add taskmanager worker test coverage and a plan doc for the tie-breaker work
49 lines
1.6 KiB
Go
49 lines
1.6 KiB
Go
package taskmanager
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type testTask struct{}
|
|
|
|
func (testTask) Key() string { return "test" }
|
|
func (testTask) Name() string { return "test" }
|
|
func (testTask) Description() string { return "test" }
|
|
func (testTask) Category() TaskCategory { return TaskCategorySystem }
|
|
func (testTask) IsHidden() bool { return false }
|
|
func (testTask) DefaultTriggers() []TriggerConfig { return nil }
|
|
func (testTask) Execute(context.Context, ProgressReporter) error { return nil }
|
|
|
|
type testTrigger struct {
|
|
ch chan struct{}
|
|
}
|
|
|
|
func newTestTrigger(TriggerConfig) Trigger {
|
|
return &testTrigger{ch: make(chan struct{}, 1)}
|
|
}
|
|
|
|
func (t *testTrigger) Start(*ExecutionResult) {
|
|
t.ch <- struct{}{}
|
|
}
|
|
|
|
func (t *testTrigger) Stop() {}
|
|
func (t *testTrigger) NextRunTime() time.Time { return time.Time{} }
|
|
func (t *testTrigger) Config() TriggerConfig { return TriggerConfig{} }
|
|
func (t *testTrigger) C() <-chan struct{} { return t.ch }
|
|
|
|
func TestInitialSetTriggersDoesNotMarkTriggerChanged(t *testing.T) {
|
|
worker := newTaskWorker(testTask{}, nil)
|
|
worker.setTriggers([]TriggerConfig{{Type: TriggerTypeInterval, IntervalMs: 1}}, newTestTrigger, nil, false)
|
|
|
|
if worker.triggerChanged.Load() {
|
|
t.Fatal("initial trigger setup should not mark triggers changed")
|
|
}
|
|
select {
|
|
case <-worker.triggerUpdate:
|
|
t.Fatal("initial trigger setup should not queue a trigger update")
|
|
default:
|
|
}
|
|
}
|