github.com/condensat/bank-core@v0.1.0/database/query/feeinfo_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 TestAddOrUpdateFeeInfo(t *testing.T) {
    16  	const databaseName = "TestAddOrUpdateFeeInfo"
    17  	t.Parallel()
    18  
    19  	db := tests.Setup(databaseName, FeeModel())
    20  	defer tests.Teardown(db, databaseName)
    21  
    22  	ref := model.FeeInfo{
    23  		Currency: "CURR",
    24  		Minimum:  1.0,
    25  		Rate:     model.DefaultFeeRate,
    26  	}
    27  
    28  	type args struct {
    29  		feeInfo model.FeeInfo
    30  	}
    31  	tests := []struct {
    32  		name    string
    33  		args    args
    34  		want    model.FeeInfo
    35  		wantErr bool
    36  	}{
    37  		{"default", args{}, model.FeeInfo{}, true},
    38  		{"valid", args{ref}, ref, 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 := AddOrUpdateFeeInfo(db, tt.args.feeInfo)
    44  			if (err != nil) != tt.wantErr {
    45  				t.Errorf("AddOrUpdateFeeInfo() error = %v, wantErr %v", err, tt.wantErr)
    46  				return
    47  			}
    48  			if !reflect.DeepEqual(got, tt.want) {
    49  				t.Errorf("AddOrUpdateFeeInfo() = %v, want %v", got, tt.want)
    50  			}
    51  		})
    52  	}
    53  }
    54  
    55  func TestFeeInfoExists(t *testing.T) {
    56  	const databaseName = "TestFeeInfoExists"
    57  	t.Parallel()
    58  
    59  	db := tests.Setup(databaseName, FeeModel())
    60  	defer tests.Teardown(db, databaseName)
    61  
    62  	ref := model.FeeInfo{
    63  		Currency: "CURR",
    64  		Minimum:  1.0,
    65  		Rate:     model.DefaultFeeRate,
    66  	}
    67  
    68  	_, _ = AddOrUpdateFeeInfo(db, ref)
    69  
    70  	type args struct {
    71  		currency model.CurrencyName
    72  	}
    73  	tests := []struct {
    74  		name string
    75  		args args
    76  		want bool
    77  	}{
    78  		{"default", args{}, false},
    79  		{"notfound", args{"NEW_CURR"}, false},
    80  
    81  		{"found", args{ref.Currency}, true},
    82  	}
    83  	for _, tt := range tests {
    84  		tt := tt // capture range variable
    85  		t.Run(tt.name, func(t *testing.T) {
    86  			if got := FeeInfoExists(db, tt.args.currency); got != tt.want {
    87  				t.Errorf("FeeInfoExists() = %v, want %v", got, tt.want)
    88  			}
    89  		})
    90  	}
    91  }
    92  
    93  func TestGetFeeInfo(t *testing.T) {
    94  	const databaseName = "TestGetFeeInfo"
    95  	t.Parallel()
    96  
    97  	db := tests.Setup(databaseName, FeeModel())
    98  	defer tests.Teardown(db, databaseName)
    99  
   100  	ref := model.FeeInfo{
   101  		Currency: "CURR",
   102  		Minimum:  1.0,
   103  		Rate:     model.DefaultFeeRate,
   104  	}
   105  
   106  	_, _ = AddOrUpdateFeeInfo(db, ref)
   107  
   108  	type args struct {
   109  		currency model.CurrencyName
   110  	}
   111  	tests := []struct {
   112  		name    string
   113  		args    args
   114  		want    model.FeeInfo
   115  		wantErr bool
   116  	}{
   117  		{"default", args{}, model.FeeInfo{}, true},
   118  		{"notfound", args{"NEW_CURR"}, model.FeeInfo{}, true},
   119  
   120  		{"found", args{ref.Currency}, ref, false},
   121  	}
   122  	for _, tt := range tests {
   123  		tt := tt // capture range variable
   124  		t.Run(tt.name, func(t *testing.T) {
   125  			got, err := GetFeeInfo(db, tt.args.currency)
   126  			if (err != nil) != tt.wantErr {
   127  				t.Errorf("GetFeeInfo() error = %v, wantErr %v", err, tt.wantErr)
   128  				return
   129  			}
   130  			if !reflect.DeepEqual(got, tt.want) {
   131  				t.Errorf("GetFeeInfo() = %v, want %v", got, tt.want)
   132  			}
   133  		})
   134  	}
   135  }