github.com/condensat/bank-core@v0.1.0/database/query/assetinfo_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 TestAddOrUpdateAssetInfo(t *testing.T) { 16 const databaseName = "TestAddOrUpdateAssetInfo" 17 t.Parallel() 18 19 db := tests.Setup(databaseName, AssetModel()) 20 defer tests.Teardown(db, databaseName) 21 22 assetInvalid := model.AssetInfo{ 23 AssetID: 0, 24 Domain: "foo.bar", 25 Name: "Foo Bar", 26 Ticker: "FBAR", 27 Precision: 8, 28 } 29 30 assetRef := model.AssetInfo{ 31 AssetID: 42, 32 Domain: "foo.bar", 33 Name: "Foo Bar", 34 Ticker: "FBAR", 35 Precision: 8, 36 } 37 38 type args struct { 39 entry model.AssetInfo 40 } 41 tests := []struct { 42 name string 43 args args 44 want model.AssetInfo 45 wantErr bool 46 }{ 47 {"default", args{}, model.AssetInfo{}, true}, 48 {"invalid", args{assetInvalid}, model.AssetInfo{}, true}, 49 50 {"valid", args{assetRef}, assetRef, false}, 51 } 52 for _, tt := range tests { 53 tt := tt // capture range variable 54 t.Run(tt.name, func(t *testing.T) { 55 56 if !tt.wantErr && !tt.want.Valid() { 57 t.Error("Invalid want") 58 } 59 got, err := AddOrUpdateAssetInfo(db, tt.args.entry) 60 if (err != nil) != tt.wantErr { 61 t.Errorf("AddOrUpdateAssetInfo() error = %v, wantErr %v", err, tt.wantErr) 62 return 63 } 64 65 if !tt.wantErr { 66 if got.LastUpdate.IsZero() { 67 t.Errorf("Invalid LastUpdate timestamp. %v", assetRef.LastUpdate) 68 } 69 // reset timestamp for DeepEqual 70 got.LastUpdate = assetRef.LastUpdate 71 } 72 73 if !reflect.DeepEqual(got, tt.want) { 74 t.Errorf("AddOrUpdateAssetInfo() = %v, want %v", got, tt.want) 75 } 76 }) 77 } 78 } 79 80 func TestGetAssetInfo(t *testing.T) { 81 const databaseName = "TestGetAssetInfo" 82 t.Parallel() 83 84 db := tests.Setup(databaseName, AssetModel()) 85 defer tests.Teardown(db, databaseName) 86 87 assetRef, _ := AddOrUpdateAssetInfo(db, model.AssetInfo{ 88 AssetID: 42, 89 Domain: "foo.bar", 90 Name: "Foo Bar", 91 Ticker: "FBAR", 92 Precision: 8, 93 }) 94 95 type args struct { 96 assetID model.AssetID 97 } 98 tests := []struct { 99 name string 100 args args 101 want model.AssetInfo 102 wantErr bool 103 }{ 104 {"default", args{}, model.AssetInfo{}, true}, 105 {"notExists", args{1337}, model.AssetInfo{}, true}, 106 107 {"valid", args{assetRef.AssetID}, assetRef, false}, 108 } 109 for _, tt := range tests { 110 tt := tt // capture range variable 111 t.Run(tt.name, func(t *testing.T) { 112 got, err := GetAssetInfo(db, tt.args.assetID) 113 if (err != nil) != tt.wantErr { 114 t.Errorf("GetAssetInfo() error = %v, wantErr %v", err, tt.wantErr) 115 return 116 } 117 if !reflect.DeepEqual(got, tt.want) { 118 t.Errorf("GetAssetInfo() = %v, want %v", got, tt.want) 119 } 120 }) 121 } 122 }