~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/resource/service_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

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 resource_test
 
5
 
 
6
import (
 
7
        "github.com/juju/testing"
 
8
        jc "github.com/juju/testing/checkers"
 
9
        gc "gopkg.in/check.v1"
 
10
        charmresource "gopkg.in/juju/charm.v6-unstable/resource"
 
11
 
 
12
        "github.com/juju/juju/resource"
 
13
        "github.com/juju/juju/resource/resourcetesting"
 
14
)
 
15
 
 
16
type ServiceResourcesSuite struct {
 
17
        testing.IsolationSuite
 
18
}
 
19
 
 
20
var _ = gc.Suite(&ServiceResourcesSuite{})
 
21
 
 
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{
 
28
                        res,
 
29
                },
 
30
                CharmStoreResources: []charmresource.Resource{
 
31
                        csRes.Resource,
 
32
                },
 
33
        }
 
34
 
 
35
        updates, err := sr.Updates()
 
36
        c.Assert(err, jc.ErrorIsNil)
 
37
 
 
38
        c.Check(updates, gc.HasLen, 0)
 
39
}
 
40
 
 
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{
 
48
                        spam,
 
49
                        eggs,
 
50
                },
 
51
                CharmStoreResources: []charmresource.Resource{
 
52
                        spam.Resource,
 
53
                        expected,
 
54
                },
 
55
        }
 
56
 
 
57
        updates, err := sr.Updates()
 
58
        c.Assert(err, jc.ErrorIsNil)
 
59
 
 
60
        c.Check(updates, jc.DeepEquals, []charmresource.Resource{expected})
 
61
}
 
62
 
 
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{
 
70
                        spam,
 
71
                        eggs,
 
72
                },
 
73
                CharmStoreResources: []charmresource.Resource{
 
74
                        expected,
 
75
                        spam.Resource,
 
76
                },
 
77
        }
 
78
 
 
79
        updates, err := sr.Updates()
 
80
        c.Assert(err, jc.ErrorIsNil)
 
81
 
 
82
        c.Check(updates, jc.DeepEquals, []charmresource.Resource{expected})
 
83
}
 
84
 
 
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{
 
90
                        spam,
 
91
                        eggs,
 
92
                },
 
93
                CharmStoreResources: []charmresource.Resource{
 
94
                        spam.Resource,
 
95
                        eggs.Resource,
 
96
                },
 
97
        }
 
98
 
 
99
        updates, err := sr.Updates()
 
100
        c.Assert(err, jc.ErrorIsNil)
 
101
 
 
102
        c.Check(updates, gc.HasLen, 0)
 
103
}
 
104
 
 
105
func newStoreResource(c *gc.C, name, applicationID string, revision int) resource.Resource {
 
106
        content := name
 
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)
 
113
        return res
 
114
}