~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/state/cloudimagemetadata/functions_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 2015 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package cloudimagemetadata_test
 
5
 
 
6
import (
 
7
        "fmt"
 
8
 
 
9
        "github.com/juju/testing"
 
10
        jc "github.com/juju/testing/checkers"
 
11
        gc "gopkg.in/check.v1"
 
12
        "gopkg.in/mgo.v2/bson"
 
13
 
 
14
        "github.com/juju/juju/state/cloudimagemetadata"
 
15
)
 
16
 
 
17
type funcMetadataSuite struct {
 
18
        testing.IsolationSuite
 
19
}
 
20
 
 
21
var _ = gc.Suite(&funcMetadataSuite{})
 
22
 
 
23
func (s *funcMetadataSuite) TestSearchEmptyCriteria(c *gc.C) {
 
24
        s.assertSearchCriteriaBuilt(c, cloudimagemetadata.MetadataFilter{}, nil)
 
25
}
 
26
 
 
27
func (s *funcMetadataSuite) TestSearchCriteriaWithStream(c *gc.C) {
 
28
        s.assertSearchCriteriaBuilt(c,
 
29
                cloudimagemetadata.MetadataFilter{Stream: "stream-value"},
 
30
                bson.D{{"stream", "stream-value"}})
 
31
}
 
32
 
 
33
func (s *funcMetadataSuite) TestSearchCriteriaWithRegion(c *gc.C) {
 
34
        s.assertSearchCriteriaBuilt(c,
 
35
                cloudimagemetadata.MetadataFilter{Region: "region-value"},
 
36
                bson.D{{"region", "region-value"}})
 
37
}
 
38
 
 
39
func (s *funcMetadataSuite) TestSearchCriteriaWithSeries(c *gc.C) {
 
40
        s.assertSearchCriteriaBuilt(c,
 
41
                cloudimagemetadata.MetadataFilter{Series: []string{"series-value"}},
 
42
                bson.D{{"series", bson.D{{"$in", []string{"series-value"}}}}})
 
43
}
 
44
 
 
45
func (s *funcMetadataSuite) TestSearchCriteriaWithArch(c *gc.C) {
 
46
        s.assertSearchCriteriaBuilt(c,
 
47
                cloudimagemetadata.MetadataFilter{Arches: []string{"arch-value"}},
 
48
                bson.D{{"arch", bson.D{{"$in", []string{"arch-value"}}}}})
 
49
}
 
50
 
 
51
func (s *funcMetadataSuite) TestSearchCriteriaWithVirtType(c *gc.C) {
 
52
        s.assertSearchCriteriaBuilt(c,
 
53
                cloudimagemetadata.MetadataFilter{VirtType: "vtype-value"},
 
54
                bson.D{{"virt_type", "vtype-value"}})
 
55
}
 
56
 
 
57
func (s *funcMetadataSuite) TestSearchCriteriaWithStorageType(c *gc.C) {
 
58
        s.assertSearchCriteriaBuilt(c,
 
59
                cloudimagemetadata.MetadataFilter{RootStorageType: "rootstorage-value"},
 
60
                bson.D{{"root_storage_type", "rootstorage-value"}})
 
61
}
 
62
 
 
63
func (s *funcMetadataSuite) TestSearchCriteriaAll(c *gc.C) {
 
64
        // There should not be any size mentioned in criteria.
 
65
        s.assertSearchCriteriaBuilt(c,
 
66
                cloudimagemetadata.MetadataFilter{
 
67
                        RootStorageType: "rootstorage-value",
 
68
                        Series:          []string{"series-value", "series-value-two"},
 
69
                        Stream:          "stream-value",
 
70
                        Region:          "region-value",
 
71
                        Arches:          []string{"arch-value", "arch-value-two"},
 
72
                        VirtType:        "vtype-value",
 
73
                },
 
74
                // This is in order in which it is built.
 
75
                bson.D{
 
76
                        {"stream", "stream-value"},
 
77
                        {"region", "region-value"},
 
78
                        {"series", bson.D{{"$in", []string{"series-value", "series-value-two"}}}},
 
79
                        {"arch", bson.D{{"$in", []string{"arch-value", "arch-value-two"}}}},
 
80
                        {"virt_type", "vtype-value"},
 
81
                        {"root_storage_type", "rootstorage-value"},
 
82
                })
 
83
}
 
84
 
 
85
func (s *funcMetadataSuite) assertSearchCriteriaBuilt(c *gc.C,
 
86
        criteria cloudimagemetadata.MetadataFilter,
 
87
        expected bson.D,
 
88
) {
 
89
        clause := cloudimagemetadata.BuildSearchClauses(criteria)
 
90
        c.Assert(fmt.Sprintf("%s", clause), jc.DeepEquals, fmt.Sprintf("%s", expected))
 
91
}