Skip to content

Commit c7f11bd

Browse files
author
Aaron Schlesinger
committed
fix(pkg/gitreceive/storage/interfaces.go): keeping track of calls in the mock interface implementations
1 parent dab2d43 commit c7f11bd

1 file changed

Lines changed: 44 additions & 9 deletions

File tree

pkg/gitreceive/storage/interfaces.go

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,71 @@ type BucketCreator interface {
1111
MakeBucket(bucketName string, acl s3.BucketACL, location string) error
1212
}
1313

14+
type FakeMakeBucketCall struct {
15+
BucketName string
16+
ACL s3.BucketACL
17+
Location string
18+
}
19+
1420
// FakeBucketCreator is a mock function that can be swapped in for an BucketCreator, so you can unit test your code
15-
type FakeBucketCreator func(string, s3.BucketACL, string) error
21+
type FakeBucketCreator struct {
22+
Fn func(string, s3.BucketACL, string) error
23+
Calls []FakeMakeBucketCall
24+
}
1625

1726
// PutObject is the interface definition
18-
func (f FakeBucketCreator) MakeBucket(name string, acl s3.BucketACL, location string) error {
19-
return f(name, acl, location)
27+
func (f *FakeBucketCreator) MakeBucket(name string, acl s3.BucketACL, location string) error {
28+
f.Calls = append(f.Calls, FakeMakeBucketCall{BucketName: name, ACL: acl, Location: location})
29+
return f.Fn(name, acl, location)
2030
}
2131

2232
// ObjectStatter is a *(github.com/minio/minio-go).Client compatible interface, restricted to just the StatObject function. You can use it in your code for easier unit testing without any external dependencies
2333
type ObjectStatter interface {
2434
StatObject(bucketName, objectKey string) (s3.ObjectInfo, error)
2535
}
2636

37+
type FakeStatObjectCall struct {
38+
BucketName string
39+
ObjectKey string
40+
}
41+
2742
// FakeObjectStatter is a mock function that can be swapped in for an ObjectStatter, so you can unit test your code
28-
type FakeObjectStatter func(string, string) (s3.ObjectInfo, error)
43+
type FakeObjectStatter struct {
44+
Fn func(string, string) (s3.ObjectInfo, error)
45+
Calls []FakeStatObjectCall
46+
}
2947

3048
// PutObject is the interface definition
31-
func (f FakeObjectStatter) StatObject(bucketName, objectKey string) (s3.ObjectInfo, error) {
32-
return f(bucketName, objectKey)
49+
func (f *FakeObjectStatter) StatObject(bucketName, objectKey string) (s3.ObjectInfo, error) {
50+
f.Calls = append(f.Calls, FakeStatObjectCall{BucketName: bucketName, ObjectKey: objectKey})
51+
return f.Fn(bucketName, objectKey)
3352
}
3453

3554
// ObjectPutter is a *(github.com/minio/minio-go).Client compatible interface, restricted to just the PutObject function. You can use it in your code for easier unit testing without any external dependencies
3655
type ObjectPutter interface {
3756
PutObject(bucketName, objectKey string, reader io.Reader, contentType string) (int64, error)
3857
}
3958

59+
type FakePutObjectCall struct {
60+
BucketName string
61+
ObjectKey string
62+
Reader io.Reader
63+
ContentType string
64+
}
65+
4066
// FakeObjectPutter is a mock function that can be swapped in for an ObjectPutter, so you can unit test your code
41-
type FakeObjectPutter func(bucketName, objectKey string, reader io.Reader, contentType string) (int64, error)
67+
type FakeObjectPutter struct {
68+
Fn func(bucketName, objectKey string, reader io.Reader, contentType string) (int64, error)
69+
Calls []FakePutObjectCall
70+
}
4271

4372
// PutObject is the interface definition
44-
func (f FakeObjectPutter) PutObject(bucketName, objectKey string, reader io.Reader, contentType string) (int64, error) {
45-
return f(bucketName, objectKey, reader, contentType)
73+
func (f *FakeObjectPutter) PutObject(bucketName, objectKey string, reader io.Reader, contentType string) (int64, error) {
74+
f.Calls = append(f.Calls, FakePutObjectCall{
75+
BucketName: bucketName,
76+
ObjectKey: objectKey,
77+
Reader: reader,
78+
ContentType: contentType,
79+
})
80+
return f.Fn(bucketName, objectKey, reader, contentType)
4681
}

0 commit comments

Comments
 (0)