Skip to content

Commit

Permalink
spaces api test: add test
Browse files Browse the repository at this point in the history
  • Loading branch information
nam committed Jan 28, 2020
1 parent 669519e commit d950960
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 1 deletion.
14 changes: 14 additions & 0 deletions api/spaces/export_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Copyright 2020 Canonical Ltd.
// Licensed under the AGPLv3, see LICENCE file for details.

package spaces

import (
"github.com/juju/juju/api/base"
)

func NewStateFromCaller(caller base.FacadeCaller) *API {
return &API{
facade: caller,
}
}
5 changes: 4 additions & 1 deletion api/spaces/spaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,5 +170,8 @@ func (api *API) RenameSpace(oldName string, newName string) error {
}
return errors.Trace(err)
}
return response.OneError()
if err := response.Combine(); err != nil {
return errors.Trace(err)
}
return nil
}
62 changes: 62 additions & 0 deletions api/spaces/spaces_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"fmt"
"math/rand"

"github.com/golang/mock/gomock"
"github.com/juju/juju/api/base/mocks"
jc "github.com/juju/testing/checkers"
gc "gopkg.in/check.v1"
"gopkg.in/juju/names.v3"
Expand All @@ -19,6 +21,66 @@ import (
coretesting "github.com/juju/juju/testing"
)

// spacesSuite are using mocks instead of the apicaller stubs
type spacesSuite struct {
fCaller *mocks.MockFacadeCaller
API *spaces.API
}

var _ = gc.Suite(&spacesSuite{})

func (s *spacesSuite) SetUpTest(c *gc.C) {
}

func (s *spacesSuite) TearDownTest(c *gc.C) {
s.fCaller = nil
}

func (s *spacesSuite) setUpMocks(c *gc.C) *gomock.Controller {
ctrl := gomock.NewController(c)

caller := mocks.NewMockAPICallCloser(ctrl)
caller.EXPECT().BestFacadeVersion(gomock.Any()).Return(0).AnyTimes()

s.fCaller = mocks.NewMockFacadeCaller(ctrl)
s.fCaller.EXPECT().RawAPICaller().Return(caller).AnyTimes()
s.API = spaces.NewStateFromCaller(s.fCaller)
return ctrl
}

func (s *spacesSuite) TestRenameSpace(c *gc.C) {
defer s.setUpMocks(c).Finish()
from, to := "from", "to"
resultSource := params.ErrorResults{}
args := params.RenameSpacesParams{SpacesRenames: []params.RenameSpaceParams{{
FromSpaceTag: names.NewSpaceTag(from).String(),
ToSpaceTag: names.NewSpaceTag(to).String(),
}}}
s.fCaller.EXPECT().FacadeCall("RenameSpace", args, gomock.Any()).SetArg(2, resultSource).Return(nil)

err := s.API.RenameSpace(from, to)
c.Assert(err, gc.IsNil)
}

func (s *spacesSuite) TestRenameSpaceError(c *gc.C) {
defer s.setUpMocks(c).Finish()
from, to := "from", "to"
resultSource := params.ErrorResults{Results: []params.ErrorResult{{
Error: &params.Error{
Message: "bam",
Code: "500",
},
}}}
args := params.RenameSpacesParams{SpacesRenames: []params.RenameSpaceParams{{
FromSpaceTag: names.NewSpaceTag(from).String(),
ToSpaceTag: names.NewSpaceTag(to).String(),
}}}
s.fCaller.EXPECT().FacadeCall("RenameSpace", args, gomock.Any()).SetArg(2, resultSource).Return(nil)

err := s.API.RenameSpace(from, to)
c.Assert(err, gc.ErrorMatches, "bam")
}

type SpacesSuite struct {
coretesting.BaseSuite

Expand Down

0 comments on commit d950960

Please sign in to comment.