github.com/mwhudson/juju@v0.0.0-20160512215208-90ff01f3497f/payload/persistence/base_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package persistence 5 6 import ( 7 "fmt" 8 9 gitjujutesting "github.com/juju/testing" 10 "github.com/juju/utils" 11 gc "gopkg.in/check.v1" 12 "gopkg.in/juju/charm.v6-unstable" 13 14 "github.com/juju/juju/payload" 15 "github.com/juju/juju/testing" 16 ) 17 18 type BaseSuite struct { 19 testing.BaseSuite 20 21 Stub *gitjujutesting.Stub 22 State *fakeStatePersistence 23 Unit string 24 } 25 26 func (s *BaseSuite) SetUpTest(c *gc.C) { 27 s.BaseSuite.SetUpTest(c) 28 29 s.Stub = &gitjujutesting.Stub{} 30 s.State = &fakeStatePersistence{Stub: s.Stub} 31 s.Unit = "a-unit/0" 32 } 33 34 type PayloadDoc payloadDoc 35 36 func (doc PayloadDoc) convert() *payloadDoc { 37 return (*payloadDoc)(&doc) 38 } 39 40 func (s *BaseSuite) NewDoc(id string, pl payload.Payload) *payloadDoc { 41 return &payloadDoc{ 42 DocID: "payload#" + s.Unit + "#" + id, 43 UnitID: s.Unit, 44 45 Name: pl.Name, 46 Type: pl.Type, 47 RawID: pl.ID, 48 State: pl.Status, 49 } 50 } 51 52 func (s *BaseSuite) SetDoc(id string, pl payload.Payload) *payloadDoc { 53 payloadDoc := s.NewDoc(id, pl) 54 s.State.SetDocs(payloadDoc) 55 return payloadDoc 56 } 57 58 func (s *BaseSuite) RemoveDoc(id string) { 59 docID := "payload#" + s.Unit + "#" + id 60 delete(s.State.docs, docID) 61 } 62 63 func (s *BaseSuite) NewPersistence() *Persistence { 64 return NewPersistence(s.State, s.Unit) 65 } 66 67 func (s *BaseSuite) SetUnit(id string) { 68 s.Unit = id 69 } 70 71 func (s *BaseSuite) NewPayloads(pType string, ids ...string) []payload.Payload { 72 var payloads []payload.Payload 73 for _, id := range ids { 74 pl := s.NewPayload(pType, id) 75 payloads = append(payloads, pl) 76 } 77 return payloads 78 } 79 80 func (s *BaseSuite) NewPayload(pType string, id string) payload.Payload { 81 name, pluginID := payload.ParseID(id) 82 if pluginID == "" { 83 pluginID = fmt.Sprintf("%s-%s", name, utils.MustNewUUID()) 84 } 85 86 return payload.Payload{ 87 PayloadClass: charm.PayloadClass{ 88 Name: name, 89 Type: pType, 90 }, 91 ID: pluginID, 92 Status: "running", 93 Unit: s.Unit, 94 } 95 }