package cluster

import (
	"io"
	"os"
	"testing"

	"github.com/onsi/gomega"
)

func TestUnmarshalJSONInt(t *testing.T) {
	g := gomega.NewWithT(t)
	f, err := os.Open("testdata/cluster.json")
	g.Expect(err).To(gomega.Succeed())
	data, err := io.ReadAll(f)
	g.Expect(err).To(gomega.Succeed())

	ci, err := UnmarshalJSON(data)
	g.Expect(err).To(gomega.Succeed())
	g.Expect(ci.ClusterID).To(gomega.Equal("6860009869741753344"))
}

func TestUnmarshalJSONStr(t *testing.T) {
	g := gomega.NewWithT(t)
	f, err := os.Open("testdata/cluster2.json")
	g.Expect(err).To(gomega.Succeed())
	data, err := io.ReadAll(f)
	g.Expect(err).To(gomega.Succeed())

	ci, err := UnmarshalJSON(data)
	g.Expect(err).To(gomega.Succeed())
	g.Expect(ci.ClusterID).To(gomega.Equal("6924974196193154048"))
}

func TestUnmarshalJSON0(t *testing.T) {
	g := gomega.NewWithT(t)
	f, err := os.Open("testdata/cluster0.json")
	g.Expect(err).To(gomega.Succeed())
	data, err := io.ReadAll(f)
	g.Expect(err).To(gomega.Succeed())

	ci, err := UnmarshalJSON(data)
	g.Expect(err).To(gomega.Succeed())
	g.Expect(ci.ClusterID).To(gomega.Equal(""))
}

func TestUnmarshalJSON6(t *testing.T) {
	g := gomega.NewWithT(t)
	f, err := os.Open("testdata/cluster6.json")
	g.Expect(err).To(gomega.Succeed())
	data, err := io.ReadAll(f)
	g.Expect(err).To(gomega.Succeed())

	ci, err := UnmarshalJSON(data)
	g.Expect(err).To(gomega.Succeed())
	g.Expect(GetClusterVersion(ci)).To(gomega.Equal("v6.0.0"))
}

func TestUnmarshalJSON01(t *testing.T) {
	g := gomega.NewWithT(t)
	f, err := os.Open("testdata/cluster0-1.json")
	g.Expect(err).To(gomega.Succeed())
	data, err := io.ReadAll(f)
	g.Expect(err).To(gomega.Succeed())

	ci, err := UnmarshalJSON(data)
	g.Expect(err).To(gomega.Succeed())
	g.Expect(ci.ClusterID).To(gomega.Equal(""))
}
