-
Notifications
You must be signed in to change notification settings - Fork 14
/
trackmutator.go
41 lines (34 loc) · 1.09 KB
/
trackmutator.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package govcr
import (
"github.com/seborama/govcr/cassette/track"
)
// TrackMutator is an function signature for a Track mutator.
type TrackMutator func(*track.Track)
// OnErr adds a conditional mutation when the Track has recorded an error.
func (tm TrackMutator) OnErr() TrackMutator {
return func(aTrack *track.Track) {
if aTrack != nil && (aTrack.ErrType != "" || aTrack.ErrMsg != "") {
tm(aTrack)
}
}
}
// OnNoErr adds a conditional mutation when the Track has not recorded an error.
func (tm TrackMutator) OnNoErr() TrackMutator {
return func(aTrack *track.Track) {
if aTrack != nil && aTrack.ErrType == "" && aTrack.ErrMsg == "" {
tm(aTrack)
}
}
}
// TrackMutators is a collection of TrackMutator's.
type TrackMutators []TrackMutator
// Add a set of TrackMutator's to this TrackMutators collection.
func (tms TrackMutators) Add(mutators ...TrackMutator) TrackMutators {
return append(tms, mutators...)
}
// Mutate applies all mutators in this TrackMutators collection to the specified track.
func (tms TrackMutators) Mutate(t *track.Track) {
for _, tm := range tms {
tm(t)
}
}