github.com/condensat/bank-core@v0.1.0/database/query/asseticon_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 TestAddOrUpdateAssetIcon(t *testing.T) {
    16  	const databaseName = "TestAddOrUpdateAssetIcon"
    17  	t.Parallel()
    18  
    19  	db := tests.Setup(databaseName, AssetModel())
    20  	defer tests.Teardown(db, databaseName)
    21  
    22  	assetNil := model.AssetIcon{
    23  		AssetID: 40,
    24  		Data:    nil,
    25  	}
    26  	assetZero := model.AssetIcon{
    27  		AssetID: 41,
    28  		Data:    []byte{},
    29  	}
    30  	assetRef := model.AssetIcon{
    31  		AssetID: 42,
    32  		Data:    []byte("I'm alive"),
    33  	}
    34  	assetBig := model.AssetIcon{
    35  		AssetID: 1337,
    36  		Data:    make([]byte, MaxAssetIconDataLen),
    37  	}
    38  	assetTooBig := model.AssetIcon{
    39  		AssetID: 1338,
    40  		Data:    make([]byte, MaxAssetIconDataLen+1),
    41  	}
    42  
    43  	type args struct {
    44  		entry model.AssetIcon
    45  	}
    46  	tests := []struct {
    47  		name    string
    48  		args    args
    49  		want    model.AssetIcon
    50  		wantErr bool
    51  	}{
    52  		{"default", args{}, model.AssetIcon{}, true},
    53  
    54  		{"invalidNil", args{assetNil}, model.AssetIcon{}, true},
    55  		{"invalidZero", args{assetZero}, model.AssetIcon{}, true},
    56  		{"invalidTooBig", args{assetTooBig}, model.AssetIcon{}, true},
    57  
    58  		{"valid", args{assetRef}, assetRef, false},
    59  		{"validBig", args{assetBig}, assetBig, false},
    60  	}
    61  	for _, tt := range tests {
    62  		tt := tt // capture range variable
    63  		t.Run(tt.name, func(t *testing.T) {
    64  			got, err := AddOrUpdateAssetIcon(db, tt.args.entry)
    65  			if (err != nil) != tt.wantErr {
    66  				t.Errorf("AddOrUpdateAssetIcon() error = %v, wantErr %v", err, tt.wantErr)
    67  				return
    68  			}
    69  
    70  			if !tt.wantErr {
    71  				if got.LastUpdate.IsZero() {
    72  					t.Errorf("Invalid LastUpdate timestamp. %v", assetRef.LastUpdate)
    73  				}
    74  				// reset timestamp for DeepEqual
    75  				got.LastUpdate = assetRef.LastUpdate
    76  			}
    77  
    78  			if !reflect.DeepEqual(got, tt.want) {
    79  				t.Errorf("AddOrUpdateAssetIcon() = %v, want %v", got, tt.want)
    80  			}
    81  		})
    82  	}
    83  }
    84  
    85  func TestGetAssetIcon(t *testing.T) {
    86  	const databaseName = "TestGetAssetIcon"
    87  	t.Parallel()
    88  
    89  	db := tests.Setup(databaseName, AssetModel())
    90  	defer tests.Teardown(db, databaseName)
    91  
    92  	assetRef, _ := AddOrUpdateAssetIcon(db, model.AssetIcon{
    93  		AssetID: 42,
    94  		Data:    []byte("I'm alive"),
    95  	})
    96  
    97  	type args struct {
    98  		assetID model.AssetID
    99  	}
   100  	tests := []struct {
   101  		name    string
   102  		args    args
   103  		want    model.AssetIcon
   104  		wantErr bool
   105  	}{
   106  		{"default", args{}, model.AssetIcon{}, true},
   107  		{"notExists", args{1337}, model.AssetIcon{}, true},
   108  
   109  		{"valid", args{assetRef.AssetID}, assetRef, false},
   110  	}
   111  	for _, tt := range tests {
   112  		tt := tt // capture range variable
   113  		t.Run(tt.name, func(t *testing.T) {
   114  			got, err := GetAssetIcon(db, tt.args.assetID)
   115  			if (err != nil) != tt.wantErr {
   116  				t.Errorf("GetAssetIcon() error = %v, wantErr %v", err, tt.wantErr)
   117  				return
   118  			}
   119  			if !reflect.DeepEqual(got, tt.want) {
   120  				t.Errorf("GetAssetIcon() = %v, want %v", got, tt.want)
   121  			}
   122  		})
   123  	}
   124  }