github.com/iaas-resource-provision/iaas-rpc@v1.0.7-0.20211021023331-ed21f798c408/internal/plans/plan_test.go (about)

     1  package plans
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/go-test/deep"
     7  
     8  	"github.com/iaas-resource-provision/iaas-rpc/internal/addrs"
     9  )
    10  
    11  func TestProviderAddrs(t *testing.T) {
    12  
    13  	plan := &Plan{
    14  		VariableValues: map[string]DynamicValue{},
    15  		Changes: &Changes{
    16  			Resources: []*ResourceInstanceChangeSrc{
    17  				{
    18  					Addr: addrs.Resource{
    19  						Mode: addrs.ManagedResourceMode,
    20  						Type: "test_thing",
    21  						Name: "woot",
    22  					}.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance),
    23  					ProviderAddr: addrs.AbsProviderConfig{
    24  						Module:   addrs.RootModule,
    25  						Provider: addrs.NewDefaultProvider("test"),
    26  					},
    27  				},
    28  				{
    29  					Addr: addrs.Resource{
    30  						Mode: addrs.ManagedResourceMode,
    31  						Type: "test_thing",
    32  						Name: "woot",
    33  					}.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance),
    34  					DeposedKey: "foodface",
    35  					ProviderAddr: addrs.AbsProviderConfig{
    36  						Module:   addrs.RootModule,
    37  						Provider: addrs.NewDefaultProvider("test"),
    38  					},
    39  				},
    40  				{
    41  					Addr: addrs.Resource{
    42  						Mode: addrs.ManagedResourceMode,
    43  						Type: "test_thing",
    44  						Name: "what",
    45  					}.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance),
    46  					ProviderAddr: addrs.AbsProviderConfig{
    47  						Module:   addrs.RootModule.Child("foo"),
    48  						Provider: addrs.NewDefaultProvider("test"),
    49  					},
    50  				},
    51  			},
    52  		},
    53  	}
    54  
    55  	got := plan.ProviderAddrs()
    56  	want := []addrs.AbsProviderConfig{
    57  		addrs.AbsProviderConfig{
    58  			Module:   addrs.RootModule.Child("foo"),
    59  			Provider: addrs.NewDefaultProvider("test"),
    60  		},
    61  		addrs.AbsProviderConfig{
    62  			Module:   addrs.RootModule,
    63  			Provider: addrs.NewDefaultProvider("test"),
    64  		},
    65  	}
    66  
    67  	for _, problem := range deep.Equal(got, want) {
    68  		t.Error(problem)
    69  	}
    70  }
    71  
    72  // Module outputs should not effect the result of Empty
    73  func TestModuleOutputChangesEmpty(t *testing.T) {
    74  	changes := &Changes{
    75  		Outputs: []*OutputChangeSrc{
    76  			{
    77  				Addr: addrs.AbsOutputValue{
    78  					Module: addrs.RootModuleInstance.Child("child", addrs.NoKey),
    79  					OutputValue: addrs.OutputValue{
    80  						Name: "output",
    81  					},
    82  				},
    83  				ChangeSrc: ChangeSrc{
    84  					Action: Update,
    85  					Before: []byte("a"),
    86  					After:  []byte("b"),
    87  				},
    88  			},
    89  		},
    90  	}
    91  
    92  	if !changes.Empty() {
    93  		t.Fatal("plan has no visible changes")
    94  	}
    95  }