package model

import (
	"encoding/json"
	"testing"

	apiresource "github.com/pingcap/test-infra/common/model/resource"
)

func TestMarshalUnmarshalTestBed(t *testing.T) {
	runMarshalUnmarshalTests(t, marshalTest{
		TestBed{Items: []TestBedItem{
			{
				ResourceHandle: apiresource.ResourceHandle{
					Name: "tidb-1",
					Type: "TIDB_CLUSTER",
				},
				Spec: json.RawMessage(`{
        "tidb": {
          "replicas": 3,
          "image": "hub.pingcap.net/qa/tidb:master"
        },
        "tikv": {
          "repliacs": 3,
          "image": "hub.pingcap.net/qa/tikv:master",
          "config": "[storage]\nreserve-space = 0\n"
        },
        "pd": {
          "repliacs": 1,
          "image": "hub.pingcap.net/qa/tipd:master"
        }
      }`),
			},
			{
				ResourceHandle: apiresource.ResourceHandle{
					Name: "tidb-2",
					Type: "TIDB_CLUSTER",
				},
				Spec: json.RawMessage(`{
        "tidb": {
          "replicas": 3,
          "image": "hub.pingcap.net/qa/tidb:master"
        },
        "tikv": {
          "repliacs": 3,
          "image": "hub.pingcap.net/qa/tikv:master",
          "config": "[storage]\nreserve-space = 0\n"
        }
      }`),
			},
		}},
		`{
  "items": [
    {
      "name": "tidb-1",
      "type": "TIDB_CLUSTER",
      "spec": {
        "tidb": {
          "replicas": 3,
          "image": "hub.pingcap.net/qa/tidb:master"
        },
        "tikv": {
          "repliacs": 3,
          "image": "hub.pingcap.net/qa/tikv:master",
          "config": "[storage]\nreserve-space = 0\n"
        },
        "pd": {
          "repliacs": 1,
          "image": "hub.pingcap.net/qa/tipd:master"
        }
      }
    },
    {
      "name": "tidb-2",
      "type": "TIDB_CLUSTER",
      "spec": {
        "tidb": {
          "replicas": 3,
          "image": "hub.pingcap.net/qa/tidb:master"
        },
        "tikv": {
          "repliacs": 3,
          "image": "hub.pingcap.net/qa/tikv:master",
          "config": "[storage]\nreserve-space = 0\n"
        }
      }
    }
  ]
}`,
	})
}
