Skip to content

Commit a09030e

Browse files
committed
now with table driven tests
1 parent 27d805a commit a09030e

File tree

1 file changed

+36
-29
lines changed

1 file changed

+36
-29
lines changed

api/client_test.go

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -170,42 +170,39 @@ func (s *clientSuite) TestAddLocalCharmError(c *gc.C) {
170170
c.Assert(err, gc.ErrorMatches, `POST http://.*/environment/deadbeef-0bad-400d-8000-4b1d0d06f00d/charms\?series=quantal: the POST method is not allowed`)
171171
}
172172

173-
func (s *clientSuite) TestMinVersionTooHighLocalCharm(c *gc.C) {
173+
func (s *clientSuite) TestMinVersionLocalCharm(c *gc.C) {
174+
tests := []minverTest{
175+
{"2.0.0", "1.0.0", true},
176+
{"1.0.0", "2.0.0", false},
177+
{"1.25.0", "1.24.0", true},
178+
{"1.24.0", "1.25.0", false},
179+
{"1.25.1", "1.25.0", true},
180+
{"1.25.0", "1.25.1", false},
181+
{"1.25.0", "1.25.0", true},
182+
{"1.25.0", "1.25-alpha1", true},
183+
{"1.25-alpha1", "1.25.0", false},
184+
}
174185
client := s.APIState.Client()
186+
for _, t := range tests {
187+
testMinVer(client, t, c)
188+
}
189+
}
175190

176-
cleanup := api.PatchClientFacadeCall(client,
177-
func(request string, paramsIn interface{}, response interface{}) error {
178-
c.Assert(paramsIn, gc.IsNil)
179-
if response, ok := response.(*params.AgentVersionResult); ok {
180-
response.Version = version.Number{Major: 1}
181-
} else {
182-
c.Log("wrong output structure")
183-
c.Fail()
184-
}
185-
return nil
186-
},
187-
)
188-
defer cleanup()
189-
190-
charmArchive := testcharms.Repo.CharmArchive(c.MkDir(), "dummy")
191-
curl := charm.MustParseURL(
192-
fmt.Sprintf("local:quantal/%s-%d", charmArchive.Meta().Name, charmArchive.Revision()),
193-
)
194-
charmArchive.Meta().MinJujuVersion = &version.Number{Major: 2}
195-
196-
_, err := client.AddLocalCharm(curl, charmArchive)
197-
198-
c.Assert(err, jc.Satisfies, api.IsMinVersionError)
191+
type minverTest struct {
192+
juju string
193+
charm string
194+
ok bool
199195
}
200196

201-
func (s *clientSuite) TestMinVersionOKLocalCharm(c *gc.C) {
202-
client := s.APIState.Client()
197+
func testMinVer(client *api.Client, t minverTest, c *gc.C) {
198+
charmMinVer := version.MustParse(t.charm)
199+
jujuVer := version.MustParse(t.juju)
203200

204201
cleanup := api.PatchClientFacadeCall(client,
205202
func(request string, paramsIn interface{}, response interface{}) error {
206203
c.Assert(paramsIn, gc.IsNil)
207204
if response, ok := response.(*params.AgentVersionResult); ok {
208-
response.Version = version.Number{Major: 2}
205+
response.Version = jujuVer
209206
} else {
210207
c.Log("wrong output structure")
211208
c.Fail()
@@ -219,11 +216,21 @@ func (s *clientSuite) TestMinVersionOKLocalCharm(c *gc.C) {
219216
curl := charm.MustParseURL(
220217
fmt.Sprintf("local:quantal/%s-%d", charmArchive.Meta().Name, charmArchive.Revision()),
221218
)
222-
charmArchive.Meta().MinJujuVersion = &version.Number{Major: 1}
219+
charmArchive.Meta().MinJujuVersion = &charmMinVer
223220

224221
_, err := client.AddLocalCharm(curl, charmArchive)
225222

226-
c.Assert(err, jc.ErrorIsNil)
223+
if t.ok {
224+
if err != nil {
225+
c.Errorf("Unexpected non-nil error for jujuver %v, minver %v: %#v", t.juju, t.charm, err)
226+
}
227+
} else {
228+
if err == nil {
229+
c.Errorf("Unexpected nil error for jujuver %v, minver %v", t.juju, t.charm)
230+
} else if !api.IsMinVersionError(err) {
231+
c.Errorf("Wrong error for jujuver %v, minver %v: expected minVersionError, got: %#v", t.juju, t.charm, err)
232+
}
233+
}
227234
}
228235

229236
func fakeAPIEndpoint(c *gc.C, client *api.Client, address, method string, handle func(http.ResponseWriter, *http.Request)) net.Listener {

0 commit comments

Comments
 (0)