github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/templates/test/relationship_to_one_setops.go.tpl (about)

     1  {{- if .Table.IsJoinTable -}}
     2  {{- else -}}
     3  	{{- range $fkey := .Table.FKeys -}}
     4  		{{- $ltable := $.Aliases.Table $fkey.Table -}}
     5  		{{- $ftable := $.Aliases.Table $fkey.ForeignTable -}}
     6  		{{- $rel := $ltable.Relationship $fkey.Name -}}
     7  		{{- $colField := $ltable.Column $fkey.Column -}}
     8  		{{- $fcolField := $ftable.Column $fkey.ForeignColumn -}}
     9  		{{- $usesPrimitives := usesPrimitives $.Tables $fkey.Table $fkey.Column $fkey.ForeignTable $fkey.ForeignColumn }}
    10  func test{{$ltable.UpSingular}}ToOneSetOp{{$ftable.UpSingular}}Using{{$rel.Foreign}}(t *testing.T) {
    11  	var err error
    12  
    13  	{{if not $.NoContext}}ctx := context.Background(){{end}}
    14  	tx := MustTx({{if $.NoContext}}boil.Begin(){{else}}boil.BeginTx(ctx, nil){{end}})
    15  	defer func() { _ = tx.Rollback() }()
    16  
    17  	var a {{$ltable.UpSingular}}
    18  	var b, c {{$ftable.UpSingular}}
    19  
    20  	seed := randomize.NewSeed()
    21  	if err = randomize.Struct(seed, &a, {{$ltable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ltable.DownSingular}}PrimaryKeyColumns, {{$ltable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
    22  		t.Fatal(err)
    23  	}
    24  	if err = randomize.Struct(seed, &b, {{$ftable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ftable.DownSingular}}PrimaryKeyColumns, {{$ftable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
    25  		t.Fatal(err)
    26  	}
    27  	if err = randomize.Struct(seed, &c, {{$ftable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ftable.DownSingular}}PrimaryKeyColumns, {{$ftable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
    28  		t.Fatal(err)
    29  	}
    30  
    31  	if err := a.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
    32  		t.Fatal(err)
    33  	}
    34  	if err = b.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
    35  		t.Fatal(err)
    36  	}
    37  
    38  	for i, x := range []*{{$ftable.UpSingular}}{&b, &c} {
    39  		err = a.Set{{$rel.Foreign}}({{if not $.NoContext}}ctx, {{end -}} tx, i != 0, x)
    40  		if err != nil {
    41  			t.Fatal(err)
    42  		}
    43  
    44  		if a.R.{{$rel.Foreign}} != x {
    45  			t.Error("relationship struct not set to correct value")
    46  		}
    47  
    48  		{{if $fkey.Unique -}}
    49  		if x.R.{{$rel.Local}} != &a {
    50  			t.Error("failed to append to foreign relationship struct")
    51  		}
    52  		{{else -}}
    53  		if x.R.{{$rel.Local}}[0] != &a {
    54  			t.Error("failed to append to foreign relationship struct")
    55  		}
    56  		{{end -}}
    57  
    58  		{{if $usesPrimitives -}}
    59  		if a.{{$colField}} != x.{{$fcolField}} {
    60  		{{else -}}
    61  		if !queries.Equal(a.{{$colField}}, x.{{$fcolField}}) {
    62  		{{end -}}
    63  			t.Error("foreign key was wrong value", a.{{$colField}})
    64  		}
    65  
    66  		{{if setInclude $fkey.Column $.Table.PKey.Columns -}}
    67  		if exists, err := {{$ltable.UpSingular}}Exists({{if not $.NoContext}}ctx, {{end -}} tx, a.{{$.Table.PKey.Columns | stringMap (aliasCols $ltable) | join ", a."}}); err != nil {
    68  			t.Fatal(err)
    69  		} else if !exists {
    70  			t.Error("want 'a' to exist")
    71  		}
    72  		{{else -}}
    73  		zero := reflect.Zero(reflect.TypeOf(a.{{$colField}}))
    74  		reflect.Indirect(reflect.ValueOf(&a.{{$colField}})).Set(zero)
    75  
    76  		if err = a.Reload({{if not $.NoContext}}ctx, {{end -}} tx); err != nil {
    77  			t.Fatal("failed to reload", err)
    78  		}
    79  
    80  		{{if $usesPrimitives -}}
    81  		if a.{{$colField}} != x.{{$fcolField}} {
    82  		{{else -}}
    83  		if !queries.Equal(a.{{$colField}}, x.{{$fcolField}}) {
    84  		{{end -}}
    85  			t.Error("foreign key was wrong value", a.{{$colField}}, x.{{$fcolField}})
    86  		}
    87  		{{- end}}
    88  	}
    89  }
    90  {{- if $fkey.Nullable}}
    91  
    92  func test{{$ltable.UpSingular}}ToOneRemoveOp{{$ftable.UpSingular}}Using{{$rel.Foreign}}(t *testing.T) {
    93  	var err error
    94  
    95  	{{if not $.NoContext}}ctx := context.Background(){{end}}
    96  	tx := MustTx({{if $.NoContext}}boil.Begin(){{else}}boil.BeginTx(ctx, nil){{end}})
    97  	defer func() { _ = tx.Rollback() }()
    98  
    99  	var a {{$ltable.UpSingular}}
   100  	var b {{$ftable.UpSingular}}
   101  
   102  	seed := randomize.NewSeed()
   103  	if err = randomize.Struct(seed, &a, {{$ltable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ltable.DownSingular}}PrimaryKeyColumns, {{$ltable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
   104  		t.Fatal(err)
   105  	}
   106  	if err = randomize.Struct(seed, &b, {{$ftable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ftable.DownSingular}}PrimaryKeyColumns, {{$ftable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
   107  		t.Fatal(err)
   108  	}
   109  
   110  	if err = a.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
   111  		t.Fatal(err)
   112  	}
   113  
   114  	if err = a.Set{{$rel.Foreign}}({{if not $.NoContext}}ctx, {{end -}} tx, true, &b); err != nil {
   115  		t.Fatal(err)
   116  	}
   117  
   118  	if err = a.Remove{{$rel.Foreign}}({{if not $.NoContext}}ctx, {{end -}} tx, &b); err != nil {
   119  		t.Error("failed to remove relationship")
   120  	}
   121  
   122  	count, err := a.{{$rel.Foreign}}().Count({{if not $.NoContext}}ctx, {{end -}} tx)
   123  	if err != nil {
   124  		t.Error(err)
   125  	}
   126  	if count != 0 {
   127  		t.Error("want no relationships remaining")
   128  	}
   129  
   130  	if a.R.{{$rel.Foreign}} != nil {
   131  		t.Error("R struct entry should be nil")
   132  	}
   133  
   134  	if !queries.IsValuerNil(a.{{$colField}}) {
   135  		t.Error("foreign key value should be nil")
   136  	}
   137  
   138  	{{if $fkey.Unique -}}
   139  	if b.R.{{$rel.Local}} != nil {
   140  		t.Error("failed to remove a from b's relationships")
   141  	}
   142  	{{else -}}
   143  	if len(b.R.{{$rel.Local}}) != 0 {
   144  		t.Error("failed to remove a from b's relationships")
   145  	}
   146  	{{- end}}
   147  }
   148  {{end -}}{{/* end if foreign key nullable */}}
   149  {{- end -}}{{/* range */}}
   150  {{- end -}}{{/* join table */}}