github.com/condensat/bank-core@v0.1.0/database/query/batchwithdraw_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 TestAddWithdrawToBatch(t *testing.T) { 16 const databaseName = "TestAddWithdrawToBatch" 17 t.Parallel() 18 19 db := tests.Setup(databaseName, WithdrawModel()) 20 defer tests.Teardown(db, databaseName) 21 22 batch, _ := AddBatch(db, model.BatchNetworkBitcoin, "{}") 23 data := createTestAccountStateData(db) 24 a1 := data.Accounts[0] 25 a2 := data.Accounts[2] 26 27 w1, _ := AddWithdraw(db, a1.ID, a2.ID, 0.1, model.BatchModeNormal, "{}") 28 w2, _ := AddWithdraw(db, a1.ID, a2.ID, 0.1, model.BatchModeNormal, "{}") 29 w3, _ := AddWithdraw(db, a1.ID, a2.ID, 0.1, model.BatchModeNormal, "{}") 30 w4, _ := AddWithdraw(db, a1.ID, a2.ID, 0.1, model.BatchModeNormal, "{}") 31 32 type args struct { 33 batchID model.BatchID 34 withdraws []model.WithdrawID 35 } 36 tests := []struct { 37 name string 38 args args 39 wantErr bool 40 }{ 41 {"default", args{}, true}, 42 {"ref", args{batch.ID, createWithdrawIDList(w1.ID, w2.ID, w3.ID, w4.ID)}, false}, 43 } 44 for _, tt := range tests { 45 tt := tt // capture range variable 46 t.Run(tt.name, func(t *testing.T) { 47 if err := AddWithdrawToBatch(db, tt.args.batchID, tt.args.withdraws...); (err != nil) != tt.wantErr { 48 t.Errorf("AddWithdrawToBatch() error = %v, wantErr %v", err, tt.wantErr) 49 } 50 }) 51 } 52 } 53 54 func TestGetBatchWithdraws(t *testing.T) { 55 const databaseName = "TestGetBatchWithdraws" 56 t.Parallel() 57 58 db := tests.Setup(databaseName, WithdrawModel()) 59 defer tests.Teardown(db, databaseName) 60 61 batch, _ := AddBatch(db, model.BatchNetworkBitcoin, "{}") 62 63 data := createTestAccountStateData(db) 64 a1 := data.Accounts[0] 65 a2 := data.Accounts[2] 66 67 w1, _ := AddWithdraw(db, a1.ID, a2.ID, 0.1, model.BatchModeNormal, "{}") 68 w2, _ := AddWithdraw(db, a1.ID, a2.ID, 0.1, model.BatchModeNormal, "{}") 69 w3, _ := AddWithdraw(db, a1.ID, a2.ID, 0.1, model.BatchModeNormal, "{}") 70 w4, _ := AddWithdraw(db, a1.ID, a2.ID, 0.1, model.BatchModeNormal, "{}") 71 72 withdraws := createWithdrawIDList(w1.ID, w2.ID, w3.ID, w4.ID) 73 74 _ = AddWithdrawToBatch(db, batch.ID, withdraws...) 75 76 type args struct { 77 batchID model.BatchID 78 } 79 tests := []struct { 80 name string 81 args args 82 want []model.WithdrawID 83 wantErr bool 84 }{ 85 {"default", args{}, nil, true}, 86 {"ref", args{batch.ID}, withdraws, false}, 87 } 88 for _, tt := range tests { 89 tt := tt // capture range variable 90 t.Run(tt.name, func(t *testing.T) { 91 got, err := GetBatchWithdraws(db, tt.args.batchID) 92 if (err != nil) != tt.wantErr { 93 t.Errorf("GetBatchWithdraws() error = %v, wantErr %v", err, tt.wantErr) 94 return 95 } 96 if !reflect.DeepEqual(got, tt.want) { 97 t.Errorf("GetBatchWithdraws() = %v, want %v", got, tt.want) 98 } 99 }) 100 } 101 } 102 103 func createWithdrawIDList(withdraws ...model.WithdrawID) []model.WithdrawID { 104 return append([]model.WithdrawID{}, withdraws...) 105 }