Skip to content

Consider replacing usage of built-in TestCheckFunc with state checks #222

@bendbennett

Description

@bendbennett

Many of the tests within terraform-provider-corner make use of TestCheckFunc built-in functions from terraform-plugin-testing for verifying values in state. For instance, TestCheckResourceAttr:

func TestAccResourceUser(t *testing.T) {
	resource.UnitTest(t, resource.TestCase{
		ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error){
			"tf5muxprovider": func() (tfprotov5.ProviderServer, error) {
				provider, err := New()

				return provider(), err
			},
		},
		Steps: []resource.TestStep{
			{
				Config: configResourceUserBasic,
				Check: resource.ComposeTestCheckFunc(
					resource.TestCheckResourceAttr("tf5muxprovider_user1.example", "age", "123"),
					/* ... */
				),
			},
		},
	})
}

Such tests could be updated to use the new style state checks that are now available, for example:

func TestAccResourceUser(t *testing.T) {
	resource.UnitTest(t, resource.TestCase{
		ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error){
			"tf5muxprovider": func() (tfprotov5.ProviderServer, error) {
				provider, err := New()

				return provider(), err
			},
		},
		Steps: []resource.TestStep{
			{
				Config: configResourceUserBasic,
				ConfigStateChecks: []statecheck.StateCheck{
					statecheck.ExpectKnownValue(
						"tf5muxprovider_user1.example",
						tfjsonpath.New("age"),
						knownvalue.Int64Exact(123),
					),
					/* ... */
				},
			},
		},
	})
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions