github.com/safing/portbase@v0.19.5/database/record/wrapper_test.go (about) 1 package record 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/safing/portbase/formats/dsd" 8 ) 9 10 func TestWrapper(t *testing.T) { 11 t.Parallel() 12 13 // check model interface compliance 14 var m Record 15 w := &Wrapper{} 16 m = w 17 _ = m 18 19 // create test data 20 testData := []byte(`{"a": "b"}`) 21 encodedTestData := []byte(`J{"a": "b"}`) 22 23 // test wrapper 24 wrapper, err := NewWrapper("test:a", &Meta{}, dsd.JSON, testData) 25 if err != nil { 26 t.Fatal(err) 27 } 28 if wrapper.Format != dsd.JSON { 29 t.Error("format mismatch") 30 } 31 if !bytes.Equal(testData, wrapper.Data) { 32 t.Error("data mismatch") 33 } 34 35 encoded, err := wrapper.Marshal(wrapper, dsd.JSON) 36 if err != nil { 37 t.Fatal(err) 38 } 39 if !bytes.Equal(encodedTestData, encoded) { 40 t.Error("marshal mismatch") 41 } 42 43 wrapper.SetMeta(&Meta{}) 44 wrapper.meta.Update() 45 raw, err := wrapper.MarshalRecord(wrapper) 46 if err != nil { 47 t.Fatal(err) 48 } 49 50 wrapper2, err := NewRawWrapper("test", "a", raw) 51 if err != nil { 52 t.Fatal(err) 53 } 54 if !bytes.Equal(testData, wrapper2.Data) { 55 t.Error("marshal mismatch") 56 } 57 }