// Code generated by mdatagen. DO NOT EDIT.

package metadata

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestResourceBuilder(t *testing.T) {
	for _, tt := range []string{"default", "all_set", "none_set"} {
		t.Run(tt, func(t *testing.T) {
			cfg := loadResourceAttributesConfig(t, tt)
			rb := NewResourceBuilder(cfg)
			rb.SetClusterID("cluster_id-val")
			rb.SetClusterName("cluster_name-val")
			rb.SetProjectID("project_id-val")
			rb.SetProjectName("project_name-val")
			rb.SetServicePlan("service_plan-val")

			res := rb.Emit()
			assert.Equal(t, 0, rb.Emit().Attributes().Len()) // Second call should return empty Resource

			switch tt {
			case "default":
				assert.Equal(t, 5, res.Attributes().Len())
			case "all_set":
				assert.Equal(t, 5, res.Attributes().Len())
			case "none_set":
				assert.Equal(t, 0, res.Attributes().Len())
				return
			default:
				assert.Failf(t, "unexpected test case: %s", tt)
			}

			val, ok := res.Attributes().Get("cluster_id")
			assert.True(t, ok)
			if ok {
				assert.EqualValues(t, "cluster_id-val", val.Str())
			}
			val, ok = res.Attributes().Get("cluster_name")
			assert.True(t, ok)
			if ok {
				assert.EqualValues(t, "cluster_name-val", val.Str())
			}
			val, ok = res.Attributes().Get("project_id")
			assert.True(t, ok)
			if ok {
				assert.EqualValues(t, "project_id-val", val.Str())
			}
			val, ok = res.Attributes().Get("project_name")
			assert.True(t, ok)
			if ok {
				assert.EqualValues(t, "project_name-val", val.Str())
			}
			val, ok = res.Attributes().Get("service_plan")
			assert.True(t, ok)
			if ok {
				assert.EqualValues(t, "service_plan-val", val.Str())
			}
		})
	}
}
