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  }