github.com/condensat/bank-core@v0.1.0/database/model/withdrawtarget_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 model
     6  
     7  import (
     8  	"reflect"
     9  	"testing"
    10  )
    11  
    12  func TestFromSepaData(t *testing.T) {
    13  	t.Parallel()
    14  
    15  	ref := WithdrawTargetSepaData{
    16  		WithdrawTargetFiatData: WithdrawTargetFiatData{Network: "sepa"},
    17  
    18  		BIC:  "BIC",
    19  		IBAN: "IBAN",
    20  	}
    21  	type args struct {
    22  		withdrawID WithdrawID
    23  		data       WithdrawTargetSepaData
    24  	}
    25  	tests := []struct {
    26  		name string
    27  		args args
    28  		want WithdrawTargetSepaData
    29  	}{
    30  		{"default", args{}, WithdrawTargetSepaData{}},
    31  		{"valid", args{42, ref}, ref},
    32  	}
    33  	for _, tt := range tests {
    34  		tt := tt // capture range variable
    35  		t.Run(tt.name, func(t *testing.T) {
    36  			got := FromSepaData(tt.args.withdrawID, tt.args.data)
    37  
    38  			data, _ := got.SepaData()
    39  			if !reflect.DeepEqual(data, tt.want) {
    40  				t.Errorf("FromSepaData() = %v, want %v", data, tt.want)
    41  			}
    42  		})
    43  	}
    44  }
    45  
    46  func TestWithdrawTarget_SepaData(t *testing.T) {
    47  	t.Parallel()
    48  
    49  	type fields struct {
    50  		ID         WithdrawTargetID
    51  		WithdrawID WithdrawID
    52  		Type       WithdrawTargetType
    53  		Data       WithdrawTargetData
    54  	}
    55  	tests := []struct {
    56  		name    string
    57  		fields  fields
    58  		want    WithdrawTargetSepaData
    59  		wantErr bool
    60  	}{
    61  		{"default", fields{}, WithdrawTargetSepaData{}, true},
    62  		{"type", fields{Type: WithdrawTargetSepa}, WithdrawTargetSepaData{}, false},
    63  	}
    64  	for _, tt := range tests {
    65  		tt := tt // capture range variable
    66  		t.Run(tt.name, func(t *testing.T) {
    67  			p := &WithdrawTarget{
    68  				ID:         tt.fields.ID,
    69  				WithdrawID: tt.fields.WithdrawID,
    70  				Type:       tt.fields.Type,
    71  				Data:       tt.fields.Data,
    72  			}
    73  			got, err := p.SepaData()
    74  			if (err != nil) != tt.wantErr {
    75  				t.Errorf("WithdrawTarget.SepaData() error = %v, wantErr %v", err, tt.wantErr)
    76  				return
    77  			}
    78  			if !reflect.DeepEqual(got, tt.want) {
    79  				t.Errorf("WithdrawTarget.SepaData() = %v, want %v", got, tt.want)
    80  			}
    81  		})
    82  	}
    83  }
    84  
    85  func TestFromSwiftData(t *testing.T) {
    86  	t.Parallel()
    87  
    88  	ref := WithdrawTargetSwiftData{
    89  		WithdrawTargetFiatData: WithdrawTargetFiatData{Network: "swift"},
    90  
    91  		CountryCode: "CHE",
    92  		Bank:        "Condensat",
    93  		Account:     "1337",
    94  	}
    95  	type args struct {
    96  		withdrawID WithdrawID
    97  		data       WithdrawTargetSwiftData
    98  	}
    99  	tests := []struct {
   100  		name string
   101  		args args
   102  		want WithdrawTargetSwiftData
   103  	}{
   104  		{"default", args{}, WithdrawTargetSwiftData{}},
   105  		{"valid", args{42, ref}, ref},
   106  	}
   107  	for _, tt := range tests {
   108  		tt := tt // capture range variable
   109  		t.Run(tt.name, func(t *testing.T) {
   110  			got := FromSwiftData(tt.args.withdrawID, tt.args.data)
   111  
   112  			data, _ := got.SwiftData()
   113  			if !reflect.DeepEqual(data, tt.want) {
   114  				t.Errorf("FromSwiftData() = %v, want %v", data, tt.want)
   115  			}
   116  		})
   117  	}
   118  }
   119  
   120  func TestWithdrawTarget_SwiftData(t *testing.T) {
   121  	t.Parallel()
   122  
   123  	type fields struct {
   124  		ID         WithdrawTargetID
   125  		WithdrawID WithdrawID
   126  		Type       WithdrawTargetType
   127  		Data       WithdrawTargetData
   128  	}
   129  	tests := []struct {
   130  		name    string
   131  		fields  fields
   132  		want    WithdrawTargetSwiftData
   133  		wantErr bool
   134  	}{
   135  		{"default", fields{}, WithdrawTargetSwiftData{}, true},
   136  		{"type", fields{Type: WithdrawTargetSwift}, WithdrawTargetSwiftData{}, false},
   137  	}
   138  	for _, tt := range tests {
   139  		tt := tt // capture range variable
   140  		t.Run(tt.name, func(t *testing.T) {
   141  			p := &WithdrawTarget{
   142  				ID:         tt.fields.ID,
   143  				WithdrawID: tt.fields.WithdrawID,
   144  				Type:       tt.fields.Type,
   145  				Data:       tt.fields.Data,
   146  			}
   147  			got, err := p.SwiftData()
   148  			if (err != nil) != tt.wantErr {
   149  				t.Errorf("WithdrawTarget.SwiftData() error = %v, wantErr %v", err, tt.wantErr)
   150  				return
   151  			}
   152  			if !reflect.DeepEqual(got, tt.want) {
   153  				t.Errorf("WithdrawTarget.SwiftData() = %v, want %v", got, tt.want)
   154  			}
   155  		})
   156  	}
   157  }
   158  
   159  func TestFromCardData(t *testing.T) {
   160  	t.Parallel()
   161  
   162  	ref := WithdrawTargetCardData{
   163  		WithdrawTargetFiatData: WithdrawTargetFiatData{Network: "card"},
   164  
   165  		PAN: "4222222222222",
   166  	}
   167  	type args struct {
   168  		withdrawID WithdrawID
   169  		data       WithdrawTargetCardData
   170  	}
   171  	tests := []struct {
   172  		name string
   173  		args args
   174  		want WithdrawTargetCardData
   175  	}{
   176  		{"default", args{}, WithdrawTargetCardData{}},
   177  		{"valid", args{42, ref}, ref},
   178  	}
   179  	for _, tt := range tests {
   180  		tt := tt // capture range variable
   181  		t.Run(tt.name, func(t *testing.T) {
   182  			got := FromCardData(tt.args.withdrawID, tt.args.data)
   183  
   184  			data, _ := got.CardData()
   185  			if !reflect.DeepEqual(data, tt.want) {
   186  				t.Errorf("FromCardData() = %v, want %v", data, tt.want)
   187  			}
   188  		})
   189  	}
   190  }
   191  
   192  func TestWithdrawTarget_CardData(t *testing.T) {
   193  	t.Parallel()
   194  
   195  	type fields struct {
   196  		ID         WithdrawTargetID
   197  		WithdrawID WithdrawID
   198  		Type       WithdrawTargetType
   199  		Data       WithdrawTargetData
   200  	}
   201  	tests := []struct {
   202  		name    string
   203  		fields  fields
   204  		want    WithdrawTargetCardData
   205  		wantErr bool
   206  	}{
   207  		{"default", fields{}, WithdrawTargetCardData{}, true},
   208  		{"type", fields{Type: WithdrawTargetCard}, WithdrawTargetCardData{}, false},
   209  	}
   210  	for _, tt := range tests {
   211  		tt := tt // capture range variable
   212  		t.Run(tt.name, func(t *testing.T) {
   213  			p := &WithdrawTarget{
   214  				ID:         tt.fields.ID,
   215  				WithdrawID: tt.fields.WithdrawID,
   216  				Type:       tt.fields.Type,
   217  				Data:       tt.fields.Data,
   218  			}
   219  			got, err := p.CardData()
   220  			if (err != nil) != tt.wantErr {
   221  				t.Errorf("WithdrawTarget.CardData() error = %v, wantErr %v", err, tt.wantErr)
   222  				return
   223  			}
   224  			if !reflect.DeepEqual(got, tt.want) {
   225  				t.Errorf("WithdrawTarget.CardData() = %v, want %v", got, tt.want)
   226  			}
   227  		})
   228  	}
   229  }
   230  
   231  func TestFromOnChainData(t *testing.T) {
   232  	t.Parallel()
   233  
   234  	ref := WithdrawTargetOnChainData{
   235  		WithdrawTargetCryptoData: WithdrawTargetCryptoData{Chain: "bitcoin", PublicKey: "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa "},
   236  	}
   237  	type args struct {
   238  		withdrawID WithdrawID
   239  		data       WithdrawTargetOnChainData
   240  	}
   241  	tests := []struct {
   242  		name string
   243  		args args
   244  		want WithdrawTargetOnChainData
   245  	}{
   246  		{"default", args{}, WithdrawTargetOnChainData{}},
   247  		{"valid", args{42, ref}, ref},
   248  	}
   249  	for _, tt := range tests {
   250  		tt := tt // capture range variable
   251  		t.Run(tt.name, func(t *testing.T) {
   252  			got := FromOnChainData(tt.args.withdrawID, "bitcoin", tt.args.data)
   253  
   254  			data, _ := got.OnChainData()
   255  			if !reflect.DeepEqual(data, tt.want) {
   256  				t.Errorf("FromOnChainData() = %v, want %v", data, tt.want)
   257  			}
   258  		})
   259  	}
   260  }
   261  
   262  func TestWithdrawTarget_OnChainData(t *testing.T) {
   263  	t.Parallel()
   264  
   265  	type fields struct {
   266  		ID         WithdrawTargetID
   267  		WithdrawID WithdrawID
   268  		Type       WithdrawTargetType
   269  		Data       WithdrawTargetData
   270  	}
   271  	tests := []struct {
   272  		name    string
   273  		fields  fields
   274  		want    WithdrawTargetOnChainData
   275  		wantErr bool
   276  	}{
   277  		{"default", fields{}, WithdrawTargetOnChainData{}, true},
   278  		{"type", fields{Type: WithdrawTargetOnChain}, WithdrawTargetOnChainData{}, false},
   279  	}
   280  	for _, tt := range tests {
   281  		tt := tt // capture range variable
   282  		t.Run(tt.name, func(t *testing.T) {
   283  			p := &WithdrawTarget{
   284  				ID:         tt.fields.ID,
   285  				WithdrawID: tt.fields.WithdrawID,
   286  				Type:       tt.fields.Type,
   287  				Data:       tt.fields.Data,
   288  			}
   289  			got, err := p.OnChainData()
   290  			if (err != nil) != tt.wantErr {
   291  				t.Errorf("WithdrawTarget.OnChainData() error = %v, wantErr %v", err, tt.wantErr)
   292  				return
   293  			}
   294  			if !reflect.DeepEqual(got, tt.want) {
   295  				t.Errorf("WithdrawTarget.OnChainData() = %v, want %v", got, tt.want)
   296  			}
   297  		})
   298  	}
   299  }
   300  
   301  func TestFromLiquidData(t *testing.T) {
   302  	t.Parallel()
   303  
   304  	ref := WithdrawTargetLiquidData{
   305  		WithdrawTargetCryptoData: WithdrawTargetCryptoData{Chain: "liquid", PublicKey: "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa "},
   306  	}
   307  	type args struct {
   308  		withdrawID WithdrawID
   309  		data       WithdrawTargetLiquidData
   310  	}
   311  	tests := []struct {
   312  		name string
   313  		args args
   314  		want WithdrawTargetLiquidData
   315  	}{
   316  		{"default", args{}, WithdrawTargetLiquidData{}},
   317  		{"valid", args{42, ref}, ref},
   318  	}
   319  	for _, tt := range tests {
   320  		tt := tt // capture range variable
   321  		t.Run(tt.name, func(t *testing.T) {
   322  			got := FromLiquidData(tt.args.withdrawID, tt.args.data)
   323  
   324  			data, _ := got.LiquidData()
   325  			if !reflect.DeepEqual(data, tt.want) {
   326  				t.Errorf("FromLiquidData() = %v, want %v", data, tt.want)
   327  			}
   328  		})
   329  	}
   330  }
   331  
   332  func TestWithdrawTarget_LiquidData(t *testing.T) {
   333  	t.Parallel()
   334  
   335  	type fields struct {
   336  		ID         WithdrawTargetID
   337  		WithdrawID WithdrawID
   338  		Type       WithdrawTargetType
   339  		Data       WithdrawTargetData
   340  	}
   341  	tests := []struct {
   342  		name    string
   343  		fields  fields
   344  		want    WithdrawTargetLiquidData
   345  		wantErr bool
   346  	}{
   347  		{"default", fields{}, WithdrawTargetLiquidData{}, true},
   348  		{"type", fields{Type: WithdrawTargetLiquid}, WithdrawTargetLiquidData{}, false},
   349  	}
   350  	for _, tt := range tests {
   351  		tt := tt // capture range variable
   352  		t.Run(tt.name, func(t *testing.T) {
   353  			p := &WithdrawTarget{
   354  				ID:         tt.fields.ID,
   355  				WithdrawID: tt.fields.WithdrawID,
   356  				Type:       tt.fields.Type,
   357  				Data:       tt.fields.Data,
   358  			}
   359  			got, err := p.LiquidData()
   360  			if (err != nil) != tt.wantErr {
   361  				t.Errorf("WithdrawTarget.LiquidData() error = %v, wantErr %v", err, tt.wantErr)
   362  				return
   363  			}
   364  			if !reflect.DeepEqual(got, tt.want) {
   365  				t.Errorf("WithdrawTarget.LiquidData() = %v, want %v", got, tt.want)
   366  			}
   367  		})
   368  	}
   369  }
   370  
   371  func TestFromLightningData(t *testing.T) {
   372  	t.Parallel()
   373  
   374  	ref := WithdrawTargetLightningData{
   375  		WithdrawTargetCryptoData: WithdrawTargetCryptoData{Chain: "lightning", PublicKey: "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa "},
   376  	}
   377  	type args struct {
   378  		withdrawID WithdrawID
   379  		data       WithdrawTargetLightningData
   380  	}
   381  	tests := []struct {
   382  		name string
   383  		args args
   384  		want WithdrawTargetLightningData
   385  	}{
   386  		{"default", args{}, WithdrawTargetLightningData{}},
   387  		{"valid", args{42, ref}, ref},
   388  	}
   389  	for _, tt := range tests {
   390  		tt := tt // capture range variable
   391  		t.Run(tt.name, func(t *testing.T) {
   392  			got := FromLightningData(tt.args.withdrawID, tt.args.data)
   393  
   394  			data, _ := got.LightningData()
   395  			if !reflect.DeepEqual(data, tt.want) {
   396  				t.Errorf("FromLightningData() = %v, want %v", data, tt.want)
   397  			}
   398  		})
   399  	}
   400  }
   401  
   402  func TestWithdrawTarget_LightningData(t *testing.T) {
   403  	t.Parallel()
   404  
   405  	type fields struct {
   406  		ID         WithdrawTargetID
   407  		WithdrawID WithdrawID
   408  		Type       WithdrawTargetType
   409  		Data       WithdrawTargetData
   410  	}
   411  	tests := []struct {
   412  		name    string
   413  		fields  fields
   414  		want    WithdrawTargetLightningData
   415  		wantErr bool
   416  	}{
   417  		{"default", fields{}, WithdrawTargetLightningData{}, true},
   418  		{"type", fields{Type: WithdrawTargetLightning}, WithdrawTargetLightningData{}, false},
   419  	}
   420  	for _, tt := range tests {
   421  		tt := tt // capture range variable
   422  		t.Run(tt.name, func(t *testing.T) {
   423  			p := &WithdrawTarget{
   424  				ID:         tt.fields.ID,
   425  				WithdrawID: tt.fields.WithdrawID,
   426  				Type:       tt.fields.Type,
   427  				Data:       tt.fields.Data,
   428  			}
   429  			got, err := p.LightningData()
   430  			if (err != nil) != tt.wantErr {
   431  				t.Errorf("WithdrawTarget.LightningData() error = %v, wantErr %v", err, tt.wantErr)
   432  				return
   433  			}
   434  			if !reflect.DeepEqual(got, tt.want) {
   435  				t.Errorf("WithdrawTarget.LightningData() = %v, want %v", got, tt.want)
   436  			}
   437  		})
   438  	}
   439  }