github.com/uber/kraken@v0.1.4/lib/persistedretry/tagreplication/testing.go (about) 1 // Copyright (c) 2016-2019 Uber Technologies, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 package tagreplication 15 16 import ( 17 "reflect" 18 "time" 19 ) 20 21 // TaskMatcher is a gomock Matcher which matches two tasks. 22 type TaskMatcher struct { 23 task Task 24 } 25 26 // MatchTask returns a new TaskMatcher 27 func MatchTask(task *Task) *TaskMatcher { 28 return &TaskMatcher{*task} 29 } 30 31 // Matches compares two tasks. It ignores checking for time. 32 func (m *TaskMatcher) Matches(x interface{}) bool { 33 expected := m.task 34 result := *(x.(*Task)) 35 36 expected.CreatedAt = time.Time{} 37 result.CreatedAt = time.Time{} 38 expected.LastAttempt = time.Time{} 39 result.LastAttempt = time.Time{} 40 41 return reflect.DeepEqual(expected, result) 42 } 43 44 // String returns the name of the matcher. 45 func (m *TaskMatcher) String() string { 46 return "TaskMatcher" 47 }