github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/pkg/inspector/check/package_test.go (about)

     1  package check
     2  
     3  import "testing"
     4  
     5  type stubPkgManager struct {
     6  	installed bool
     7  	available bool
     8  }
     9  
    10  func (m stubPkgManager) IsInstalled(q PackageQuery) (bool, error) {
    11  	return m.installed, nil
    12  }
    13  
    14  func (m stubPkgManager) IsAvailable(q PackageQuery) (bool, error) {
    15  	return m.available, nil
    16  }
    17  
    18  func TestPackageCheck(t *testing.T) {
    19  	tests := []struct {
    20  		packageName                string
    21  		installationDisabled       bool
    22  		dockerInstallationDisabled bool
    23  		disconnectedInstallation   bool
    24  		isInstalled                bool
    25  		isAvailable                bool
    26  
    27  		expected    bool
    28  		errExpected bool
    29  	}{
    30  		{
    31  			packageName:          "somePkg",
    32  			installationDisabled: true,
    33  			isInstalled:          true,
    34  			isAvailable:          true,
    35  			expected:             true,
    36  		},
    37  		{
    38  			packageName:          "somePkg",
    39  			installationDisabled: true,
    40  			isInstalled:          false,
    41  			isAvailable:          true,
    42  			expected:             false,
    43  			errExpected:          true,
    44  		},
    45  		{
    46  			packageName:          "somePkg",
    47  			installationDisabled: true,
    48  			isInstalled:          false,
    49  			isAvailable:          false,
    50  			expected:             false,
    51  			errExpected:          true,
    52  		},
    53  		{
    54  			packageName:          "somePkg",
    55  			installationDisabled: false,
    56  			isInstalled:          true,
    57  			isAvailable:          true,
    58  			expected:             true,
    59  		},
    60  		{
    61  			packageName:          "somePkg",
    62  			installationDisabled: false,
    63  			isInstalled:          false,
    64  			isAvailable:          true,
    65  			expected:             true,
    66  		},
    67  		{
    68  			packageName:          "somePkg",
    69  			installationDisabled: false,
    70  			isInstalled:          true,
    71  			isAvailable:          false,
    72  			expected:             true,
    73  		},
    74  		{
    75  			packageName:          "somePkg",
    76  			installationDisabled: false,
    77  			isInstalled:          false,
    78  			isAvailable:          false,
    79  			expected:             true,
    80  		},
    81  		{
    82  			packageName:                "somePkg",
    83  			installationDisabled:       true,
    84  			dockerInstallationDisabled: true,
    85  			isInstalled:                false,
    86  			isAvailable:                false,
    87  			expected:                   false,
    88  			errExpected:                true,
    89  		},
    90  		{
    91  			packageName:                "docker-ce",
    92  			installationDisabled:       true,
    93  			dockerInstallationDisabled: true,
    94  			isInstalled:                false,
    95  			isAvailable:                false,
    96  			expected:                   true,
    97  		},
    98  		{
    99  			packageName:                "somePkg",
   100  			installationDisabled:       false,
   101  			dockerInstallationDisabled: false,
   102  			disconnectedInstallation:   true,
   103  			isInstalled:                true,
   104  			isAvailable:                true,
   105  			expected:                   true,
   106  		},
   107  		{
   108  			packageName:                "somePkg",
   109  			installationDisabled:       false,
   110  			dockerInstallationDisabled: false,
   111  			disconnectedInstallation:   true,
   112  			isInstalled:                true,
   113  			isAvailable:                false,
   114  			expected:                   true,
   115  		},
   116  		{
   117  			packageName:                "somePkg",
   118  			installationDisabled:       false,
   119  			dockerInstallationDisabled: false,
   120  			disconnectedInstallation:   true,
   121  			isInstalled:                false,
   122  			isAvailable:                true,
   123  			expected:                   true,
   124  		},
   125  		{
   126  			packageName:                "somePkg",
   127  			installationDisabled:       true,
   128  			dockerInstallationDisabled: false,
   129  			disconnectedInstallation:   true,
   130  			isInstalled:                false,
   131  			isAvailable:                false,
   132  			expected:                   false,
   133  			errExpected:                true,
   134  		},
   135  		{
   136  			packageName:                "docker-ce",
   137  			installationDisabled:       true,
   138  			dockerInstallationDisabled: true,
   139  			disconnectedInstallation:   true,
   140  			isInstalled:                false,
   141  			isAvailable:                false,
   142  			expected:                   true,
   143  		},
   144  	}
   145  
   146  	for i, test := range tests {
   147  		c := PackageCheck{
   148  			PackageQuery:               PackageQuery{test.packageName, "someVersion"},
   149  			PackageManager:             stubPkgManager{installed: test.isInstalled, available: test.isAvailable},
   150  			InstallationDisabled:       test.installationDisabled,
   151  			DockerInstallationDisabled: test.dockerInstallationDisabled,
   152  			DisconnectedInstallation:   test.disconnectedInstallation,
   153  		}
   154  		ok, err := c.Check()
   155  		if err != nil && !test.errExpected {
   156  			t.Errorf("test #%d - unexpected error occurred: %v", i, err)
   157  		}
   158  		if ok != test.expected {
   159  			t.Errorf("Test #%d - Expected %v, but got %v", i, test.expected, ok)
   160  		}
   161  	}
   162  }