1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/testing"
8
jc "github.com/juju/testing/checkers"
10
charmresource "gopkg.in/juju/charm.v6-unstable/resource"
12
"github.com/juju/juju/resource"
13
"github.com/juju/juju/resource/resourcetesting"
16
type ServiceResourcesSuite struct {
17
testing.IsolationSuite
20
var _ = gc.Suite(&ServiceResourcesSuite{})
22
func (s *ServiceResourcesSuite) TestUpdatesUploaded(c *gc.C) {
23
csRes := newStoreResource(c, "spam", "a-application", 2)
24
res := csRes // a copy
25
res.Origin = charmresource.OriginUpload
26
sr := resource.ServiceResources{
27
Resources: []resource.Resource{
30
CharmStoreResources: []charmresource.Resource{
35
updates, err := sr.Updates()
36
c.Assert(err, jc.ErrorIsNil)
38
c.Check(updates, gc.HasLen, 0)
41
func (s *ServiceResourcesSuite) TestUpdatesDifferent(c *gc.C) {
42
spam := newStoreResource(c, "spam", "a-application", 2)
43
eggs := newStoreResource(c, "eggs", "a-application", 3)
44
expected := eggs.Resource
45
expected.Revision += 1
46
sr := resource.ServiceResources{
47
Resources: []resource.Resource{
51
CharmStoreResources: []charmresource.Resource{
57
updates, err := sr.Updates()
58
c.Assert(err, jc.ErrorIsNil)
60
c.Check(updates, jc.DeepEquals, []charmresource.Resource{expected})
63
func (s *ServiceResourcesSuite) TestUpdatesBadOrdering(c *gc.C) {
64
spam := newStoreResource(c, "spam", "a-application", 2)
65
eggs := newStoreResource(c, "eggs", "a-application", 3)
66
expected := eggs.Resource
67
expected.Revision += 1
68
sr := resource.ServiceResources{
69
Resources: []resource.Resource{
73
CharmStoreResources: []charmresource.Resource{
79
updates, err := sr.Updates()
80
c.Assert(err, jc.ErrorIsNil)
82
c.Check(updates, jc.DeepEquals, []charmresource.Resource{expected})
85
func (s *ServiceResourcesSuite) TestUpdatesNone(c *gc.C) {
86
spam := newStoreResource(c, "spam", "a-application", 2)
87
eggs := newStoreResource(c, "eggs", "a-application", 3)
88
sr := resource.ServiceResources{
89
Resources: []resource.Resource{
93
CharmStoreResources: []charmresource.Resource{
99
updates, err := sr.Updates()
100
c.Assert(err, jc.ErrorIsNil)
102
c.Check(updates, gc.HasLen, 0)
105
func newStoreResource(c *gc.C, name, applicationID string, revision int) resource.Resource {
107
opened := resourcetesting.NewResource(c, nil, name, applicationID, content)
108
res := opened.Resource
109
res.Origin = charmresource.OriginStore
110
res.Revision = revision
111
err := res.Validate()
112
c.Assert(err, jc.ErrorIsNil)