Skip to content

Commit

Permalink
Add a test for the new subresource Create method
Browse files Browse the repository at this point in the history
Signed-off-by: Nic Cope <nicc@rk0n.org>
  • Loading branch information
negz committed Jan 25, 2023
1 parent cf5f621 commit 30093fd
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 0 deletions.
1 change: 1 addition & 0 deletions pkg/resource/unstructured/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ type wrapperStatusClient struct {
// given obj. obj must be a struct pointer so that obj can be updated
// with the content returned by the Server.
func (c *wrapperStatusClient) Create(ctx context.Context, obj, subResource client.Object, opts ...client.SubResourceCreateOption) error {
// TODO(negz): Could subResource be wrapped?
if u, ok := obj.(Wrapper); ok {
return c.kube.Create(ctx, u.GetUnstructured(), subResource, opts...)
}
Expand Down
42 changes: 42 additions & 0 deletions pkg/resource/unstructured/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,48 @@ func TestDeleteAllOf(t *testing.T) {
}
}

func TestStatusCreate(t *testing.T) {
type args struct {
ctx context.Context
obj client.Object
sub client.Object
}
cases := map[string]struct {
c client.Client
args args
want error
}{
"Unwrapped": {
c: &test.MockClient{MockStatusCreate: test.NewMockSubResourceCreateFn(nil, func(obj client.Object) error {
if obj.(metav1.Object).GetName() != nameUnwrapped {
return errWrapped
}
return nil
})},
args: args{obj: NewUnwrapped()},
},
"Wrapped": {
c: &test.MockClient{MockStatusCreate: test.NewMockSubResourceCreateFn(nil, func(obj client.Object) error {
if obj.(metav1.Object).GetName() != nameWrapped {
return errUnwrapped
}
return nil
})},
args: args{obj: NewWrapped()},
},
}

for name, tc := range cases {
t.Run(name, func(t *testing.T) {
c := NewClient(tc.c)
got := c.Status().Create(tc.args.ctx, tc.args.obj, tc.args.sub)
if diff := cmp.Diff(tc.want, got, test.EquateErrors()); diff != "" {
t.Errorf("\nc.Status().Create(...): -want error, +got error:\n %s", diff)
}
})
}
}

func TestStatusUpdate(t *testing.T) {
type args struct {
ctx context.Context
Expand Down
12 changes: 12 additions & 0 deletions pkg/test/fake.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,18 @@ func NewMockPatchFn(err error, ofn ...ObjectFn) MockPatchFn {
}
}

// NewMockSubResourceCreateFn returns a MockSubResourceCreateFn that returns the supplied error.
func NewMockSubResourceCreateFn(err error, ofn ...ObjectFn) MockSubResourceCreateFn {
return func(_ context.Context, obj, subResource client.Object, _ ...client.SubResourceCreateOption) error {
for _, fn := range ofn {
if err := fn(obj); err != nil {
return err
}
}
return err
}
}

// NewMockSubResourceUpdateFn returns a MockSubResourceUpdateFn that returns the supplied error.
func NewMockSubResourceUpdateFn(err error, ofn ...ObjectFn) MockSubResourceUpdateFn {
return func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error {
Expand Down

0 comments on commit 30093fd

Please sign in to comment.