|
@@ -0,0 +1,89 @@
|
|
|
|
+package provider
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "testing"
|
|
|
|
+
|
|
|
|
+ "github.com/hashicorp/terraform-plugin-testing/helper/resource"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+// Resource acceptance testing verifies that the entire resource lifecycle,
|
|
|
|
+// such as the Create, Read, Update, and Delete functionality, along with import capabilities.
|
|
|
|
+//
|
|
|
|
+// The testing framework automatically handles destroying test resources
|
|
|
|
+// and returning any errors as a final step,
|
|
|
|
+// regardless of whether there is a destroy step explicitly written.
|
|
|
|
+func TestAccOrderResource(t *testing.T) {
|
|
|
|
+ resource.Test(t, resource.TestCase{
|
|
|
|
+ ProtoV6ProviderFactories: testAccProtoV6ProviderFactories,
|
|
|
|
+ Steps: []resource.TestStep{
|
|
|
|
+ // Create and Read testing
|
|
|
|
+ {
|
|
|
|
+ Config: providerConfig + `
|
|
|
|
+resource "hashicups_order" "test" {
|
|
|
|
+ items = [
|
|
|
|
+ {
|
|
|
|
+ coffee = {
|
|
|
|
+ id = 1
|
|
|
|
+ }
|
|
|
|
+ quantity = 2
|
|
|
|
+ },
|
|
|
|
+ ]
|
|
|
|
+}
|
|
|
|
+`,
|
|
|
|
+ Check: resource.ComposeAggregateTestCheckFunc(
|
|
|
|
+ // Verify number of items.
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.#", "1"),
|
|
|
|
+ // Verify first order item.
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.quantity", "2"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.id", "1"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.description", ""),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.image", "/hashicorp.png"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.name", "HCP Aeropress"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.price", "200"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.teaser", "Automation in a cup"),
|
|
|
|
+ // Verify dynamic values have any value set in the state.
|
|
|
|
+ resource.TestCheckResourceAttrSet("hashicups_order.test", "id"),
|
|
|
|
+ resource.TestCheckResourceAttrSet("hashicups_order.test", "last_updated"),
|
|
|
|
+ ),
|
|
|
|
+ },
|
|
|
|
+ // ImportState testing.
|
|
|
|
+ {
|
|
|
|
+ // No Config
|
|
|
|
+ ResourceName: "hashicups_order.test",
|
|
|
|
+ ImportState: true,
|
|
|
|
+ ImportStateVerify: true,
|
|
|
|
+ // The last_updated attribute does not exist in the HashiCups
|
|
|
|
+ // API, therefore there is no value for it during import.
|
|
|
|
+ ImportStateVerifyIgnore: []string{"last_updated"},
|
|
|
|
+ },
|
|
|
|
+ // Update and Read testing.
|
|
|
|
+ {
|
|
|
|
+ Config: providerConfig + `
|
|
|
|
+resource "hashicups_order" "test" {
|
|
|
|
+ items = [
|
|
|
|
+ {
|
|
|
|
+ coffee = {
|
|
|
|
+ id = 2
|
|
|
|
+ }
|
|
|
|
+ quantity = 2
|
|
|
|
+ },
|
|
|
|
+ ]
|
|
|
|
+}
|
|
|
|
+`,
|
|
|
|
+ Check: resource.ComposeAggregateTestCheckFunc(
|
|
|
|
+ // Verify first order item updated (reuse previous state since this is the same test).
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.#", "1"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.quantity", "2"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.id", "2"),
|
|
|
|
+ // Verify first coffee item has Computed attributes updated.
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.description", ""),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.image", "/packer.png"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.name", "Packer Spiced Latte"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.price", "350"),
|
|
|
|
+ resource.TestCheckResourceAttr("hashicups_order.test", "items.0.coffee.teaser", "Packed with goodness to spice up your images"),
|
|
|
|
+ ),
|
|
|
|
+ // Delete testing automatically occurs in TestCase.
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ })
|
|
|
|
+}
|