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  }