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 }