github.com/status-im/status-go@v1.1.0/multiaccounts/settings/sync_protobuf_factories_test.go (about) 1 package settings 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/golang/protobuf/proto" 8 "github.com/stretchr/testify/require" 9 10 "github.com/status-im/status-go/protocol/protobuf" 11 ) 12 13 type testCriteria struct { 14 Name string 15 Input inputCriteria 16 Expected expectedCriteria 17 } 18 19 type inputCriteria struct { 20 Value interface{} 21 Clock uint64 22 } 23 24 type expectedCriteria struct { 25 Value int64 26 Clock uint64 27 AMT protobuf.ApplicationMetadataMessage_Type 28 } 29 30 func TestProfilePicturesVisibilityProtobufFactory(t *testing.T) { 31 var v interface{} 32 err := json.Unmarshal([]byte(`3`), &v) 33 require.NoError(t, err) 34 35 expected := expectedCriteria{3, 123, protobuf.ApplicationMetadataMessage_SYNC_SETTING} 36 37 cs := []testCriteria{ 38 {"json.Unmarshal int into interface{}", inputCriteria{Value: v, Clock: 123}, expected}, 39 {"ProfilePicturesVisibilityType", inputCriteria{Value: ProfilePicturesVisibilityNone, Clock: 123}, expected}, 40 {"int64", inputCriteria{Value: int64(3), Clock: 123}, expected}, 41 } 42 43 for _, c := range cs { 44 a := require.New(t) 45 46 rm, _, err := profilePicturesVisibilityProtobufFactory(c.Input.Value, c.Input.Clock, "0x123def") 47 a.NoError(err, c.Name) 48 49 ppvp := new(protobuf.SyncSetting) 50 err = proto.Unmarshal(rm.Payload, ppvp) 51 a.NoError(err, c.Name) 52 53 a.Equal(protobuf.SyncSetting_PROFILE_PICTURES_VISIBILITY, ppvp.Type, c.Name) 54 a.Equal(c.Expected.Value, ppvp.GetValueInt64(), c.Name) 55 a.Equal(c.Expected.Clock, ppvp.Clock, c.Name) 56 a.Equal(c.Expected.AMT, rm.MessageType, c.Name) 57 } 58 }