~juju-qa/ubuntu/xenial/juju/xenial-2.0-beta3

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/charmstore/latest_test.go

  • Committer: Martin Packman
  • Date: 2016-03-30 19:31:08 UTC
  • mfrom: (1.1.41)
  • Revision ID: martin.packman@canonical.com-20160330193108-h9iz3ak334uk0z5r
Merge new upstream source 2.0~beta3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2016 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package charmstore_test
 
5
 
 
6
import (
 
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"
 
14
 
 
15
        "github.com/juju/juju/charmstore"
 
16
        "github.com/juju/juju/resource/resourcetesting"
 
17
)
 
18
 
 
19
type LatestCharmInfoSuite struct {
 
20
        testing.IsolationSuite
 
21
 
 
22
        stub   *testing.Stub
 
23
        client *stubClient
 
24
}
 
25
 
 
26
var _ = gc.Suite(&LatestCharmInfoSuite{})
 
27
 
 
28
func (s *LatestCharmInfoSuite) SetUpTest(c *gc.C) {
 
29
        s.IsolationSuite.SetUpTest(c)
 
30
 
 
31
        s.stub = &testing.Stub{}
 
32
        s.client = &stubClient{Stub: s.stub}
 
33
}
 
34
 
 
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"),
 
40
        }
 
41
        notFound := errors.New("not found")
 
42
        s.client.ReturnLatestRevisions = []charmrepo.CharmRevision{{
 
43
                Revision: 17,
 
44
        }, {
 
45
                Revision: 3,
 
46
        }, {
 
47
                Err: notFound,
 
48
        }}
 
49
        s.client.ReturnListResources = [][]charmresource.Resource{
 
50
                {
 
51
                        resourcetesting.NewCharmResource(c, "spam", "<some data>"),
 
52
                },
 
53
                nil,
 
54
                nil,
 
55
        }
 
56
 
 
57
        results, err := charmstore.LatestCharmInfo(s.client, cURLs)
 
58
        c.Assert(err, jc.ErrorIsNil)
 
59
 
 
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"),
 
68
                        Timestamp:      timestamp,
 
69
                        LatestRevision: 17,
 
70
                        LatestResources: []charmresource.Resource{
 
71
                                resourcetesting.NewCharmResource(c, "spam", "<some data>"),
 
72
                        },
 
73
                },
 
74
        }, {
 
75
                CharmInfo: charmstore.CharmInfo{
 
76
                        OriginalURL:    charm.MustParseURL("cs:quantal/eggs-2"),
 
77
                        Timestamp:      timestamp,
 
78
                        LatestRevision: 3,
 
79
                },
 
80
        }, {
 
81
                CharmInfo: charmstore.CharmInfo{
 
82
                        OriginalURL: charm.MustParseURL("cs:quantal/ham-1"),
 
83
                        Timestamp:   timestamp,
 
84
                },
 
85
                Error: notFound,
 
86
        }})
 
87
}