github.com/condensat/bank-core@v0.1.0/database/query/asseticon_test.go (about) 1 // Copyright 2020 Condensat Tech. All rights reserved. 2 // Use of this source code is governed by a MIT 3 // license that can be found in the LICENSE file. 4 5 package query 6 7 import ( 8 "reflect" 9 "testing" 10 11 "github.com/condensat/bank-core/database/model" 12 "github.com/condensat/bank-core/database/query/tests" 13 ) 14 15 func TestAddOrUpdateAssetIcon(t *testing.T) { 16 const databaseName = "TestAddOrUpdateAssetIcon" 17 t.Parallel() 18 19 db := tests.Setup(databaseName, AssetModel()) 20 defer tests.Teardown(db, databaseName) 21 22 assetNil := model.AssetIcon{ 23 AssetID: 40, 24 Data: nil, 25 } 26 assetZero := model.AssetIcon{ 27 AssetID: 41, 28 Data: []byte{}, 29 } 30 assetRef := model.AssetIcon{ 31 AssetID: 42, 32 Data: []byte("I'm alive"), 33 } 34 assetBig := model.AssetIcon{ 35 AssetID: 1337, 36 Data: make([]byte, MaxAssetIconDataLen), 37 } 38 assetTooBig := model.AssetIcon{ 39 AssetID: 1338, 40 Data: make([]byte, MaxAssetIconDataLen+1), 41 } 42 43 type args struct { 44 entry model.AssetIcon 45 } 46 tests := []struct { 47 name string 48 args args 49 want model.AssetIcon 50 wantErr bool 51 }{ 52 {"default", args{}, model.AssetIcon{}, true}, 53 54 {"invalidNil", args{assetNil}, model.AssetIcon{}, true}, 55 {"invalidZero", args{assetZero}, model.AssetIcon{}, true}, 56 {"invalidTooBig", args{assetTooBig}, model.AssetIcon{}, true}, 57 58 {"valid", args{assetRef}, assetRef, false}, 59 {"validBig", args{assetBig}, assetBig, false}, 60 } 61 for _, tt := range tests { 62 tt := tt // capture range variable 63 t.Run(tt.name, func(t *testing.T) { 64 got, err := AddOrUpdateAssetIcon(db, tt.args.entry) 65 if (err != nil) != tt.wantErr { 66 t.Errorf("AddOrUpdateAssetIcon() error = %v, wantErr %v", err, tt.wantErr) 67 return 68 } 69 70 if !tt.wantErr { 71 if got.LastUpdate.IsZero() { 72 t.Errorf("Invalid LastUpdate timestamp. %v", assetRef.LastUpdate) 73 } 74 // reset timestamp for DeepEqual 75 got.LastUpdate = assetRef.LastUpdate 76 } 77 78 if !reflect.DeepEqual(got, tt.want) { 79 t.Errorf("AddOrUpdateAssetIcon() = %v, want %v", got, tt.want) 80 } 81 }) 82 } 83 } 84 85 func TestGetAssetIcon(t *testing.T) { 86 const databaseName = "TestGetAssetIcon" 87 t.Parallel() 88 89 db := tests.Setup(databaseName, AssetModel()) 90 defer tests.Teardown(db, databaseName) 91 92 assetRef, _ := AddOrUpdateAssetIcon(db, model.AssetIcon{ 93 AssetID: 42, 94 Data: []byte("I'm alive"), 95 }) 96 97 type args struct { 98 assetID model.AssetID 99 } 100 tests := []struct { 101 name string 102 args args 103 want model.AssetIcon 104 wantErr bool 105 }{ 106 {"default", args{}, model.AssetIcon{}, true}, 107 {"notExists", args{1337}, model.AssetIcon{}, true}, 108 109 {"valid", args{assetRef.AssetID}, assetRef, false}, 110 } 111 for _, tt := range tests { 112 tt := tt // capture range variable 113 t.Run(tt.name, func(t *testing.T) { 114 got, err := GetAssetIcon(db, tt.args.assetID) 115 if (err != nil) != tt.wantErr { 116 t.Errorf("GetAssetIcon() error = %v, wantErr %v", err, tt.wantErr) 117 return 118 } 119 if !reflect.DeepEqual(got, tt.want) { 120 t.Errorf("GetAssetIcon() = %v, want %v", got, tt.want) 121 } 122 }) 123 } 124 }