github.com/bdwilliams/libcompose@v0.3.1-0.20160826154243-d81a9bdacff0/docker/volume/volume_test.go (about)

     1  package volume
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/docker/engine-api/types"
     7  	"github.com/docker/libcompose/config"
     8  	"github.com/docker/libcompose/test"
     9  )
    10  
    11  func TestVolumesFromServices(t *testing.T) {
    12  	cases := []struct {
    13  		volumeConfigs   map[string]*config.VolumeConfig
    14  		services        map[string]*config.ServiceConfig
    15  		volumeEnabled   bool
    16  		expectedVolumes []*Volume
    17  		expectedError   bool
    18  	}{
    19  		{},
    20  		{
    21  			volumeConfigs: map[string]*config.VolumeConfig{
    22  				"vol1": {},
    23  			},
    24  			services: map[string]*config.ServiceConfig{},
    25  			expectedVolumes: []*Volume{
    26  				{
    27  					name:        "vol1",
    28  					projectName: "prj",
    29  				},
    30  			},
    31  			expectedError: false,
    32  		},
    33  	}
    34  
    35  	for index, c := range cases {
    36  		services := config.NewServiceConfigs()
    37  		for name, service := range c.services {
    38  			services.Add(name, service)
    39  		}
    40  
    41  		volumes, err := VolumesFromServices(&volumeClient{}, "prj", c.volumeConfigs, services, c.volumeEnabled)
    42  		if c.expectedError {
    43  			if err == nil {
    44  				t.Fatalf("%d: expected an error, got nothing", index)
    45  			}
    46  		} else {
    47  			if err != nil {
    48  				t.Fatalf("%d: didn't expect an error, got one %s", index, err.Error())
    49  			}
    50  		}
    51  		if volumes.volumeEnabled != c.volumeEnabled {
    52  			t.Fatalf("%d: expected volume enabled %v, got %v", index, c.volumeEnabled, volumes.volumeEnabled)
    53  		}
    54  		if len(volumes.volumes) != len(c.expectedVolumes) {
    55  			t.Fatalf("%d: expected %v, got %v", index, c.expectedVolumes, volumes.volumes)
    56  		}
    57  		for _, volume := range volumes.volumes {
    58  			testExpectedContainsVolume(t, index, c.expectedVolumes, volume)
    59  		}
    60  	}
    61  }
    62  
    63  func testExpectedContainsVolume(t *testing.T, index int, expected []*Volume, volume *Volume) {
    64  	found := false
    65  	for _, e := range expected {
    66  		if e.name == volume.name {
    67  			found = true
    68  			break
    69  		}
    70  	}
    71  	if !found {
    72  		t.Fatalf("%d: volume %v not found in %v", index, volume, expected)
    73  	}
    74  }
    75  
    76  type volumeClient struct {
    77  	test.NopClient
    78  	expectedName         string
    79  	expectedVolumeCreate types.VolumeCreateRequest
    80  	inspectError         error
    81  	inspectVolumeDriver  string
    82  	inspectVolumeOptions map[string]string
    83  	removeError          error
    84  }