github.com/leg100/ots@v0.0.7-0.20210919080622-034055ced4bd/agent/spooler_mock.go (about) 1 package agent 2 3 import "github.com/leg100/ots" 4 5 type MockSpooler struct { 6 queue, cancelations chan ots.Job 7 8 Spooler 9 } 10 11 type MockSpoolerOption func(*MockSpooler) 12 13 func WithMockJobs(job ...ots.Job) MockSpoolerOption { 14 return func(s *MockSpooler) { 15 s.queue = make(chan ots.Job, len(job)) 16 for _, r := range job { 17 s.queue <- r 18 } 19 } 20 } 21 22 func WithCanceledJobs(job ...ots.Job) MockSpoolerOption { 23 return func(s *MockSpooler) { 24 s.cancelations = make(chan ots.Job, len(job)) 25 for _, r := range job { 26 s.cancelations <- r 27 } 28 } 29 } 30 31 func NewMockSpooler(opt ...MockSpoolerOption) *MockSpooler { 32 spooler := MockSpooler{} 33 for _, o := range opt { 34 o(&spooler) 35 } 36 return &spooler 37 } 38 39 func (s *MockSpooler) GetJob() <-chan ots.Job { 40 return s.queue 41 } 42 43 func (s *MockSpooler) GetCancelation() <-chan ots.Job { 44 return s.queue 45 }