github.com/tilt-dev/tilt@v0.36.0/internal/store/json_test.go (about) 1 package store 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 "github.com/tilt-dev/tilt/internal/k8s/testyaml" 12 "github.com/tilt-dev/tilt/internal/store/k8sconv" 13 "github.com/tilt-dev/tilt/internal/testutils/manifestbuilder" 14 "github.com/tilt-dev/tilt/internal/testutils/tempdir" 15 "github.com/tilt-dev/tilt/pkg/model" 16 ) 17 18 func TestToJSON(t *testing.T) { 19 f := tempdir.NewTempDirFixture(t) 20 21 m := manifestbuilder.New(f, "fe"). 22 WithK8sYAML(testyaml.SanchoYAML). 23 Build() 24 state := newState([]model.Manifest{m}) 25 26 mState, _ := state.ManifestState("fe") 27 bs, ok := mState.BuildStatus(m.K8sTarget().ID()) 28 require.True(t, ok) 29 bs.LastResult = NewK8sDeployResult( 30 m.K8sTarget().ID(), &k8sconv.KubernetesApplyFilter{}) 31 32 buf := bytes.NewBuffer(nil) 33 encoder := CreateEngineStateEncoder(buf) 34 err := encoder.Encode(state) 35 if err != nil { 36 t.Fatal(err) 37 } 38 39 assert.Contains(t, buf.String(), "yaml") 40 assert.Contains(t, buf.String(), "kind: Deployment") 41 42 // Make sure the data can decode successfully. 43 decoder := json.NewDecoder(bytes.NewBufferString(buf.String())) 44 var v interface{} 45 err = decoder.Decode(&v) 46 if err != nil { 47 t.Fatalf("Error decoding JSON: %v\nSource:\n%s\n", err, buf.String()) 48 } 49 }