github.com/condensat/bank-core@v0.1.0/database/query/swap_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 "time" 11 12 "github.com/condensat/bank-core/database/model" 13 "github.com/condensat/bank-core/database/query/tests" 14 ) 15 16 func TestAddSwap(t *testing.T) { 17 const databaseName = "TestAddSwap" 18 t.Parallel() 19 20 db := tests.Setup(databaseName, SwapModel()) 21 defer tests.Teardown(db, databaseName) 22 23 type args struct { 24 swapType model.SwapType 25 cryptoAddressID model.CryptoAddressID 26 debitAsset model.AssetID 27 debitAmount model.Float 28 creditAsset model.AssetID 29 creditAmount model.Float 30 } 31 tests := []struct { 32 name string 33 args args 34 want model.Swap 35 wantErr bool 36 }{ 37 {"default", args{}, model.Swap{}, true}, 38 {"valid", args{model.SwapTypeAsk, 42, 101, 1.1, 102, 1.2}, createSwap(model.SwapTypeAsk, 42, 101, 1.1, 102, 1.2), false}, 39 } 40 for _, tt := range tests { 41 tt := tt // capture range variable 42 t.Run(tt.name, func(t *testing.T) { 43 got, err := AddSwap(db, tt.args.swapType, tt.args.cryptoAddressID, tt.args.debitAsset, tt.args.debitAmount, tt.args.creditAsset, tt.args.creditAmount) 44 if (err != nil) != tt.wantErr { 45 t.Errorf("AddSwap() error = %v, wantErr %v", err, tt.wantErr) 46 return 47 } 48 49 if !tt.wantErr { 50 if got.Timestamp.IsZero() || got.Timestamp.After(time.Now()) { 51 t.Errorf("AddSwap() wrong Timestamp %v", got.Timestamp) 52 } 53 if got.ValidUntil.IsZero() || got.Timestamp.After(got.ValidUntil) { 54 t.Errorf("AddSwap() wrong ValidUntil: %v %v", got.Timestamp, got.ValidUntil) 55 } 56 } 57 58 if !tt.wantErr { 59 tt.want.ID = got.ID 60 tt.want.Timestamp = got.Timestamp 61 tt.want.ValidUntil = got.ValidUntil 62 } 63 if !reflect.DeepEqual(got, tt.want) { 64 t.Errorf("AddSwap() = %v, want %v", got, tt.want) 65 } 66 }) 67 } 68 } 69 70 func TestGetSwap(t *testing.T) { 71 const databaseName = "TestGetSwap" 72 t.Parallel() 73 74 db := tests.Setup(databaseName, SwapModel()) 75 defer tests.Teardown(db, databaseName) 76 77 swapRef, _ := AddSwap(db, model.SwapTypeAsk, 42, 101, 1.1, 102, 1.2) 78 79 type args struct { 80 swapID model.SwapID 81 } 82 tests := []struct { 83 name string 84 args args 85 want model.Swap 86 wantErr bool 87 }{ 88 {"default", args{}, model.Swap{}, true}, 89 {"ref", args{swapRef.ID}, swapRef, false}, 90 } 91 for _, tt := range tests { 92 tt := tt // capture range variable 93 t.Run(tt.name, func(t *testing.T) { 94 got, err := GetSwap(db, tt.args.swapID) 95 if (err != nil) != tt.wantErr { 96 t.Errorf("GetSwap() error = %v, wantErr %v", err, tt.wantErr) 97 return 98 } 99 if !reflect.DeepEqual(got, tt.want) { 100 t.Errorf("GetSwap() = %v, want %v", got, tt.want) 101 } 102 }) 103 } 104 } 105 106 func createSwap(swapType model.SwapType, cryptoAddressID model.CryptoAddressID, debitAsset model.AssetID, debitAmount model.Float, creditAsset model.AssetID, creditAmount model.Float) model.Swap { 107 return model.Swap{ 108 Type: swapType, 109 CryptoAddressID: cryptoAddressID, 110 DebitAsset: debitAsset, 111 DebitAmount: debitAmount, 112 CreditAsset: creditAsset, 113 CreditAmount: creditAmount, 114 } 115 }