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  }