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  }