1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
package charmstore_test
7
"github.com/juju/errors"
8
"github.com/juju/testing"
9
jc "github.com/juju/testing/checkers"
10
gc "gopkg.in/check.v1"
11
"gopkg.in/juju/charm.v6-unstable"
12
charmresource "gopkg.in/juju/charm.v6-unstable/resource"
13
"gopkg.in/juju/charmrepo.v2-unstable"
15
"github.com/juju/juju/charmstore"
16
"github.com/juju/juju/resource/resourcetesting"
19
type LatestCharmInfoSuite struct {
20
testing.IsolationSuite
26
var _ = gc.Suite(&LatestCharmInfoSuite{})
28
func (s *LatestCharmInfoSuite) SetUpTest(c *gc.C) {
29
s.IsolationSuite.SetUpTest(c)
31
s.stub = &testing.Stub{}
32
s.client = &stubClient{Stub: s.stub}
35
func (s *LatestCharmInfoSuite) TestSuccess(c *gc.C) {
36
cURLs := []*charm.URL{
37
charm.MustParseURL("cs:quantal/spam-17"),
38
charm.MustParseURL("cs:quantal/eggs-2"),
39
charm.MustParseURL("cs:quantal/ham-1"),
41
notFound := errors.New("not found")
42
s.client.ReturnLatestRevisions = []charmrepo.CharmRevision{{
49
s.client.ReturnListResources = [][]charmresource.Resource{
51
resourcetesting.NewCharmResource(c, "spam", "<some data>"),
57
results, err := charmstore.LatestCharmInfo(s.client, cURLs)
58
c.Assert(err, jc.ErrorIsNil)
60
s.stub.CheckCallNames(c, "LatestRevisions", "ListResources")
61
s.stub.CheckCall(c, 0, "LatestRevisions", cURLs)
62
s.stub.CheckCall(c, 1, "ListResources", cURLs)
63
timestamp := results[0].Timestamp
64
results[2].Error = errors.Cause(results[2].Error)
65
c.Check(results, jc.DeepEquals, []charmstore.CharmInfoResult{{
66
CharmInfo: charmstore.CharmInfo{
67
OriginalURL: charm.MustParseURL("cs:quantal/spam-17"),
70
LatestResources: []charmresource.Resource{
71
resourcetesting.NewCharmResource(c, "spam", "<some data>"),
75
CharmInfo: charmstore.CharmInfo{
76
OriginalURL: charm.MustParseURL("cs:quantal/eggs-2"),
81
CharmInfo: charmstore.CharmInfo{
82
OriginalURL: charm.MustParseURL("cs:quantal/ham-1"),